MCP server (@talon/mcp)

Plug TALON into Claude Desktop, Claude Code, Cursor, or any MCP client. The server is a thin client of the REST API (docs/api.md): it holds your API key, nothing else. No wallet keys, no chain RPC, no database.

1. Get a key and an agent

  • Create an API key on https://www.deploytalon.com/developers. tlk_live_... targets mainnet (chain 4663), tlk_test_... targets testnet (46630).
  • Note your agent id from the dashboard. If the account has exactly one agent the server picks it automatically.

Sign in to the dashboard by connecting your wallet and signing a free message (no email, no password). That wallet owns your agents and keys.

Shortcut: npx @talon/cli login (the browser asks you to connect your wallet and approve the code), then npx @talon/cli mcp prints every snippet below with your key and agent filled in.

2. Connect a client

Claude Desktop

claude_desktop_config.json (macOS ~/Library/Application Support/Claude/, Windows %APPDATA%\Claude\):

{
  "mcpServers": {
    "talon": {
      "command": "npx",
      "args": ["-y", "@talon/mcp"],
      "env": { "TALON_API_KEY": "tlk_live_...", "TALON_AGENT_ID": "agt_..." }
    }
  }
}

Claude Code

claude mcp add talon -e TALON_API_KEY=tlk_live_... -e TALON_AGENT_ID=agt_... -- npx -y @talon/mcp

Cursor

.cursor/mcp.json:

{
  "mcpServers": {
    "talon": {
      "command": "npx",
      "args": ["-y", "@talon/mcp"],
      "env": { "TALON_API_KEY": "tlk_live_...", "TALON_AGENT_ID": "agt_..." }
    }
  }
}

Hosted URL (nothing to install)

https://mcp.deploytalon.com/mcp speaks streamable HTTP. Send your key as a bearer token on every request.

{
  "mcpServers": {
    "talon": {
      "url": "https://mcp.deploytalon.com/mcp",
      "headers": { "Authorization": "Bearer tlk_live_..." }
    }
  }
}

Claude Code: claude mcp add --transport http talon https://mcp.deploytalon.com/mcp --header "Authorization: Bearer tlk_live_...". Add X-Talon-Agent: agt_... if the account has more than one agent.

3. What the model can do

Every TALON tool that is exposed to agents is an MCP tool with the same name:

CategoryToolsRisk
walletagent_get, wallet_balances, wallet_portfolio, wallet_historyread
walletwallet_transfersensitive (approval)
markettoken_lookup, token_price, token_chart, market_trending, market_new_launches, stock_tokens_listread, public
tradingswap_quote (read), swap_execute, curve_buy, curve_sell, approve_tokenwrite
launchlaunch_quote (read), launch_token (sensitive), earnings_get, earnings_claimmixed
automationautomation_list, automation_create, automation_cancelread / write

The exact list comes from GET /api/v1/tools at startup, so new tools appear without upgrading the package. Control tools (approval_list, approval_resolve) are never exposed to the model: only you approve things.

Each tool description ends with Risk: read | write | sensitive. read tools are marked readOnlyHint, sensitive tools destructiveHint, so clients that gate on annotations behave sensibly.

Approvals

When your policy routes a call to the approval queue the tool returns:

Approval required (id apr_...) for wallet_transfer. Reasons: ...
Ask the user to approve it in the TALON dashboard or Telegram; then call approval status with wallet_history or retry.

Approve it on https://www.deploytalon.com/approvals or tap Yes in Telegram, then tell the model to retry.

Errors

API errors come back as isError tool results with the code and message, for example POLICY_DENIED: Daily spend cap reached. The model can read the message and adjust instead of crashing the session.

Resources and prompt

  • talon://agent: profile, wallet address, policy summary.
  • talon://policy: the full policy JSON.
  • talon://tools: the catalogue with JSON schemas.
  • Prompt talon-briefing: "Summarize my agent's wallet, positions, and trending tokens."

Environment reference

VariableDefaultPurpose
TALON_API_KEYrequiredAPI key
TALON_AGENT_IDonly agent on the accountagent to act as
TALON_API_URLhttps://api.deploytalon.comAPI origin; http://localhost:4000 for local dev
MCP_TRANSPORTstdiohttp for the hosted mode (--http flag does the same)
PORT, HOST8787, 0.0.0.0HTTP bind address
TALON_TIMEOUT_MS60000per-request timeout

Running the hosted mode yourself

npx -y @talon/mcp --http
curl http://localhost:8787/healthz

Each Authorization: Bearer tlk_... gets its own MCP session and its own API client; a session rejects requests that present a different key. The tool catalogue is cached for 60 seconds across sessions.

Troubleshooting

  • NO_API_KEY: the env block is missing or the client did not pass it through. Claude Desktop needs a full restart after editing the config.
  • AGENT_REQUIRED: the account has several agents; set TALON_AGENT_ID.
  • UNAUTHORIZED: the key was revoked or belongs to another environment (tlk_test_ vs tlk_live_).
  • Logs go to stderr, prefixed [talon-mcp], so they never corrupt the stdio protocol stream.