Skip to main content
Cove lets you connect an AI agent to your account through the Model Context Protocol (MCP). Once connected, your agent can do what you do in the Telegram bot or mini app — check balances, research tokens, buy and sell, set limit orders and DCA ladders, manage profiles and wallets, and (if you allow it) withdraw, transfer, bridge, and fund wallets — all as MCP tools your agent calls directly. You choose how much of your account an agent reaches:
  • A Global token reaches every real wallet in every profile you own, including wallets and profiles you add later.
  • A Profile token is pinned to one profile and only the wallets you pick in it.
Manage your profiles at /profiles — each profile is its own set of up to 10 wallets, and you can have up to 5 live real profiles (plus a paper profile). See Global vs Profile tokens for how to choose.
Access is enabled by Cove, then controlled by you. The MCP is off by default. Cove switches on agent access for your account (once — not per profile or wallet). After that, everything else is yours to manage in Telegram with /agent: which kind of token, which wallets, whether money can leave, and how much an agent may spend. See Requesting access.
What’s new (September 2026)
  • Global tokens covering your whole account, alongside per-profile tokens.
  • Self-serve controls in /agent: pick wallets, switch Money-out on per wallet, and set your own spending limits — no support ticket needed.
  • Connect AI apps (OAuth): connect apps that support MCP sign-in without pasting a token, approved from Telegram.
  • New tools: get_capabilities, reconcile_market_order, get_trade_surplus_offer, profile & wallet management, bridge authorization, the wallet marketplace, and private disperse — 66 tools in total.
  • Stronger trade safety: high-impact confirmations are now tied to the exact quote you saw, and every market order can be reconciled to an authoritative fill.

Contents


What your agent can do

  • See everything — USDC balance (including funds still bridging), open positions with live PnL, order status, authoritative fills, and full trading history.
  • Research tokens — search, pull detailed info, and run a security report (rug checks: audit verdict, mint/freeze authority, holder concentration, liquidity locks).
  • Trade — market buys and sells across up to 25 wallets in one call, with a Telegram notification to you for every wallet.
  • Automate — limit buys, stop-losses, take-profits, trailing stops, and DCA ladders.
  • Manage — read and update trade/position settings, check earnings, request payouts, export trade history.
  • Organise (Global token) — create, rename, archive, and restore profiles; create and rename wallets; pick your primary (payout) wallet.
  • Move funds (needs Money-out) — withdraw to an external wallet, send USDC to another Cove user, move tokens between your own wallets, bring USDC home from other chains, buy aged wallets from the marketplace, and privately fund your own wallets.
Read-only tokens can see and research, but can never trade, change anything, or move money.

Quick start

1

Request agent access

Ask Cove to enable agent access for your account — see Requesting access.
2

Choose Global or Profile access

Open /agent in Telegram and pick a mode:
  • Global agent tokenCreate Global Tokens → confirm Enable Full Account Access; or
  • Profile agent token (for the profile currently active in /profiles) → Manage Wallets → choose wallets, set Money-out per wallet → Save.
3

Copy the token pair

You get a read token and a read-write token, shown once, together with ready-to-paste MCP configs and your MCP URL.
4

Connect your MCP client

Use the MCP URL from the panel with Authorization: Bearer <your-token> — or, for a Global token, use Connect AI apps instead of pasting a token.
5

Discover the available capabilities

Have your agent call get_capabilities and list_accounts first. They tell it exactly what this token can reach and do. Then try get_balance, get_positions, and search_tokens, and buy_token / sell_token with the read-write token.
6

Set spending limits

Recommended: use /agentSet Limits before you let an agent trade unattended.

Connection details

Point any MCP-compatible client at that URL with your Bearer token and it discovers the available tools automatically. Example config:

Requesting access

MCP access is switched on per Cove account. Open a support ticket and ask for agent MCP access. Once it’s on:
  • You create and manage all tokens yourself in /agent — Global or Profile, any profile.
  • You choose which wallets a Profile token reaches, and whether each may move money.
  • You set your own spending limits.
If access is later switched off for your account, every token and connected app stops working immediately. Your saved token settings stay in /agent so you can pick up where you left off if it’s switched back on.
The /agent command isn’t in the bot’s command menu yet — type it directly.

Global vs Profile tokens

