{"id":"d9212161-e1d5-4edb-a63d-676bfc7cc908","slug":"autopilot-mcp","kind":"mcp","name":"autopilot-mcp","summary":"An AI agent's own autonomous-execution control plane over MCP — set autopilot scopes, a daily SOL spend cap, and auto-execute, then run the propose → execute → undo loop. The agent spends SOL and neve","owner":"nirholas","repoUrl":"https://github.com/nirholas/autopilot-mcp","license":"Apache-2.0","licenseTier":"permissive","trust":"community","stars":9,"match":null,"fewStars":false,"format":"mcp","createdAt":"2026-06-30T23:20:08.000Z","addedAt":"2026-10-21T04:44:01.322Z","logoUrl":"https://avatars.githubusercontent.com/u/22895867?u=56ece328987410ef7987e2e9b2c9247f735bf751&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["cloud-infra","memory-knowledge"],"tags":["agent-guardrails","ai-agent","ai-agents","autonomous-agents","autopilot","solana","spend-limits","three-ws"],"runtime":"node","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-25T17:19:08.965Z","sample":false,"url":"https://conduits.dev/tools/autopilot-mcp","language":"JavaScript","transports":["stdio"],"install":{"npm":"@three-ws/autopilot-mcp"},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"<p align=\"center\">\n  <a href=\"https://three.ws\"><img src=\"https://three.ws/three-ws-mcp-icon.svg\" alt=\"three.ws\" width=\"88\" height=\"88\"></a>\n</p>\n\n<h1 align=\"center\">@three-ws/autopilot-mcp</h1>\n\n<p align=\"center\"><strong>An AI agent's own autonomous-execution control plane — set autopilot scopes, a daily SOL spend cap, and auto-execute, then run the propose → execute → undo loop, all from any MCP client.</strong></p>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/@three-ws/autopilot-mcp\"><img alt=\"npm\" src=\"https://img.shields.io/npm/v/@three-ws/autopilot-mcp?logo=npm&color=cb3837\"></a>\n  <img alt=\"license\" src=\"https://img.shields.io/npm/l/@three-ws/autopilot-mcp?color=3b82f6\">\n  <img alt=\"node\" src=\"https://img.shields.io/node/v/@three-ws/autopilot-mcp?color=339933&logo=node.js\">\n  <a href=\"https://registry.modelcontextprotocol.io/?q=io.github.nirholas\"><img alt=\"MCP Registry\" src=\"https://img.shields.io/badge/MCP%20Registry-io.github.nirholas-0ea5e9\"></a>\n  <a href=\"https://three.ws\"><img alt=\"three.ws\" src=\"https://img.shields.io/badge/built%20by-three.ws-000\"></a>\n</p>\n\n---\n\n> A [Model Context Protocol](https://modelcontextprotocol.io) server that gives an AI agent **its own execution control plane** over stdio. The agent configures the boundaries it is allowed to act within — capability scopes, a daily SOL spend ceiling, auto-execute and confirmation policy — then drives the full **propose → review → execute → undo** loop. No human in the loop, but every boundary is **enforced server-side**: an out-of-scope or over-budget action is denied, never executed.\n\nThis is the keystone of the autonomous-agent story. Autopilot config and execution used to live only behind the three.ws UI/API; this server exposes them so an agent can manage its own guardrails and act within them.\n\n> ⚠️ **This server is authenticated and write-heavy.** `execute_proposal` can move **real SOL** on Solana mainnet and is **irreversible**. It sends native SOL only — the agent never sells or sends **$THREE** (it only buys, holds, or burns it). Scopes, the daily SOL spend cap, and confirmation are all enforced on the three.ws backend — this server cannot bypass them.\n\n## Install\n\n```bash\nnpm install @three-ws/autopilot-mcp\n```\n\nOr run with `npx` (no install):\n\n```bash\nnpx @three-ws/autopilot-mcp\n```\n\n## Quick start\n\n**Claude Code**, one line (supply your three.ws credential):\n\n```bash\nTHREE_WS_API_KEY=sk_live_… claude mcp add autopilot -- npx -y @three-ws/autopilot-mcp\n```\n\n**Claude Desktop / Cursor** (`claude_desktop_config.json` or `mcp.json`):\n\n```json\n{\n\t\"mcpServers\": {\n\t\t\"autopilot\": {\n\t\t\t\"command\": \"npx\",\n\t\t\t\"args\": [\"-y\", \"@three-ws/autopilot-mcp\"],\n\t\t\t\"env\": {\n\t\t\t\t\"THREE_WS_API_KEY\": \"sk_live_…\"\n\t\t\t}\n\t\t}\n\t}\n}\n```\n\nInspect the surface with the MCP Inspector:\n\n```bash\nTHREE_WS_API_KEY=sk_live_… npx -y @modelcontextprotocol/inspector npx @three-ws/autopilot-mcp\n```\n\n## Authentication\n\nEvery autopilot endpoint is **owner-only**, so this server is authenticated. Set **`THREE_WS_API_KEY`** to the agent owner's three.ws credential — either a three.ws **API key** (`sk_live_…` / `sk_test_…`) or an **OAuth access token**. It is sent as `Authorization: Bearer …` on every request and identifies the owning user; the agent can only manage agents that user owns. The credential can authorize **real SOL transfers** via `execute_proposal` — store it like a password. `THREE_WS_TOKEN` and `THREE_WS_BEARER` are accepted as aliases.\n\n## Tools\n\n| Tool                      | Type             | What it does                                                                                                        |\n| ------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------ |\n| `get_autopilot_config`    | read-only        | Read the agent's guardrails: enabled, scopes, auto-execute, daily SOL cap, confirmation policy — plus trust.     |\n| `set_autopilot_config`    | write · idempotent | Update those guardrails with a partial patch (grant scopes, set the daily SOL ceiling, arm/disarm). No action taken. |\n| `generate_proposals`      | write            | Run the agent's mind: turn high-salience memories + reflections into real, provenance-cited candidate actions.       |\n| `list_proposals`          | read-only        | The proposal queue — ids, kinds, rationales, params, status, cited sources. Filter by status.                       |\n| `dryrun_proposal`         | read-only        | Preview what executing a proposal *would* do (scope / cap / balance checks), without taking any action.             |\n| `adjust_proposal`         | write · idempotent | Edit a pending proposal's params before executing (tune a threshold, amount, cadence). Validated server-side.       |\n| `execute_proposal`        | **write · destructive** | Take the real action. ⚠️ A `wallet_transfer` moves real SOL on mainnet, irreversible — needs `confirm:true`. Never sends $THREE. |\n| `dismiss_proposal`        | write            | Drop a pending proposal; records a feedback memory so the agent stops proposing it.                                 |\n| `undo_action`             | write            | Reverse a reversible execution (delete the alert rule / briefing); records a feedback memory. SOL transfers can't be undone. |\n| `list_autopilot_activity` | read-only        | The append-only signed receipts log — every autonomous action, its outcome, provenance, and signature.             |\n| `compute_trust`           | read-only        | The agent's earned trust level (sandbox → trusted → autonomous), computed from real action history.                |\n\nThe five read tools reflect live state (proposals, receipts, trust move between calls), so none are idempotent. `set_autopilot_config` and `adjust_proposal` are idempotent writes (re-applying the same values is a no-op). `generate_proposals`, `execute_proposal`, `dismiss_proposal`, and `undo_action` each take a real action.\n\n### Input parameters\n\nEvery tool takes **`agentId`** (the UUID of an agent you own) except `list_autopilot_activity`, where it is optional (omit to aggregate across all your agents).\n\n- **`get_autopilot_config`** / **`compute_trust`** / **`generate_proposals`** — `agentId`.\n- **`set_autopilot_config`** — `agentId`, plus any of: `enabled` (bool), `scopes` (`{ create_alert?, briefing?, wallet_transfer? }`), `autoExecute` (`{ create_alert?, briefing? }`), `dailySpendSol` (number, SOL; 0 disables spending), `requireConfirm` (bool).\n- **`list_proposals`** — `agentId`, `status` (`pending` | `executed` | `dismissed` | `undone` | `failed`), `limit` (1–200).\n- **`dryrun_proposal`** / **`dismiss_proposal`** / **`undo_action`** — `agentId`, `proposalId`.\n- **`adjust_proposal`** — `agentId`, `proposalId`, `params` (full replacement params for the proposal's kind).\n- **`execute_proposal`** — `agentId`, `proposalId`, `confirm` (bool — required for an irreversible SOL transfer).\n- **`list_autopilot_activity`** — `agentId` (optional), `limit` (1–200), `cursor` (from a prior `next_cursor`).\n\n## The loop\n\n```jsonc\n// 1. Grant the agent a reversible capability\n// set_autopilot_config\n> { \"agentId\": \"…\", \"enabled\": true, \"scopes\": { \"create_alert\": true } }\n{ \"ok\": true, \"config\": { \"enabled\": true, \"scopes\": { \"create_alert\": true, \"briefing\": false, \"wallet_transfer\": false }, \"daily_spend_sol\": 0, \"require_confirm\": true } }\n\n// 2. Let the agent propose actions from its memory\n// generate_proposals\n> { \"agentId\": \"…\" }\n{ \"ok\": true, \"createdCount\": 1, \"source\": \"memory\",\n  \"created\": [ { \"id\": \"p_…\", \"kind\": \"create_alert\", \"title\": \"Alert when $THREE crosses $0.01\",\n                 \"rationale\": \"You noted interest in $THREE around $0.01 — I'll watch it.\", \"status\": \"pending\" } ] }\n\n// 3. Preview before acting\n// dryrun_proposal\n> { \"agentId\": \"…\", \"proposalId\": \"p_…\" }\n{ \"ok\": true, \"preview\": { \"kind\": \"create_alert\", \"willDo\": \"Create a real alert rule… Reversible.\",\n                           \"checks\": [ { \"label\": \"Scope \\\"create_alert\\\" granted\", \"ok\": true } ], \"blocked\": false } }\n\n// 4. Execute for real (reversible kind — no confirm needed)\n// execute_proposal\n> { \"agentId\": \"…\", \"proposalId\": \"p_…\" }\n{ \"ok\": true, \"receipt\": \"Created a price above alert.\", \"actionId\": \"1843\", \"proposal\": { \"status\": \"executed\" } }\n\n// 5. Changed your mind? Undo it.\n// undo_action\n> { \"agentId\": \"…\", \"proposalId\": \"p_…\" }\n{ \"ok\": true, \"proposal\": { \"status\": \"undone\" } }\n```\n\nSpending real SOL requires the owner to have granted `scopes.wallet_transfer`, set a positive `dailySpendSol`, and (unless pre-authorized) `execute_proposal` must be re-issued with `confirm:true`. All three are checked server-side. The agent spends SOL only — it never sells or sends $THREE.\n\n## Requirements\n\n- **Node.js >= 20.**\n- A three.ws credential (`THREE_WS_API_KEY`) for the agent owner.\n- Network access to `https://three.ws` (or your own `THREE_WS_BASE`).\n\n### Environment variables\n\n| Variable              | Required | Default            | Notes                                                            |\n| --------------------- | -------- | ------------------ | ---------------------------------------------------------------- |\n| `THREE_WS_API_KEY`    | **yes**  | —                  | three.ws API key (`sk_live_…`) or OAuth access token. Secret. Can move real SOL. |\n| `THREE_WS_BASE`       | no       | `https://three.ws` | Override only when self-hosting or targeting a preview.          |\n| `THREE_WS_TIMEOUT_MS` | no       | `60000`            | Per-request timeout (generation runs a server-side LLM pass).    |\n\n## Links\n\n- Homepage: https://three.ws\n- Changelog: https://three.ws/changelog\n- Issues: https://github.com/nirholas/three.ws/issues\n- License: Apache-2.0, see [LICENSE](./LICENSE)\n\n---\n\n<p align=\"center\">\n  <sub>\n    Part of the <a href=\"https://three.ws\">three.ws</a> SDK suite — 3D AI agents, on-chain identity, and agent payments.<br/>\n    <a href=\"https://three.ws\">Website</a> · <a href=\"https://three.ws/changelog\">Changelog</a> · <a href=\"https://github.com/nirholas/three.ws\">GitHub</a>\n  </sub>\n</p>\n\n<!-- three.ws:growth -->\n## Support the project\n\nIf autopilot-mcp saves you time, **[star it on GitHub](https://github.com/nirholas/autopilot-mcp)**. Stars are how other developers and AI agents find the repositories worth trusting, and they cost you one click.\n\nKnow someone who would use it? [Post on X](https://twitter.com/intent/tweet?text=autopilot-mcp%3A%20An%20AI%20agent's%20own%20autonomous-execution%20control%20plane%20over%20MCP%3A%20set%20autopilot%20scopes%2C%20a%20daily%20SOL&url=https%3A%2F%2Fgithub.com%2Fnirholas%2Fautopilot-mcp) · [Share on Bluesky](https://bsky.app/intent/compose?text=autopilot-mcp%3A%20An%20AI%20agent's%20own%20autonomous-execution%20control%20plane%20over%20MCP%3A%20set%20autopilot%20scopes%2C%20a%20daily%20SOL%20https%3A%2F%2Fgithub.com%2Fnirholas%2Fautopilot-mcp) · [Share on LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fgithub.com%2Fnirholas%2Fautopilot-mcp) · [Submit to Hacker News](https://news.ycombinator.com/submitlink?u=https%3A%2F%2Fgithub.com%2Fnirholas%2Fautopilot-mcp&t=autopilot-mcp%3A%20An%20AI%20agent's%20own%20autonomous-execution%20control%20plane%20over%20MCP%3A%20set%20autopilot%20scopes%2C%20a%20daily%20SOL) · [Share on Reddit](https://www.reddit.com/submit?url=https%3A%2F%2Fgithub.com%2Fnirholas%2Fautopilot-mcp&title=autopilot-mcp%3A%20An%20AI%20agent's%20own%20autonomous-execution%20control%20plane%20over%20MCP%3A%20set%20autopilot%20scopes%2C%20a%20daily%20SOL)\n\n## Built for AI agents too\n\nCoding agents and LLM tooling can read this repo directly: [AGENTS.md](./AGENTS.md), [llms.txt](./llms.txt), [llms-full.txt](./llms-full.txt). Point an agent at `https://github.com/nirholas/autopilot-mcp` and it has the context it needs.\n\n## More from the same author\n\n- [All repositories by nirholas](https://github.com/nirholas/nirholas#readme): the full catalog, grouped by topic\n- [three.ws](https://three.ws): the platform for 3D AI agents with Solana wallets, a skill marketplace and x402 payments\n- Questions or ideas: [open an issue](https://github.com/nirholas/autopilot-mcp/issues) or [start a discussion](https://github.com/nirholas/autopilot-mcp/discussions)\n\n## Contributors\n\n[![Contributors](https://contrib.rocks/image?repo=nirholas/autopilot-mcp)](https://github.com/nirholas/autopilot-mcp/graphs/contributors)\n\n## Star history\n\n[![Star History Chart](https://api.star-history.com/svg?repos=nirholas/autopilot-mcp&type=Date)](https://www.star-history.com/#nirholas/autopilot-mcp&Date)\n\n<!-- /three.ws:growth -->\n\n<!-- three.ws:ecosystem -->\n## Part of three.ws\n\n[three.ws](https://three.ws) is a platform for 3D AI agents with Solana wallets: avatars, a skill marketplace, x402 payments and more than seventy MCP servers. `@three-ws/autopilot-mcp` is one package from it.\n\n- Documentation site: https://nirholas.github.io/autopilot-mcp/\n- npm: https://www.npmjs.com/package/@three-ws/autopilot-mcp\n- Canonical source: https://github.com/nirholas/three.ws (this repository is a generated mirror of `packages/autopilot-mcp`)\n- Agent-readable summary: [llms.txt](./llms.txt) and [AGENTS.md](./AGENTS.md)\n- Issues and ideas: https://github.com/nirholas/autopilot-mcp/issues\n<!-- /three.ws:ecosystem -->\n"}