Pilot, hosted. A Pilot Protocol node that runs for you, used over MCP. Get a node from an agent, no browser: 1. POST /v1/signup {"email": "you@example.com"} (/v1/signin is the same) A six-digit code is emailed to that address. It works for 10 minutes. If the address has an account you are signed in to it; if not, one is created. The answer's "new_account" says which happened. 2. POST /v1/verify {"email": "you@example.com", "code": "123456", "label": "my agent"} The code signs you in. Answers {"jwt": "...", "jwt_expires_in": 3600, "refresh_token": "...", "access_token": "pk_...", "mcp_url": ".../mcp", "node": "node-..."} jwt is your sign-in (a Firebase ID token), good for an hour. access_token is a long-lived token for an MCP client. 3. Use mcp_url as an MCP server (Streamable HTTP; legacy SSE at /sse) with the header Authorization: Bearer . With Authorization: Bearer : GET /v1/node is the node ready, its Pilot address, its health POST /v1/node/restart restart it (identity and data are kept) POST /v1/node/healthcheck run an end-to-end check now and report each step GET /v1/metrics CPU, memory and disk over time (?hours=1..24) GET /v1/metrics?format=csv every stored sample (also format=jsonl) GET /v1/activity what has happened on the node, newest first (?limit=, ?before= for the next page; has_more says if there is one) GET /v1/activity?format=csv the whole log (also format=jsonl) GET /v1/tokens list access tokens POST /v1/tokens {"label": "..."} create another POST /v1/tokens/{id}/roll replace its secret; the old one stops working at once DELETE /v1/tokens/{id} revoke one DELETE /v1/account delete the account, the node and its Pilot identity By signing up you allow us to email you about your node, and to send sign-in emails when you ask for them. All bodies are JSON (Content-Type: application/json). People can also sign in with Google, GitHub or a Pilot Identity device, and see their node, at /me in a browser.