Profile tokens are pinned, like an exchange API key. The profile is the one active in Telegram when you create the token; switching profiles in Telegram afterwards never changes what the token reaches. To cover another profile, switch to it in /profiles first, then create its token. If the pinned profile is archived, the token stops working until you restore the profile. Global and Profile pairs coexist. Creating a Global pair doesn’t revoke your Profile pairs, and rotating or revoking one pair leaves the others alone. Paper and real never mix. A Global token trades real wallets only. For paper trading, create a Profile token from your paper profile.
Choose Global carefully. A Global read-write token can trade and move money on every real wallet you own, today and in the future. Prefer a Profile token with only the wallets an agent needs unless you really want it to manage your whole account.

Your tokens

Every token mode gives you a pair: Give your agent the read token if it only needs to watch and report, and the read-write token if it should act. Running a monitoring agent and a trading agent on the same wallets with different tokens is exactly what the pair is for. Tokens are shown once. Cove stores only a hash, so a lost token can’t be recovered — rotate instead.

Managing tokens in /agent

  • Rotate any time you suspect a token is exposed. Your rate limit and spending history follow you, not the token, so rotating never resets them.
  • New wallets aren’t added to a Profile token automatically — open Manage Wallets and select them. (A Global token picks them up by itself.)
  • A wallet covered by a Profile token can’t be moved to another profile until you revoke or re-scope the token.
  • Requirements: agent access enabled on your account, and a Cove account linked to Telegram (that’s where agent notifications go).

Managing tokens programmatically

The HTTP token API is still available (authenticated with your normal Cove/Privy login, 30 requests/minute): Spending limits, Money-out, and webhooks are set in Telegram only.

Wallet permissions

Each wallet a token reaches carries a capability, worked out fresh on every call: Switching Money-out on for a Profile token: /agent → Profile agent token → Manage Wallets → select the wallet → toggle Money-outSave. A wallet has to be selected before Money-out can be switched on. There is no waiting period — it applies as soon as you save. Wallets that can’t be used right now (a lost signer, a deleted wallet, an archived profile) are listed under unavailableWallets in list_accounts and get_capabilities rather than silently disappearing.
Trade permission is powerful on its own. An agent that can trade and change slippage settings can lose a position’s value through a bad trade without ever calling a money-out tool. Only give read-write tokens to agents you trust, and use spending limits.

Connecting AI apps with OAuth

Apps that support MCP sign-in can connect to Cove without you pasting a token. The connection is approved from your Telegram chat. Requirements: a Global read-write token with Connect AI apps switched on. Profile tokens and paper tokens are Bearer-only. If you don’t see Connect AI apps in the Global tab, it isn’t available on your account yet.

Set up an OAuth connection

1

Create a Global token pair

Open /agentGlobal agent token and create the pair if you haven’t.
2

Enable AI app connections

Switch Connect AI apps: ON.
3

Add Cove to the AI app

Choose Copy URL and add it as a custom MCP connector in your AI app.
4

Check the browser code

The app opens a Cove page titled “Approve this connection in Telegram”, showing the app’s name, the address it will return to, and a 6-character verification code.
5

Open the request in Telegram

Tap Copy /start command and send it to Cove in Telegram, or tap Or open Cove in Telegram.
6

Approve the matching request

In Telegram, check the “Connect an AI app?” card. Tap Connect only if you started this request and the verification code matches the browser page.
7

Finish connecting

Return to your browser — the app finishes connecting.
1

1. Enable AI App Connections in Telegram and copy your MCP URL

Open Cove in Telegram and type /agent. Select the Global agent token tab. Toggle Connect AI apps: ON. Tap Copy URL to copy your global MCP server endpoint.
Telegram Cove /agent menu showing Global agent token tab and Connect AI apps toggle.

Enable Connect AI apps: ON in the Global agent token tab and copy your MCP URL.

2

2. Open Plugins or Connectors in your AI application

Launch your AI client (such as ChatGPT, SuperGrok, Claude, or OpenWebUI). Go to the settings or plugin section and select Connectors. Click New Connector in the top right corner.
AI application settings interface with Connectors tab and New Connector button.

Navigate to Connectors in your AI client settings and click New Connector.

3

3. Add a custom connector

In the connector options modal, choose + Custom: Add your own custom connector.
New Connector dialog with option to add a custom connector.

Select Custom to configure a new manual MCP server endpoint.

4

4. Name the connector and paste your MCP server URL

