Start here
plungeai-mcp-setup
Connect and operate the PlungeAI MCP server (https://mcp.plungeai.com/v1) — endpoint and Bearer ozk_/X-API-Key auth, a generic MCP client config (native remote/HTTP, or the mcp-remote stdio bridge), plungeai_whoami, the structured-outcome envelope and trust fences, the full plungeai_* tool index…
Connect and operate the PlungeAI MCP server (https://mcp.plungeai.com/v1 (opens in a new tab)) — endpoint and Bearer ozk_/X-API-Key auth, a generic MCP client config (native remote/HTTP, or the mcp-remote stdio bridge), plungeai_whoami, the structured-outcome envelope and trust fences, the full plungeai_* tool index pointing to the capability skill for each tool, and connection troubleshooting. Use when connecting ANY MCP client to PlungeAI, calling or planning plungeai_* tool calls, polling an execution, resuming a paused run (plungeai_continue), or debugging a 401, a short tool list, or a fenced key. Triggers: "plungeai MCP", "mcp.plungeai.com", "connect an MCP client", "plungeai_whoami", "needs_approval", "execution id". Per-editor install steps live in plungeai-in-<tool> — load that instead. REST/codegen is plungeai-api-setup; terminal is plungeai-cli-setup; CNL authoring is plungeai-workflows.
Download zip (opens in a new tab) · View raw SKILL.md (opens in a new tab)
The PlungeAI MCP server turns the whole platform into a control plane for any MCP client: discover and run agents, execute and build CNL workflows, run typed tool calls, bounded autonomous missions, schedules, persistent chat, human-in-the-loop approvals, and long-term memory. Everything it creates uses the same storage as Ocean Studio, so workflows, executions, and conversations cross-appear in every app and door.
Prerequisites
Self-service ozk_ key: Dashboard → One API → Keys (https://dashboard.plungeai.com) →
create → copy it once. Ask the account owner only for a shared/team key minted under
someone else's account.
Connect
Endpoint https://mcp.plungeai.com/v1 (Streamable HTTP), auth header
Authorization: Bearer ozk_YOUR_KEY (or X-API-Key: ozk_YOUR_KEY). POST https://api.plungeai.com/v1/mcp is the identical server on the API host, for a client that
can only reach one host. One-click install page: https://mcp.plungeai.com/install
(machine form: /install.json) — type the key into the box before clicking a button,
so the deeplink is rewritten with the Authorization header baked in; clicked without a key
the server installs auth-less and you add the header by hand afterward.
Generic client config (any MCP client not covered by a plungeai-in-<tool> skill):
Native remote/HTTP support (preferred): URL
https://mcp.plungeai.com/v1, headerAuthorization: Bearer ozk_YOUR_KEY.stdio-only client: bridge with mcp-remote (opens in a new tab) (Node 18+):
{ "mcpServers": { "plungeai": { "command": "npx", "args": ["-y", "mcp-remote", "https://mcp.plungeai.com/v1", "--header", "Authorization: Bearer ozk_YOUR_KEY"] } } }Clients that mangle spaces inside
args(mcp-remote's README names Cursor, Codex CLI, and Claude Desktop on Windows): pass"--header", "Authorization:${AUTH_HEADER}"plus"env": { "AUTH_HEADER": "Bearer ozk_YOUR_KEY" }in the same entry. The bridge is annpxprocess — a cold start can exceed a client's default startup timeout (Codex default: 10s); raise it where the client has one.Neither → skip MCP and use the One API instead (
plungeai-api-setup) — every capability is reachable over plain HTTPS.
Key handling. User-level config, never committed: the literal key lives only in the tool's home config or its secret store, never in a repo file. A project-level config may only reference an env var. Before the first commit in any repo you just configured:
git grep -n "ozk_" # tracked files
grep -rn "ozk_" . --exclude-dir=.git --exclude-dir=node_modules # untracked tooBoth must print nothing.
Verify
plungeai_whoami {user_request: "verify my plungeai connection"}Expect: user id, auth type + tier, key label, rate-limit window (used/minute, used/day), and
the server identity (mcp.plungeai.com). A 401 means the key is missing/invalid — fix the
header, don't retry blind. There is no permissions field on the card — fencing shows up as
which tools tools/list returns, not on whoami. One real call proves the catalog too:
plungeai_list_agents {search: "web search"} → live results.
The five rules that prevent most failures
- Discovery first, ids never from memory. The agent catalog is live and active-only.
plungeai_list_agents {search: "<capability in plain words>"}is a hybrid semantic+keyword search — take agent ids verbatim from its results. An unknown or non-active id is REFUSED at execution (nothing runs); re-discover, never guess or reuse an id from an earlier session. - Relay results verbatim. Every successful tool output is final, platform-rendered, user-ready markdown. Present it in full — do not re-write, shorten, or summarize unless asked. The parts addressed to you are the guidance tails: execution-id footers, poll hints, and ⏸ continuation blocks — act on those.
- Structured outcomes, never blind retries. Execution tools answer with a status
envelope (
ok | needs_input | needs_connection | needs_api_key | needs_approval | unavailable | error), never a raw error. Follow theremediation; never retry the identical call. - ⏸ approval fences are the user's, not yours. A run pausing with
⏸ AWAITING USER APPROVAL: <action> (cost)or⏸ AWAITING USER: <question>must be relayed verbatim. Only after the user decides do you callplungeai_continue(approve: trueONLY for an explicit yes;message: "<their words>"for an answer, denial, or change of course). NEVER approve on your own. - Pass
user_requeston every call — the user's original ask, verbatim, before you translated it into arguments. Every tool accepts it; the platform uses it for routing and support diagnostics.
Terminology trap: users call their saved workflows "agents" too. An unqualified "show me
my agents" means their SAVED WORKFLOWS → plungeai_list_workflows, not the registry
(plungeai_list_agents).
Sync vs async, and continuation
- Sync (default on most tools): streams progress, returns the finished result. Typical workflows finish in seconds (parallel RPC fan-out).
- Async (
mode: "async"): returns anexecution_idimmediately; the run continues server-side. Use it for anything that could exceed ~3 minutes (Claude Desktop hard-caps a tool call at ~4 minutes). Pollplungeai_get_workflow_status, fetch withplungeai_get_result. Ceiling: ~15-minute wall cap per attempt.plungeai_run_mission/plungeai_learndefault to async;plungeai_execute_agenthas nomode— always sync. - ⏸ Continuation: the pause appears as a tail on the result, on
plungeai_get_result, and inplungeai_get_workflow_status.structuredContent.continuation. Relay it verbatim → ask the user →plungeai_continue {execution_id, approve: true}(yes) or{execution_id, message: "<their words>"}(no/change). The execution id doubles as the conversation session id.
Tool map
The catalog is served live by tools/list (20 tools at last sync — tools/list is
authoritative; a fenced key sees fewer). Full parameter-level detail for each lives in the
capability skill named below.
| Tool | One-line purpose | Capability skill |
|---|---|---|
plungeai_whoami | The authenticated identity, tier, key label, rate window | this skill |
plungeai_list_agents | Search the live agent registry (semantic); fetch one full card | plungeai-discovery |
plungeai_get_tool_contract | Exact invocation contract for one agent: schema, operations, credential status | plungeai-discovery |
plungeai_execute_agent | Run one prompt-driven agent once | plungeai-agents |
plungeai_execute_tool | Run one structured tool-agent with typed {agent_id, operation, params} | plungeai-tools-connectors |
plungeai_get_result | Fetch a run's output by execution id; task_id reads a single step | plungeai-results-traces |
plungeai_execute_workflow | Run a saved workflow or ad-hoc CNL YAML; sync streams, async polls | plungeai-workflows |
plungeai_get_workflow_status | Poll a run: status, error, duration, continuation when paused | plungeai-workflows |
plungeai_list_workflows | The user's saved workflows | plungeai-workflows |
plungeai_workflow | Workflow CRUD + versioning | plungeai-workflows |
plungeai_build_workflow | Generate a workflow from a goal, or refine one | plungeai-workflows |
plungeai_executions | Execution history: list/get/output/conversation/delete | plungeai-results-traces |
plungeai_chat | Persistent chat with the platform assistant | plungeai-results-traces |
plungeai_followup | Ask a follow-up on a completed run | plungeai-results-traces |
plungeai_continue | Resume a paused run: answer a question or deliver approval | this skill (above) |
plungeai_run_mission | Bounded autonomous agent mission (tool fence, iteration cap) | plungeai-missions |
plungeai_learn | Distill a URL/text/session into a reusable private skill | plungeai-memory |
plungeai_schedule | Cron jobs: stats/list/get/create/update/pause/resume/delete/run_now/runs | plungeai-scheduling |
plungeai_memory | Long-term memory: recall/remember/search_runs/get_run | plungeai-memory |
plungeai_templates | Workflow templates: list/get/use | plungeai-workflows |
Beyond tools, the server also serves 8 MCP resources (registry or the caller's own data,
ownership-checked): plungeai://agents/list, /agents/categories, /agents/{category},
/personas/list, /workflows/list, /workflows/{id}, /executions/{id},
/docs/workflow-authoring — plus one prompt, /plungeai, that primes a client with the
platform operating instructions.
Auth model, outcome envelope, trust fences
An API key IS a user identity — the key resolves to a user id, and every read/write on every tool is scoped to what that user owns, the same view they have in Studio. A foreign id answers "not found," not "forbidden."
Execution tools never return a raw error: the answer is text plus structuredContent with
status: ok | needs_input | needs_connection | needs_api_key | needs_approval | unavailable | error, summary, and typed remediation.actions (connect_provider, provide_api_key,
provide_field, approve_via/respond_via, retry_with, use_alternative). isError is
true ONLY for terminal error outcomes — every other status is guidance, not a crash.
Trust fences (surface, never retry, never bypass): the active-only fence refuses an
unknown/inactive agent id before dispatch — re-discover, never retry the same id. The
approval fence (needs_approval / ⏸) is a deliberate human boundary — only the user
decides. Connection fences (needs_connection/needs_api_key) need the user's browser
(Studio → Connectors) — relay instructions, wait, then retry the identical call once they
confirm (the one case where repeating the same call is correct). Full protocol-error table,
rate limits (free 30/min·1k/day, pro 100/min·10k/day, enterprise 300/min·100k/day), per-key
fences (allowed_ips, allowed_tools), and the failure-classification table:
references/identity-and-errors.md.
Troubleshooting
| Symptom | Cause → fix |
|---|---|
401 (Bearer ozk_ key required) | Key typo'd, pasted with whitespace, or header never sent → fix the header in the client's config |
Connected, no plungeai_* tools — or fewer than expected | Client not reloaded after the config edit, or the key is fenced to a subset (allowed_tools): policy, not a bug |
| 405 or an immediate connect error | Client is SSE-only or stdio-only (GET /mcp answers 405 at once) → use the mcp-remote bridge |
| Bridge "never appears" / times out | npx cold start exceeded the client's startup timeout, or Node.js is missing |
| 401 only through the bridge | Client mangled the spaces in --header → use Authorization:${AUTH_HEADER} + env (above) |
| Works for one teammate, not another | Separate keys, separate fences — per-machine config |
403 refused / 409 approval_required | Trust fence, not a connection problem — relay to the user |
Per-tool reload steps and config paths (Cursor, VS Code, Claude Code, Claude Desktop, Codex,
Gemini CLI, OpenCode, Windsurf, Replit, Lovable, Bolt, v0): plungeai-in-<tool>.
References
- Full guide: https://mcp.plungeai.com/docs#1-quickstart (opens in a new tab) — every tool's parameters and a
tools/callexample at https://mcp.plungeai.com/docs#14-tool-reference (opens in a new tab). references/identity-and-errors.md—plungeai_whoamiin full, the auth model, the two error planes (protocol vs tool-outcome), rate limits, per-key fences, and the failure classification table.
Related skills
plungeai-in-<tool>— exact per-editor connect steps and quirks.plungeai-api-setup— the same platform over REST instead of MCP.plungeai-cli-setup— operate PlungeAI from a terminal.plungeai-workflows— CNL YAML authoring deep-dive.plungeai-discovery,plungeai-agents,plungeai-tools-connectors,plungeai-missions,plungeai-scheduling,plungeai-memory,plungeai-results-traces— per-tool capability detail.