MCP

TRUE's Model Context Protocol server: one endpoint, one auth flow, more than a hundred tools from prices and on-chain data to perps, copy trading and rules.

TRUE’s MCP server is the most direct integration path available. Every data tool the TRUE platform uses internally, prices, news, on-chain intelligence, user context, is exposed through a single Model Context Protocol endpoint that any MCP-compatible AI client can connect to in minutes. No secondary API, no reduced feature set: external clients and internal agents operate on exactly the same surface.

What it is

The TRUE MCP server implements the open Model Context Protocol standard over HTTP. It accepts standard MCP tool-call requests, authenticates them against TRUE’s token layer, executes the requested tool against live data, and returns structured results. The server is stateless per request; session continuity is the client’s responsibility. Because the MCP surface is identical to what TRUE’s own agent system uses, responses carry the same data quality, latency characteristics, and error semantics that power every TRUE chat answer.

Who it’s for

  • Developers building AI-native applications that need reliable, real-time financial data without managing their own data pipelines.
  • Partners embedding TRUE intelligence inside research desks, trading dashboards, or white-label AI products.
  • Power users extending Claude Desktop, Cursor, or any MCP-compatible editor to answer financial questions using TRUE’s live data.

How it works

Connecting

Point any MCP-compatible client at the TRUE MCP endpoint and authenticate with a TRUE bearer token. The transport is standard HTTP; no WebSocket, no SDK install required. The full tool catalog is discoverable via the standard MCP tools/list call immediately after connection.

Authentication flow

An MCP key is the fastest path. Mint one in the TRUE app under MCP & API, tab MCP, send it as a Bearer header, and the connection is live. Keys start with true_sk_, are shown exactly once, expire after 90 days by default (365 at most, five per user) and are revoked from the same screen. There is no sandbox tier: an MCP key reads live data as you. An IP allowlist or a higher rate tier on an MCP key is set by TRUE on request; bot keys on the Bot API carry their own allowlist that you set yourself.

OAuth is the right choice for multi-user deployments, a research workspace shared across a team, or a consumer product built on top of TRUE. The OAuth grant binds an MCP session to a specific TRUE user, inheriting that user’s watchlist, points balance, and permission scope. The full redirect flow, PKCE requirements, and token refresh cycle are documented on the Authentication page.

Making a tool call

Every call follows the standard MCP protocol shape: a method of tools/call, a name matching one of the catalog entries, and an arguments object. The server validates the argument schema, checks the token’s scope against the requested tool, executes the tool against live data, and returns a structured result. If upstream data is unavailable, the server returns a structured error, never a hallucinated payload.

Connecting from Claude Desktop

Point Claude Desktop at the MCP endpoint above with a TRUE bearer token as the authorization header. After restarting Claude Desktop, the TRUE tools appear under the MCP tools menu and are callable from any conversation. Setup takes under two minutes.

Connecting from Cursor or Continue

Both editors accept the same MCP server configuration shape as Claude Desktop. Add the TRUE server entry to your editor’s MCP configuration and restart. The tools are immediately available to the in-editor assistant.

For Developers

The MCP server uses standard HTTP transport and accepts the MCP tools/call wire format. Clients connect by pointing at the TRUE MCP endpoint with a scoped bearer token as the authorization header. Full connection details, token issuance, and the complete tool catalog with required scopes are in the Authentication and Partner Integration docs.

Available tools

The catalog is the same set TRUE AI, Midas (voice) and Kira use. More than a hundred tools, discoverable with tools/list; the names below are the ones in the catalog today, grouped by what they touch. Write tools appear only on a connection granted trade:execute, and every one that moves money or opens risk is approved by you in the app before it executes.

