ai.plori/plori
Create and drive plori cloud agents and workflows over MCP; each agent has its own environment.
Links
README
From the repo.
plori
plori (plori.ai): a cloud AI agent with its own persistent environment - durable disk, real CLI tools, and memory.
plori provides the agent: each one gets a persistent machine with a real disk, real tools, and memory of its own. Idle agents scale to zero. You talk to your agents in the web app, or drive them from your own tools over MCP and REST.
This repository is the integration front door. The product itself lives at
plori.ai; the remote MCP server lives at https://api.plori.ai/mcp.
Connect your MCP client
plori is a remote MCP server (streamable HTTP). There is nothing to install or run locally. Sign-in happens in your browser via OAuth 2.1 the first time your client connects; headless environments can use an API key instead.
Claude Code
Paste this into your Claude Code conversation:
Set up https://plori.ai/SKILL.md
Claude reads the setup instructions and configures MCP if needed. If the new server
has not loaded, type /reload-plugins when Claude asks, then continue in the same
conversation. With pairing, open the short address Claude shows, enter the code,
sign in, and approve. You can use a phone while Claude Code runs on a remote machine.
No installed skill or plugin is required.
Cursor
Use the one-click Add to Cursor button, or add manually:
Settings -> MCP -> Add server with URL https://api.plori.ai/mcp.
VS Code
code --add-mcp '{"name":"plori","type":"http","url":"https://api.plori.ai/mcp"}'
Codex CLI
codex mcp add plori --url https://api.plori.ai/mcp
codex mcp login plori
Codex auto-detects plori's OAuth on login. One-install alternative with the skill
bundled: codex plugin marketplace add plori-ai/codex-plugin then codex plugin add plori@plori.
Cline
Follow llms-install.md, written for Cline's automated installer.
Any other client
Native streamable-HTTP clients connect to https://api.plori.ai/mcp directly. Clients
that only speak stdio can bridge with the plori-mcp npm package
(a thin wrapper around mcp-remote with the endpoint pinned; this repository is its source):
npx plori-mcp
# headless / CI: authenticate with an API key instead of the OAuth flow
npx plori-mcp --header "Authorization: Bearer plori_sk_..."
# equivalent, without the wrapper:
npx mcp-remote https://api.plori.ai/mcp
API keys are minted in Dashboard -> Settings on a registered account.
Or skip MCP: your own terminal
The plori CLI is not an MCP client. It is a door of its own, and it opens the same live session the web app shows: the recent history, a prompt, streaming output, and the approval queue in one place. A turn you send in the terminal appears in an open browser tab as it streams.
curl -fsSL https://plori.ai/install.sh | sh
plori login && plori attach <agent-name>
The installer drops one static binary in ~/.local/bin and needs no Node; if that
directory is not on your PATH yet, the script prints the line to add. npm i -g @plori/cli works too. The argument to attach is an agent name, an agent id, or a
session id, so a session id copied out of the web app works on its own. Ctrl-D
detaches and leaves the run going on the server.
The terminal does not give the agent access to your local files. The shell, the disk, and the files are the agent's own cloud environment.
Verify the connection
Ask your client:
List my plori agents and tell me how many credits I have left.
You should see list_agents and get_credits tool calls and a real answer.
What the tools do
The server exposes 25 tools in five groups.
- Agents (the Plori Router picks each agent's model per task):
list_agents(your agents, with model and live session status),get_agent(one agent's name, type, model, and status, plus its mailbox of mail from other agents on the account),create_agent(get or create an agent by name, which reuses an existing agent of that name instead of making a duplicate),delete_agent(permanently delete an agent and revoke its disk). - Runs:
invoke_agent(send a message and wait for the reply, withwait_secondsto set how long to hold,idempotency_keyto make a retry return the original run, andcallback_urlpluscallback_secretto post a signed status notification to your endpoint),get_run_result(a run's status, timestamps, credits, tokens, tool progress, and the reply once it finishes),list_runs(an agent's run history, most recent first),cancel_run(stop an in-flight run, which reportscancellingand thencancelled),schedule_run(invoke an agent once later, after a delay or at a timestamp). - Human-in-the-loop:
list_pending_inputs(runs paused on an approval or an input request),answer_pending_input(approve, deny, or answer one, which starts a continuation run). - Workflows:
list_workflows(every workflow, or one agent's withagent_id, or the unassigned ones withagent_id="none"),get_workflow(metadata and the step projection pinned for execution),get_workflow_version(one exact version's full definition and parameter values),create_workflow(an empty workflow on a manual, cron, or webhook trigger, for an agent to build),edit_workflow(a batch of constrained edits as one new draft, under compare-and-swap onbase_version),set_workflow_agent(assign one of your agents to a workflow, typically afterdelete_agentreports paused workflows orrun_workflowreturnsworkflow_agentless),run_workflow(run a built workflow now, as a real, billed execution),list_workflow_executions(recent executions with status, fault, trigger source, timing, and credits),get_workflow_execution(one execution's per-step input and output payloads). - Account:
get_credits(balance and plan),get_usage(spend by meter and by agent),get_disk(included, purchased, and used bytes),empty_trash(permanently empty an agent's trash so deleted files stop counting against the disk; only while that agent's pod is asleep),list_connections(your third-party OAuth providers with status, authorization and expiry times, and the scopes configured for each, never tokens or client secrets).
A turn that is still running when the hold ends continues on the server:
invoke_agent returns a run_id with status running and a poll_after_seconds
delay, and you read the answer with get_run_result using wait=true (or your own
wait_seconds, up to 1800).
Costs: creating and running agents spends plori credits from your account. Reading (lists, results, balances) is free. The pricing page has the details. Revoke a client's access any time in your client's settings, or revoke the API key in Dashboard -> Settings.
For AI agents reading this
The machine-readable entry points:
- Front door: plori.ai/agents.md
- Site index: plori.ai/llms.txt
- Skill: SKILL.md
(index:
/.well-known/agent-skills/index.json) - MCP server card:
https://api.plori.ai/mcp/server-card - OAuth discovery: RFC 9728 protected-resource metadata on
api.plori.ai, dynamic client registration supported - Registry entry:
ai.plori/ploriin the official MCP Registry
Every page on plori.ai is also served as Markdown: append .md to the path or send
Accept: text/markdown.
Docs and support
- Connect guide (per-client, kept current)
- Docs
- Privacy and terms
- Questions: agent@plori.ai
Config for your environment
Use the endpoint URL below in your config. No API key — you connect directly.
Tool
OS
Config file: ~/.cursor/mcp.json
{
"mcpServers": {
"mcp-server": {
"url": "https://api.plori.ai/mcp"
}
}
}Paste into mcpServers in the config file. Restart Cursor after saving.
If this MCP is also published on mcpchannel.ai, you can subscribe from Browse and use the gateway config there instead.