Enter a recognizable name (for example, Cove Trading). Paste your copied MCP URL (https://cove.trade/api/mcp) into the Server URL input box, then click Add Connector.
Custom Connector setup form with Name and Server URL fields.

Enter your custom connector name and paste your copied Cove MCP URL.

5

5. Initiate OAuth authorization

Your AI client launches a Cove OAuth authorization pop-up window titled Approve this connection in Telegram. Note the 6-character verification code (for example, ASHM-U) displayed on screen.
Cove OAuth approval pop-up showing verification code and Telegram redirect button.

The Cove OAuth window displays the requesting application name and verification code.

6

6. Click Open Cove in Telegram

Click Open Cove in Telegram. The pop-up window switches state to Waiting for your approval in Telegram.
OAuth popup window showing waiting status for Telegram approval.

Click Open Cove in Telegram to send the approval request to your Telegram app.

7

7. Verify the code and approve in Telegram

In Telegram, Cove displays a Connect an AI app? approval request. Confirm that the self-reported app name and 6-character verification code match your browser window, then tap Connect.
Telegram chat prompt asking to confirm connection with matching verification code.

Check that the verification code matches your browser window, then tap Connect in Telegram.

8

8. Receive Telegram confirmation

Telegram displays an approval confirmation: AI app approved. Return to your browser to finish connecting.
Telegram chat message confirming successful AI app approval.

Telegram confirms the AI app connection approval.

9

9. Confirm active connection status in your AI app

Return to your AI client window. Under the Connected connectors list, your Cove connector now displays a ✓ Added badge.
AI client connectors list showing Cove Staging as added.

The Cove connector appears as connected with a ✓ Added indicator in your AI client.

10

10. Execute trade commands using plain text prompts

Prompt your AI agent with trading instructions in natural language (for example: “using my main wallet, buy $5 worth of [token address]”). The agent calls Cove MCP trading tools, executes the market order, and returns full transaction details.
AI agent chat interface demonstrating an executed buy command with fill details.

Prompt your AI agent to execute market buys and inspect the structured fill output.

11

11. Review real-time Telegram execution alerts

Cove sends an instant notification to your Telegram chat (🤖 Agent Buy / Buy Executed), updating your position card, PnL, and active order guardrails.
Telegram notification showing Agent Buy execution and updated token position card.

Cove sends real-time execution receipts and live position tracking cards to Telegram.

12

12. Manage and exit positions through conversation

To sell holdings or adjust positions, chat naturally with your agent (for example: “Ok, sell the balance”). The agent triggers the sell order via MCP and provides a complete net summary.
AI agent chat showing a completed position sell command with return calculations.

Chat with your agent to sell balances and manage positions conversationally over MCP.

The request expires after 5 minutes. The app name is self-reported by the app, so rely on the verification code, not the name. What a connected app gets: exactly the Global read-write token’s permissions and spending limits — including any future changes to them. There’s no read-only or per-wallet OAuth grant; if you want to limit an app, use a Bearer token instead. How long it lasts: access tokens refresh automatically every hour. After 30 days the app has to be approved again through Telegram. Disconnecting apps:
  • Connect AI apps → OFF disconnects every connected app. Turning it back on requires fresh approvals.
  • Rotating or revoking the Global pair also disconnects every app, and turns Connect AI apps off again.
  • There’s no per-app disconnect yet — turn the toggle off and reconnect the apps you want.
For client authors: Cove implements the standard MCP authorization flow — OAuth with S256 PKCE, public clients only (no client secret), scope cove:agent (plus optional offline_access). Discovery starts from the WWW-Authenticate header on an unauthenticated POST /mcp and /.well-known/oauth-protected-resource. Clients can register with a Client ID Metadata Document, dynamic client registration (with token_endpoint_auth_method: "none"), or a pre-configured client ID. Redirect URIs must match exactly: HTTPS, or HTTP on a loopback address. OAuth tokens work only on the MCP endpoint, not on the token-management API.

Working across your wallets

A single token reaches one or more wallets — you don’t need a token per wallet. Call list_accounts at any time to see the wallets a token can use, with their ids, capabilities, auto-bridge mode, addresses, and balances. There is no default wallet for anything that spends. Every write tool must name its target, so adding a wallet in Telegram can never silently multiply a running agent’s spend. Seeing across wallets. Read tools that support it default to every wallet in scope when you don’t name a target, and each row tells you which wallet it came from:
  • get_positions, get_trading_history, and export_trades — omit the target to cover all in-scope wallets, or narrow with accountIds / accountId.
    • get_positions returns a flat list when you name exactly one wallet, and { accounts: [{ accountId, positions }] } otherwise.
    • get_trading_history returns up to limit (1–100, default 20) orders per wallet, merged newest-first, optionally filtered by status.
  • get_balance is per-wallet: pass an accountId (it can be omitted only when the token reaches exactly one wallet).
Picking a wallet. Two parameters control selection: Passing both accountId and accountIds is refused rather than guessed, so a mismatched pair can never silently trade or export the wrong wallet set. Trading many wallets at once. buy_token, sell_token, and batch_order take accountIds and fan out — each wallet trades independently and gets its own order. amountUsd is spent by each wallet (it isn’t split). The response is a per-wallet outcome list:
status is ok (all submitted), partial, or rejected (none submitted), so a partial fan-out is never reported as a clean success. A $ sell sized by amountUsd resolves to a different fraction of each wallet’s own bag, and every wallet’s order sends its own Telegram notification.
Limit orders, DCA ladders, bridging, and money-out tools act on one wallet per call (accountId) by design — place them per wallet.
Reading balances. get_balance and list_accounts split your USDC so an agent knows what it can spend now: parkedUsd / stuckUsd can be null when they can’t be worked out right now — treat that as unknown, not zero. list_accounts also breaks balances down per chain and stablecoin (byChain), so match on tokenSymbol or sum the rows.

Rate limits

By default your agent can make 30 requests per minute, counted across all your tokens and connected apps together. Rotating tokens or creating profiles never adds more allowance.
  • The window is a fixed 60 seconds, not a sliding one.
  • Over the limit, you get HTTP 429 with Retry-After and RateLimit-* headers — back off until then.
  • One JSON-RPC request per HTTP call; batches are rejected.

Need a higher limit?

Open a support ticket and tell us:
  • How you intend to use the MCP — the kind of agent, the workload, roughly how many calls per minute you expect and when (steady, bursty, scheduled runs, etc.).
  • How much of an increase you need — give us a target requests-per-minute.
We’ll review and raise your limit to fit the use case (up to 600 per minute).

Spending limits

Set your own limits in /agent → Set Limits, per token pair. Enter a USD amount for any limit, 0 to clear one, or Clear All Limits. With no limits set, the token is uncapped. What counts as spend: market and limit buys, DCA ladders (the full total, at creation), withdrawals and transfers, bridge authorizations, marketplace purchases and private-disperse funding (at their declared maximum), and accepted sell surcharges (see Gas-surplus offers). Ordinary sells, stop-losses, take-profits, and trailing stops don’t count. How it adds up:
  • A 5-wallet buy at $500 each is $2,500 of spend — it passes a $500 Per-Trade limit, but not a $1,000 Per-Batch limit.
  • Hourly and daily totals count spending by all your agent tokens; each call is checked against the calling token’s limits.
  • Still-open limit buys and pending workflows keep counting even after their window record ages out.
  • If Cove can’t verify your open exposure, the trade is refused rather than risked.
Your agent can read its own limits in list_accounts (spendingLimits). Refusals read like Buy blocked: $100 exceeds per-trade limit of $50.

Staying safe

The MCP carries the same protections as trading in Telegram or the mini app, plus a few built for agents:
  • No accidental double-trades. Every trade, limit order, and money-out takes an idempotencyKey you generate — 8–64 characters of letters, digits, _, or - (a UUID works). Retry with the same key and same parameters within 10 minutes and you get the original result back — not a second trade. A market order’s key is also remembered permanently per wallet, so it can’t be reused for a different trade later. Bridge, marketplace, and private-disperse tools take a key of 8–128 characters that is stored permanently and tied to the token that used it.
  • One trade per token at a time. Two buys (or two sells) of the same token within ~2 seconds are held back — including one from the mini app — so a double-tap can’t double-spend.
  • High-impact trades pause for confirmation. A trade with unusually high price impact comes back asking you to confirm, and nothing is spent until you do. The confirmation is tied to the exact quote shown. See Confirming high-impact trades.
  • Trades stay sellable. A buy that would leave a position too small to ever sell is refused up front — the minimum is $2.50 on Solana and $0.50 on other chains (the $1 minimum order also applies).
  • Spending limits. Set them yourself in /agent — see Spending limits.
  • Read tokens can’t spend. A read-only token can’t trade or move money at all.
  • Money-out is opt-in on Profile tokens, per wallet.
  • No keys ever leave Cove. No tool exports private keys or creates new credentials.
  • You’re always told. Agent trades, holds, refusals, and money movements send a Telegram message to your linked account — see Notifications.

Confirming high-impact trades

When a wallet’s trade would have high price impact, that wallet comes back in rejected with a confirmation class and a prompt id. Nothing was created and nothing was spent for it. The rejected entry includes promptId, and when available quoteTerms (tokenAmount, usdAmount), estimatedSpendUsd (buys), and a reason that spells out the impact and exactly how to retry. To confirm, call the same tool again with the same size, token, chain, and transactionDelayMs, plus:
  • Use the code exactly as returned. If wallets came back with different classes, confirm them in separate calls.
  • Name only the gated wallet(s) in accountIds, and use a fresh idempotencyKey — unless you’re re-sending the entire original call and none of it went through, in which case the original key is fine.
  • A prompt lasts 10 minutes and is single-use.
  • If the new quote is more than 5% worse than the terms you confirmed, or the impact class gets worse, the trade asks again instead of executing (quoteChanged: true).
Errors: confirmation_expired means there’s no live prompt — call again without confirmHighImpact to get a fresh one. confirmation_mismatch means the class or prompt id was wrong. You’ll get a ”🚨 Agent trade held for confirmation” message in Telegram when this happens (at most once a minute per token and side).

Recovering from an uncertain result

Networks drop. When your agent isn’t sure whether something happened, it should look it up — never resubmit with a new key. Market orders (buy_token, sell_token, batch_order): a submit response is a receipt, not a fill. Use reconcile_market_order with either the orderId or the original idempotencyKey:
  1. Call it after a lost or ambiguous response — including any “Buy failed” / “Sell failed” error without a code.
  2. Poll found results until every order is terminal and every success shows fillStatus: "authoritative", with a fill (amount, USD, price, fees, time).
  3. Treat not_found and unavailable as uncertain — stop and tell the user. A not_found does not mean it’s safe to trade again.
  4. Market orders can’t be cancelled once submitted.
Each result carries a lifecycle (submitted, executing, filled, settling, failed, cancelled, expired) and a fillStatus. A successful order stays settling until its fees are final. Limit, protective, and transfer orders: use get_order_status. If a limit-order creation fails with “the order may still have been created”, check get_limit_orders before doing anything else — and don’t retry with a fresh key. Withdrawals and transfers: if the result is uncertain (say, a dropped connection after signing), a retry comes back as an error, not a success. Check get_order_status and the balance before assuming it went through. Bridge, marketplace, and disperse: these return code: "outcome_unknown" when the action may already have started. Read the matching status tool (get_balance, marketplace_purchase_status, get_private_disperse_run) and retry only with the same key. Never create a replacement.

Trade timing across wallets

buy_token, sell_token, and batch_order accept an optional transactionDelayMs (0–10,000) — the gap between each wallet’s order, in the order you listed the wallets.
  • If you leave it out: buys use each wallet’s profile Transaction delay setting; sells go out together; a single-wallet call never waits.
  • Primary wallet first: if the profile has Primary wallet first on and you name the primary wallet, it goes first and the rest wait at least 250 ms.
  • Delays control submission order only — fills land in whatever order the chain settles them. All order ids come back immediately; later wallets show pending until their turn.
  • batch_order protection waits for the fill. The stop-loss and take-profit are created straight away but stay dormant until that wallet’s buy actually fills. If the buy fails or its outcome is unknown, the protection waits (until recovery, cancellation, or expiry) rather than firing.
  • An agent buy that fails because the wallet couldn’t afford it at execution time is not automatically retried at a smaller size — reconcile, then submit a new call.

Gas-surplus offers

Some trades cost more in network fees than Cove sponsors. Instead of failing silently, the wallet comes back with a surplusOffer — the extra charge to go ahead.
  • For a failed market order, get_trade_surplus_offer({ orderId }) returns the live offer: offerId, surplusUsd, expiresAt, and the exact continuation call.
  • To accept, call that buy_token / sell_token continuation exactly as given, with surplusOfferId and maxSurplusUsd (up to $1,000), for one wallet, using the supplied idempotencyKey. You’re only ever charged the offered amount.
  • Offers expire within 10 minutes and are tied to your token. An accepted sell surcharge counts toward your spending limits. Paper wallets and Solana sells don’t get offers.
  • Accepting doesn’t change your saved gas surplus budget setting.

Notifications & webhooks

Telegram

Every agent action you should know about lands in your linked Telegram chat. Each message has a Close button to dismiss it.

Webhooks

Optionally, set a webhook on a token pair in /agentSet Webhook URL. Cove POSTs JSON to it for market and transfer orders:
  • Headers: X-Cove-Event (the event) and X-Cove-Signature = HMAC-SHA256(webhookSecret, rawBody) in hex — verify it before trusting the payload.
  • Payload: event, orderId, accountId, status, tokenSymbol, tokenAddress, chainId, side, amountUsd, tokenAmount, priceUsd, txHashes, timestamp. A fan-out sends one delivery per wallet.
  • Delivery is best-effort: a 5-second timeout and no retries. Limit-order and DCA fills don’t send webhooks. Treat reconcile_market_order / get_order_status as the source of truth.
  • Your webhook and secret carry over when you rotate tokens.

Tool reference

Everything your agent can call, grouped by what it does. tools/list (and get_capabilities) always show the exact, current arguments.
  • Needs: read = any token; RW = read-write token with trade on the target; RW + money-out = read-write with Money-out on the source wallet; Global RW = a Global read-write token.
  • Wallets: all = defaults to every in-scope wallet (narrow with accountIds/accountId); fan-out = accountIds, one independent order per wallet; one = a single accountId; = not wallet-specific.

Discover

See your account

Research tokens

Trade

There’s no per-call slippage override — trades use the wallet profile’s settings (check get_settings).

Automate (limit orders)

Orders expire after expirySeconds (60 seconds to 30 days); if you leave it out, they last 30 days.

Settings & earnings

Settings rules worth knowing:
  • Global tokens must pass profileId to read or write settings; Profile tokens use their own profile.
  • A Profile token can only write profile-wide settings if it covers every wallet in that profile.
  • Change at most one of slippageBps, clampToMaxBuy, or liquidityProtectionEnabled per call. Changing any of them turns degen mode off in the same write, so don’t combine them with degenMode: true.
  • language needs a Global token. tradingSelectedAccountIds is read-only.
  • If an update fails part-way, trust the observed field in the response — it’s a fresh read of what’s actually saved.

Profiles & wallets

create_profile and create_wallet aren’t idempotent — after an error, check list_profiles / list_accounts before trying again.

Move funds

All of these are irreversible, act on one wallet (accountId), take an idempotencyKey, count toward your spending limits, and send you a Telegram receipt.

Bridge

Cove keeps trading USDC on its main chain (Solana). USDC that lands on another chain is either brought back automatically or left for you to approve (manual — the default for new and imported wallets, shown as parkedUsd).

Wallet marketplace

Buy pre-existing aged wallets (wallets with real on-chain history) from an outside vendor on Solana, Ethereum, Base, BNB Chain, and Robinhood Chain. Cove pays from the wallet you choose and imports the wallets straight into the profile you name — no private key is ever shown to you or your agent. Budget for the whole cost: maxSpendUsd covers buying the native token, the vendor payment, fees, and gas — a budget that only covers the catalog price can stop a purchase part-way. If a purchase stops, check marketplace_purchase_status; never raise the ceiling or buy again automatically. New real wallets join a Global token’s reach automatically; add them to a Profile token in Manage Wallets.

Private disperse

Fund up to 10 of your own wallets in one profile from a single Solana USDC payment. An outside service routes each share through a different exchange, with an optional delay per share (up to 7 days), instead of sending straight from your source wallet. Fees come out of what each destination receives — quote_private_disperse shows the exact numbers.

Errors & availability

Tools return a code alongside a readable message. The ones your agent will see most: Failed orders also carry an errorCategory (for example slippage, insufficient_balance, price_impact, liquidity, network, gas_exceed, token_migrating, signer_access_lost) in get_order_status, get_trading_history, and reconcile_market_order. Some refusals come back as plain text rather than a coded object — for example a read-only token trying to write, a wallet outside the token’s scope (“This token is not allowed to trade on that wallet…”), a Money-out refusal (“Enable Money-out for this wallet in Telegram’s Agent panel.”), or a spending-limit block (“Buy blocked: …”). Availability:
  • Cove can pause the MCP globally for maintenance or emergencies; you’ll get a clear “temporarily paused” / “disabled” response if so.
  • A feature that’s switched off on the deployment still appears in tools/list and refuses when called — check get_capabilities to see what’s enabled.
  • Over the rate limit you’ll get HTTP 429 with Retry-After.

Need help?

Open a support ticket for anything — enabling agent access on your account, raising your rate limit, or help wiring up your agent. Wallet selection, Money-out, spending limits, webhooks, and connected apps are all self-serve in /agent.