AreaTools
Accountwhoami, get_my_profile, get_my_wallets, get_balances, get_books, get_account_history, get_move_status, get_points_balance, get_bonus_hub, get_watchlist, add_to_watchlist, remove_from_watchlist, update_watchlist
Market dataget_price, search_assets, resolve_token, get_chart, get_chart_url, get_news, get_market_mood, get_macro_calendar, get_futures_flow (open interest, funding, long/short, liquidations, ETF flow), get_stock_fundamentals, scan_chart_setup (an AI read of a chart setup)
On-chain and memecoinssearchMemecoins, getMemecoinOverview, getMemecoinSecurity, getMemecoinHolders, getMemecoinTrades, getMemecoinChart, getMemecoinMarkets, getTrendingMemecoins, getGainersLosersMemecoins, get_meme_picks, get_token_traders, get_token_flows, get_wallet_token_pnl, get_onchain_activity (Solana, EVM and Tron addresses)
Perps (TRUE Exchange)list_perp_markets, get_perp_market_settings, get_positions, get_pnl_summary, get_fee_schedule, get_trade_fees, get_trading_performance, get_trading_behavior, execute_perp, place_limit_order, cancel_order
Risk rulesget_risk_rules, set_daily_loss_limit, arm_trade_rule (auto break-even, stepped take profit), cancel_trade_rule, emergency_stop
Spotexecute_trade (buy or sell for a USD amount), create_dca, buy_with_card, move_money (between your own books and chains)
Copy tradingget_copy_leaderboard, list_followable_traders, get_copy_leader_insights, get_social_positions, follow_trader, unfollow_trader, list_followed, copy_trader, stop_copying, update_copy_settings, get_my_copy_trading, get_copied_positions, get_copied_history, get_copy_bonus_stats
Meme traders (spot copy on EVM)list_meme_traders, get_meme_trader, copy_meme_trader, update_meme_copy, stop_copying_meme_trader, get_my_meme_copies
Autopilot (agents)list_agent_strategies, list_agents, get_agent, create_agent, configure_agent, start_agent, stop_agent, close_agent_positions, delete_agent, update_autopilot_settings, list_strategies, get_strategy, get_strategy_dials, create_strategy, update_strategy
Bot keyslist_bot_keys, create_bot_key, pause_bot_keys, resume_bot_key, revoke_bot_key
Assistantask_true_ai (a question to TRUE AI, answered from the same tools)

Read tools have no side effects and return only the signed-in user’s own account data. Tool names are stable; a breaking change ships as a new name.

The trading tools are only advertised to a connection actually granted trade:execute. If your client does not list them, the grant does not carry the scope: disconnect the connector and reconnect, approving the trading permission on the consent screen. No amount of prompting reveals a tool the grant does not include.

Trading through MCP

MCP is not read-only. With the trade:execute scope an assistant can place a spot trade or a leveraged perp order on your account. What it can never do is execute one on its own: every order is approved by you, in the TRUE app, before anything is signed.

How an order actually flows

  1. The assistant calls the tool once, with the trade it wants to make.
  2. It gets back awaiting_user_confirmation and an approvalId. Nothing has been signed and nothing has been sent.
  3. A confirmation banner appears in your TRUE app. The app must be OPEN in a browser for this to reach you.
  4. You approve or you do not.
  5. The assistant polls with the SAME approvalId, roughly every five seconds. The state moves to approved_executing while your app signs and submits.
  6. It ends at executed with the on-chain transaction signature, or at trade_failed_in_app.
Your wallet signs, not ours

The swap or order is signed and submitted by your own wallet inside your open TRUE app. TRUE holds no key that can sign it and this server never signs anything. The MCP connection stages an intent; your app turns it into a transaction.

Leveraged orders never auto-approve. Small spot trades under a threshold you set yourself can execute without a banner. There is no equivalent setting for leverage.

Two things that will break your first attempt

  • Perp market symbols have no separator. It is SOLUSDC, BTCUSDC, ETHUSDC, NVDAUSDC. Not SOL-PERP, not SOL-USD, not SOL. Call list_perp_markets and use exactly what it returns.
  • You must have opened perps in the app once. That is what provisions your non-custodial DEX account. Until then a perp order has no account to land in.

Perp size is given in base-asset units as a string ("1.5" SOL), not in USD. Spot trades are the other way round: an amount in USD. Pass reduceOnly: true to close or reduce rather than adding to a position.

When a bot should not use MCP

If nobody is at the keyboard, MCP is the wrong surface: the approval step is the whole design and it needs a human. For an unattended bot, create a bot key in the Bots tab and use the Bot API, or sign orders yourself on the venue REST. The create_bot_key tool exists so an assistant can set that up for you.

The rules it enforces

  • Scope enforcement. Every tool call is checked against the scope the token carries. A connection without read:market cannot call a market tool, and one without trade:execute is never shown a trading tool.
  • Schema validation. Argument shapes are validated before execution. Malformed arguments return a structured validation error, not a silent failure.
  • Per-turn tool budget. A single call cannot exhaust the rate-limit bucket; per-tool limits exist independently of the per-token limit.
  • Rate limits. Per key, with Retry-After on a refusal. See Rate Limits.
  • Tool versioning. Breaking changes to a tool’s argument or response shape ship as new tool names, never as mutations to an existing tool. Existing integrations are not silently broken.
  • Structured errors only. When an upstream (prices, on-chain data) is unhealthy, the affected tool returns a structured error payload. The server never fills a gap with a synthesized or cached value that could be mistaken for live data.
Rate limits

Limits are per key. A refusal is a 429 with Retry-After. Higher tiers are granted against a described use case and require an IP allowlist. The table is on Rate Limits.

