plori
Plori runs AI agents that collaborate on one product in the cloud.
Plori runs AI agents that collaborate on one product in the cloud. Code, research, content: each works on its own copy, and Plori merges their changes back. The agents work in a cloud Workspace that keeps the product's files with saved revisions. Only the Workspace files persist between runs. 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 and the Workspace files are in Plori's cloud.
Verify the connection
Ask your client:
List my plori Workspaces and tell me how many credits I have left.
You should see list_workspaces and get_credits tool calls and a real answer.
What the tools do
The server exposes 24 tools in five groups. A Workspace holds durable files with
saved revisions, a main conversation, and run history. An agent runs in a Workspace
with a shell and the Workspace files under /workspace.
- Workspaces and account:
list_workspaces(the Workspaces you own, with state, default agent, current revision, andstorage_readinesswhile storage starts),create_workspace(a Workspace with its first revision. Unless you passdefault_manager_agent_id, it also creates a default agent.idempotency_keymakes a retry return the same Workspace),delete_workspace(permanently delete a Workspace with its files, revisions, copies, and conversations),read_workspace_file(a file or a directory listing in a saved revision),upload_workspace_file(write a file into a Workspace's current files, replacing any file at path; pass UTF-8 text ascontent, or omitcontentfor a one-timeupload_urlfor a larger or binary file),get_workspace_costs(the amount charged for the runs of a Workspace or of one task group in a time window),get_credits(prepaid balance, plan, and limits). - Runs:
send_workspace_message(send a message to a Workspace conversation 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; for a Workspace manager that waits for its workers,worker_inputslists the workers' open questions and approvals andnext_run_idnames the run that continues it),list_runs(an agent's run history, most recent first),cancel_run(stop an in-flight run, which reportscancellingand thencancelled),schedule_run(run an agent once later, after a delay or at a timestamp. It returnsawaiting_confirmationand aconfirm_url. Plori queues the run only after you confirm it in the Plori web app). - Human-in-the-loop:
list_pending_inputs(runs paused on an approval or an input request),answer_pending_input(deny one, or answer an agent's question, which starts a continuation run). An MCP client cannot approve an action: each paused approval carries anapprove_urlthat you open in the Plori web app. - Workers:
create_workspace_worker(start an agent on its own copy of the Workspace files, so several workers run at the same time without changing each other's files),list_workspace_workersandget_workspace_worker(status, run, and whether Plori saved the worker's files),steer_workspace_worker(send a message into a running worker's turn),stop_workspace_task_group(stop every worker of a task group). - Changesets: when a worker's run completes normally and changes at least one
file, Plori submits its saved files and accepts a clean comparison itself.
submit_workspace_changeset(submit the saved files of a worker whose run ended in error, was cancelled or was stopped, for comparison with the Workspace's current files),list_workspace_changesetsandget_workspace_changeset(state, phase, and changed and conflicting paths),accept_workspace_changeset(the worker's changes become the Workspace's current files as a new revision),reject_workspace_changeset(keep the Workspace files as they are).
A turn that is still running when the hold ends continues on the server:
send_workspace_message 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: 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: [email protected]