Connect and authenticate
The Thirdfy MCP endpoint, signing in with your Thirdfy account, the agent key header, credential modes, and direct REST tool calls.
Connect your agent host to Thirdfy MCP and choose how it proves who it acts for. Thirdfy hosts the endpoint, so there is nothing to install. For setup in a specific app, see the MCP client guides.
You can connect in three ways:
| Way | Endpoint | Best for |
|---|---|---|
| Sign in with Thirdfy | https://mcp.thirdfy.com/mcp | You, in a chat app (Claude, ChatGPT, Cursor, Claude Code), acting for one of your agents |
| Agent key header | https://mcp.thirdfy.com/mcp | Hosted agents, servers, CI and the Claude or OpenAI APIs |
| No account | https://mcp.thirdfy.com/mcp/public | Catalog, signals, help and creating an agent by email or wallet |
Endpoint
| Item | Value |
|---|---|
| MCP connector (streamable HTTP) | https://mcp.thirdfy.com/mcp (agent key, or sign in) |
| Public, no account | https://mcp.thirdfy.com/mcp/public (signals, catalog, help, onboarding) |
| Sign-in (OAuth) | https://auth.thirdfy.com ยท your connected apps: auth.thirdfy.com/connections |
| Typed toolsets | https://mcp.thirdfy.com/mcp?toolsets=<list> (see Discovery) |
| Tool REST | POST https://mcp.thirdfy.com/tool/<toolName> |
| Tool manifest | GET https://mcp.thirdfy.com/tools |
| Health | GET https://mcp.thirdfy.com/health |
Every tool listed by GET /tools works on both /mcp and /tool/<toolName>.
Your agent key goes in the header
Thirdfy MCP doesn't remember you between calls. It identifies your agent from the connection header on every request:
X-API-KEY: agent-... works too.
- With the header, Thirdfy checks the key and fills it in as
agentApiKeyon every tool call. Your agent can act only for itself. If a call names a different key in its arguments, it fails withAGENT_IDENTITY_MISMATCH. - Without the header, plain
/mcpanswers401and asks you to sign in (see the next section). - For keyless use, connect to
https://mcp.thirdfy.com/mcp/public. Only the tools that need no key work there. A tool that needs a key returns401 Authentication required, even when the key is in the tool arguments.
To get a key:
- Run email onboarding (
startEmailOnboarding, thencompleteEmailOnboarding). - Save the key. It is returned once, at
data.bootstrap.agentApiKey. - Add it to your connector and reconnect.
Sign in instead of a key
In a chat app you can use your Thirdfy account instead of an agent key. This works in apps that support MCP sign-in: claude.ai, Claude Desktop, Claude Code, ChatGPT and Cursor.
- Add
https://mcp.thirdfy.com/mcpto the app. - The app opens
auth.thirdfy.com. Sign in the way you do on thirdfy.com (email, Google or wallet). - Choose one agent, or click + Create a new agent.
- Choose what the app gets:
| Scope | Grants |
|---|---|
mcp:read | Actions, balances, positions, readiness. Always granted |
mcp:trade | Writes that move the agent's funds, within its limits. Each still asks for confirmation unless your confirmation setting says otherwise |
offline_access | Stay connected up to 30 days without signing in again |
If you granted Read only, a write returns 403 insufficient_scope and the app asks you to sign in again with mcp:trade.
See or revoke connected apps at auth.thirdfy.com/connections. An app keeps access only while you own the agent. After an ownership change, its access stops within the hour.
Hosted agents and servers keep using the agent key header.
For developers: the app finds the sign-in details in the 401 reply (/.well-known/oauth-protected-resource/mcp).
What a signed-in app can do
A signed-in app acts for the one agent you chose, with these 17 tools: health, listTools, getThirdfyHelp, getActionsCatalog, getProviderActions, getChainCapabilities, getNonEvmCapabilities, walletExecute, previewOrder, agentWalletBootstrap, getWalletProfile, getVenueReadiness, prepareVenueOnboarding, completeVenueOnboarding, fundVenue, getCreditsBalance and quoteActionPricing.
- Each write asks you to confirm first, with a form in the chat or a
CONFIRMATION_REQUIREDreply that carries aconfirmationToken. See Write confirmation. agentRun,executeIntent, onboarding, delegation and typed toolsets are not available. Use the agent key for those.- Lighter isn't offered in signed-in apps yet, because it needs manual setup (an account index, an API key index and integer units). It works with an agent key: the Agent CLI, the API, or MCP with the key header. In a signed-in app, naming Lighter returns
VENUE_NOT_AVAILABLE. - Very large read replies are cut off at 80 KiB.
Credential modes
Each tool call runs under one kind of credential. Most people only need sign-in or an agent key.
| Mode | Token | Use |
|---|---|---|
none | No header, on /mcp/public | Discovery, signals, help, and email or wallet onboarding |
bootstrap | btp... | Short-lived setup token from POST /auth/bootstrap/issue |
agent_api_key | agent-... | Your agent. The normal mode for hosted agents and servers |
oauth | Token from auth.thirdfy.com | An app you signed in to, acting as the agent you chose |
full_api_key | Operator key | Private integrations and maintenance. Never put it in an agent |
Tools that need no key
On https://mcp.thirdfy.com/mcp/public: getThirdfyHelp, getActionsCatalog, getProviderActions, getChainCapabilities, getNonEvmCapabilities, describeOnboardingPath, startEmailOnboarding, completeEmailOnboarding, startWalletOnboarding, completeWalletOnboarding, health, listTools, and the public signal reads (for example get_cmc_fear_greed, get_openmarket_btc_funding).
Tools a bootstrap token may call
A bootstrap token is for setup only. It may call agentRegister, bootstrapSelfIdentity, getSelfReadiness, managedWalletInit, managedWalletGrant, managedWalletStatus, agentWalletBootstrap, the delegation* setup and World ID tools, the consoleMandate* tools, and walletExecute on the agent_wallet lane.
You get a bootstrap token by proving a session (ownerSessionToken or authToken) or a wallet (challengeId + signature).
For every tool and the credentials it accepts, see the Tools reference.
Direct tool calls
Scripts can call any tool over plain HTTP, without an MCP session:
getProviderActions accepts provider or providerId.
Hosted runtimes can add executionContext (runtimeId, orgId) to walletExecute, executeIntent and agentRun, so credits are charged to the right runtime.
HTTP errors
| Code | Meaning |
|---|---|
401 | No key or sign-in (plain /mcp answers with a sign-in challenge), or the tool needs a different credential mode |
403 | The tool policy denied the call, or insufficient_scope: the sign-in has Read only and the call needs Trade |
404 | Unknown route or tool |
429 | Rate limited |
503 | The sign-in service or Thirdfy API is briefly unavailable. Retry |
5xx | Thirdfy API failure upstream |
A call can pass sign-in or the key check and still be refused. Thirdfy's checks run on every write: allowlist, daily limit, delegation, venue readiness and credits. If any check fails, nothing runs.
CEX credentials
Never send exchange (CEX) API keys through MCP; it doesn't accept them. The Thirdfy API stores them, and tools pass a credentialRef that points to them. See CEX integrations.
Security
The MCP endpoint is public, so don't rely on it to guard your secrets. Keep the agent key in your host's connector settings or a secret store, never in prompts. Never give an agent an operator or full platform key.