Safety, security & trust

Safety

Never expose bearer tokens in client-side code. All MCP calls travel over TLS, but TLS does not prevent a token from being extracted from a JavaScript bundle or a mobile binary. Route MCP calls through your backend, mint short-lived tokens where possible, and revoke immediately on suspicion. Apply the principle of least privilege at key issuance, a tool a key cannot call cannot be abused with that key.

Token revocation is instant. A compromised key can be revoked from the TRUE dashboard and the revocation propagates across the MCP edge within seconds. There is no grace window; a revoked key is refused immediately.

Audit logging is on by default. Every tool call made against a key is logged with a timestamp, tool name and sanitized arguments, and the Connected Apps tab in the app shows which assistant holds which grant.

Writes are approved by you. A tool that opens risk or moves money stages an intent; your app, with your wallet, turns it into a transaction after you approve it. Withdrawals to an outside address are not in the catalog at all.

One surface, no second-class copy. External clients call exactly the tools TRUE’s own agents call. There is no sandbox tier and no fixture mode, so what you build against is what ships. Point a short-expiry key at a throwaway account if you want to test without touching your own.

Why it’s well thought through

Symmetry between internal and external. TRUE’s own agent system and external MCP clients call the same tools against the same infrastructure. There is no second-class external API that receives stale or degraded data. This symmetry is a design constraint, not a marketing claim: any regression in the external surface is immediately visible in the product’s own chat.

Fail-fast semantics. The MCP server is designed to surface failures clearly rather than paper over them. A tool that cannot get live data returns an error the calling LLM can reason about, “prices are temporarily unavailable for this asset”, rather than a confident-looking but stale or fabricated response. This makes LLM applications built on the MCP more reliable, because the model receives a signal it can act on.

Narrow, composable tools. Each tool does exactly one thing. This keeps the context window cost per call low, the argument shapes simple, and the surface area for misuse small. Complex queries are composed by the calling LLM across multiple tools, not by a monolithic tool that over-fetches.

Versioning as a contract. Tool names are stable. When a tool’s behavior changes in a breaking way, a new tool name is published and the old name is kept for a deprecation window. Integrations are never silently broken by a server-side change.

For Partners

White-label MCP setup is available on the partner tier. Partner accounts provision tokens for end users from a shared dashboard, brand the OAuth consent screen with custom copy and logo, and inherit the full tool surface with SLA guarantees. Revenue share, onboarding flow, and contractual terms are on Partner Integration.

Common questions

Can I use the MCP server without a TRUE account? No. Every MCP call requires a bearer token issued to a TRUE account. Creating an account is free; generating a scoped key takes under a minute from the dashboard.

Does the MCP server support streaming responses? Individual tool calls return synchronous JSON responses. Streaming market data is on the Realtime page (SSE and WebSocket). Use MCP for tool access, the streams for live prices.

What happens if a tool is unavailable? The affected tool returns a structured error object with a machine-readable code, a human-readable message, and a retryable boolean. Permanent errors (bad arguments, scope denied) are not retryable; transient errors (upstream degraded) are. The calling LLM can route around the failure gracefully.

How do I know which scope to request for a given tool? Read tools need read:market or read:points; every tool that writes needs trade:execute and is only listed on a connection that holds it. Request only the scopes your integration actually uses.

Can the MCP server execute trades or move funds? With trade:execute it can propose a spot trade, a perp order, a copy, an Autopilot or a transfer between your own books. Each one is approved by you in the TRUE app before anything is signed, leveraged orders never auto-approve, and nothing in the catalog can send funds to an outside address.

What is the latency profile? Most tool calls complete in under 300ms from the edge. On-chain tools (memecoin holder queries, Solana RPC calls) can take up to 1.5 seconds under load. Price tools backed by the TRUE Quotes layer are consistently sub-100ms.

Do I need a separate key per client? No, but you should. A key is revocable on its own, so one key per client means you can cut off a laptop you lost without taking your server down with it.

Is there a webhook alternative to polling for price changes? Not through MCP. For live data use the streams instead of polling tools: the perps WebSocket and SSE feed on Realtime. There is no outbound user-registered webhook product today.

Are MCP calls included in my points earning? MCP calls do not earn points. Points are earned through in-app actions, swaps, streaks, referrals, as documented on Points & Rewards.

How do I report a bug in a tool response? Send the tool name, the arguments and the time of the call to [email protected], or open a ticket in the app so Kira can read the call from your account.

  • Agents: the internal agent system that calls MCP tools to answer chat questions.
  • Authentication: OAuth, scoped keys, JWT, and token rotation.
  • Rate Limits: per-tool and per-tier quotas in full.
Last updated: