Skip to main content
Glama
Bitget-AI

Bitget Agent MCP

Official
by Bitget-AI

Overview

bitget-agent-mcp is the official Model Context Protocol (MCP) server for Bitget, enabling desktop AI agents like Claude Desktop, Cursor, Continue, Windsurf, and ChatGPT Desktop to operate your Bitget account through natural-language commands.

It is built on the Bitget Unified Trading Account (UTA / v3) API and covers 89 trading operations across market data, spot, futures, account & funds management, sub-accounts, loans, and tax. Crucially, it does not flood your model with one tool per endpoint. Instead it exposes a small, progressively-discoverable intent surface of 14 curated intent verbs (the default profile loads 12 verbs + discover + raw = 14 tools) so AI hosts get full capability without the context bloat and tool-selection errors that plague endpoint-per-tool servers.

Part of Bitget Agent Hub — the official open-source AI ecosystem for Bitget, including the CLI, SDK, installer, and market-analysis skills.


Related MCP server: Bitget MCP Server

Quick Start

Prerequisites

  • Node.js ≥ 20 (download)

  • Bitget API Key (create here) — enable Read + Trade permissions

  • An MCP-capable AI host (Claude Desktop, Cursor, Continue, Windsurf, ChatGPT Desktop, or any stdio MCP client)

Paste this prompt into your AI agent (Claude Desktop / Cursor / etc.):

Please configure the Bitget MCP Server for my AI tool (requires Node.js 20+):
first ask me which AI tool I use (Claude Desktop / Cursor / Windsurf / ChatGPT
Desktop), then add a server that runs `npx -y @bitget-ai/bitget-agent-mcp` to
that tool's MCP config, with BITGET_API_KEY, BITGET_SECRET_KEY, and
BITGET_PASSPHRASE filled in. Confirm once the Bitget tools have loaded.

The agent will detect your tool, add the npx server entry, wire up credentials, and verify the connection.

Manual Install

Prefer to edit config files yourself? Jump to Configuration for per-tool JSON snippets. The command is always:

npx -y @bitget-ai/bitget-agent-mcp

What You Can Do

Once configured, your AI gains native access to Bitget's trading stack through natural language. A few examples (every one maps to a real operation in the surface):

Ask your AI

What happens

Credentials

"What's the current BTC price?"

Live ticker via the market verb

❌ No

"Pull the 4h BTC candles"

OHLCV / K-line history via market

❌ No

"What's the BTC perp funding rate?"

Funding rate via market

❌ No

"Show my USDT balance across accounts"

Account overview via account_overview

✅ Yes

"Buy 0.1 BTC at market"

Spot market order via order

✅ Yes

"Set leverage to 10x and open a BTC long"

account_config + order / position

✅ Yes

"List my open orders"

order (open)

✅ Yes

"Transfer 500 USDT from spot to futures"

Internal transfer via transfer_funds

✅ Yes

"Cancel all my open orders"

order (cancelAll) — high-risk, asks to confirm

✅ Yes

"Borrow USDT against my collateral"

Crypto loan via loan

✅ Yes

Market data (the market verb) is public and works without API credentials; everything that touches your account requires keys.

Advanced Modes

  • --read-only — Blocks every write operation for the session. The verbs stay visible, but any order, transfer, cancellation, or withdrawal is rejected before it reaches Bitget. Ideal for safe exploration. (Mutually exclusive with --paper-trading.)

  • --paper-trading — Routes signed requests to Bitget's Demo Trading environment (adds the paptrading: 1 header). Requires a separate Demo API Key. Perfect for rehearsing strategies risk-free.

  • --modules <list> — Load only the modules you need. Default: account,trade,market. On-demand: strategy, cryptoloans, tax.

  • --surface <intent|full>intent (default) exposes the curated verbs. full additionally emits one tool per underlying v3 endpoint.


How an Agent Uses It

The intent surface is progressively discoverable. Rather than reading every schema up front, the agent follows discover → drill down → execute:

discover({})                                   → list business domains + meta-tools
discover({ domain: "trade" })                  → that domain's verbs, one line each
discover({ tool: "order" })                    → one verb's full input schema (+ its actions)
discover({ tool: "order", action: "place" })   → one action's exact required/optional contract
order({ action: "place", ... })                → execute

If the prompt already implies the verb and arguments, the agent skips discovery and calls directly. discover({ search: "funding" }) keyword-searches the whole surface when the domain is unknown. The two meta-tools are always present:

  • discover — progressive introspection of the surface.

  • raw — an escape hatch that reaches any v3 operation by operationId for the long tail. (In practice every operation is also covered by a verb, so raw is rarely needed.)

Write Safety

  • Ordinary writes execute immediately.

  • High-risk / irreversible operations (e.g. cancelAll, withdraw) return { confirmationRequired: true } unless you pass confirm: true.

  • Any write accepts dryRun: true to preview the would-send request without sending it.

MCP tool annotations are derived from the SDK's riskLevel (read / write / high), so hosts can flag destructive operations before the model invokes them.


Architecture

graph TD
    A[AI Host<br/>Claude Desktop / Cursor / …] -->|MCP over stdio| B[bitget-agent-mcp<br/>thin protocol adapter]
    B --> S[@bitget-ai/bitget-agent-sdk<br/>intent verbs · discover · raw<br/>write-safety gate · HMAC signing · retry]
    S -->|HMAC-SHA256 signed| C[Bitget UTA v3 REST API<br/>api.bitget.com]
    D[Environment Variables<br/>BITGET_API_KEY etc.] --> B
    style B fill:#f9f,stroke:#333,stroke-width:2px
    style C fill:#bbf,stroke:#333,stroke-width:2px

How it works:

  1. Your AI host launches the MCP server locally via npx over stdio — no network listener, no proxy.

  2. Credentials are passed as environment variables from your host's config; the server never stores, logs, or proxies them.

  3. All authenticated requests are signed in-process with HMAC-SHA256 and sent directly to Bitget's official API.

  4. Responses flow back through MCP to your AI conversation.

All the "smarts" — discovery, intent routing, the write-safety gate, signing, and response shaping — live in @bitget-ai/bitget-agent-sdk. This package is a thin stdio adapter on top of it.


Installation

Supported AI Hosts

AI Host

Status

Notes

Claude Desktop

First-class, via claude_desktop_config.json

Cursor

Default profile fits the 40-tool cap with room to spare

Continue

VS Code / JetBrains extension

ChatGPT Desktop

OpenAI's desktop client

Windsurf

Codeium's AI IDE

Any MCP client

Anything that speaks MCP over stdio

Step-by-Step Setup

1. Get Your API Key

  1. Log in to bitget.com

  2. Go to Profile → API Management

  3. Click Create API Key

  4. Enable Read and Trade permissions

  5. Copy the three values: API Key, Secret Key, Passphrase

⚠️ Security note: store these securely. Never share them or commit them to version control.

2. Configure your host

Use the one-step prompt, or add the server to your host's MCP config manually (see Configuration).

3. Verify

Ask your AI: "What Bitget tools are available?" You should see verbs like market, order, position, account_overview, plus discover and raw.


Configuration

Claude Desktop

Edit claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "bitget": {
      "command": "npx",
      "args": ["-y", "@bitget-ai/bitget-agent-mcp"],
      "env": {
        "BITGET_API_KEY": "your-api-key-here",
        "BITGET_SECRET_KEY": "your-secret-key-here",
        "BITGET_PASSPHRASE": "your-passphrase-here"
      }
    }
  }
}

Restart Claude Desktop after saving.

Cursor

Settings → MCP → Add New Server:

Field

Value

Command

npx

Args

-y @bitget-ai/bitget-agent-mcp

Env

BITGET_API_KEY, BITGET_SECRET_KEY, BITGET_PASSPHRASE

⚠️ Cursor tool limit: Cursor caps total MCP tools at 40 across all servers. The default Bitget profile loads 14 tools (12 intent verbs + discover + raw), leaving 26 slots for other servers. --modules all yields 16 tools.

Continue / Windsurf / ChatGPT Desktop / other MCP hosts

Use the same npx -y @bitget-ai/bitget-agent-mcp command and pass credentials via environment variables, following your tool's MCP configuration docs. If the host speaks MCP over stdio, it works.

Custom Configuration Examples

Read-only mode (safe for exploration):

{ "args": ["-y", "@bitget-ai/bitget-agent-mcp", "--read-only"] }

Paper trading (Demo environment — use Demo API keys):

{
  "args": ["-y", "@bitget-ai/bitget-agent-mcp", "--paper-trading"],
  "env": {
    "BITGET_API_KEY": "your-demo-api-key",
    "BITGET_SECRET_KEY": "your-demo-secret-key",
    "BITGET_PASSPHRASE": "your-demo-passphrase"
  }
}

Load extra modules:

{ "args": ["-y", "@bitget-ai/bitget-agent-mcp", "--modules", "account,trade,market,cryptoloans,tax"] }

CLI Options & Environment Variables

bitget-agent-mcp [options]

  --modules <list>     account, trade, market, strategy,
                       cryptoloans, tax
                       "all" loads every module.
                       Default: account,trade,market

  --surface <mode>     intent  curated verbs + discover + raw (default)
                       full    ALSO emit one tool per underlying v3 endpoint

  --read-only          Expose only read/query operations; block all writes.
  --paper-trading      Enable Demo Trading mode (requires a Demo API Key).
                       Mutually exclusive with --read-only.
  --help               Show help and exit
  --version            Show version and exit

Variable

Purpose

BITGET_API_KEY

Required for private endpoints

BITGET_SECRET_KEY

Required for private endpoints

BITGET_PASSPHRASE

Required for private endpoints

BITGET_API_BASE_URL

Optional API base URL (default https://api.bitget.com)

BITGET_TIMEOUT_MS

Optional request timeout in ms (default 15000)

BITGET_MAX_RETRIES

Optional max transport retries (default: SDK policy)

Without API credentials, only public/read (market data) operations succeed.

Modules & Intent Verbs

The default profile loads account,trade,market. The full set spans 6 modules and 14 curated intent verbs:

Module

Default

Intent verbs

Operations

market

market

16

trade

order, position, strategy_order

17

account

account_overview, account_config, repayment, transfer_funds, deposit, withdraw, funds_records, subaccount

39

strategy

on-demand

extends strategy_order (plan / TP-SL orders)

5

cryptoloans

on-demand

loan

11

tax

on-demand

tax

1

Always present regardless of module: discover (introspection) and raw (reach any v3 operation by operationId).


Security

Credential Protection

  • Never leaves your machine — API keys are read from environment variables only, never logged, written to disk, or proxied through any server.

  • Local signing — all authenticated requests are signed in-process with HMAC-SHA256 before connecting directly to Bitget's official API.

  • Runs locally over stdio — no network listener, no remote endpoint to harden, no telemetry.

Safety Modes

  • --read-only — blocks all write operations for the session; the AI can query but cannot place orders, transfer funds, cancel, or withdraw.

  • --paper-trading — routes signed requests to Bitget's Demo environment. No real funds involved. Requires a separate Demo API Key.

  • Write-safety gate — high-risk/irreversible operations require an explicit confirm: true, and any write supports dryRun: true for a no-network preview.

Rate Limiting

The SDK applies a client-side retry/rate-limit policy that protects against AI loops hammering Bitget's API. If Bitget returns a 429, it backs off and retries automatically.


Troubleshooting

"Command not found: npx"

Cause: Node.js not installed or not on PATH. Fix: install Node.js ≥ 20 from nodejs.org and restart your terminal/host.

"Authentication failed" or "Invalid API key"

Likely causes & fixes:

  1. API key lacks permissions → enable Read + Trade at API Management.

  2. Passphrase is wrong → copy all three values exactly as shown.

  3. Live keys used with --paper-trading (or vice versa) → use a Demo API Key for paper trading.

"Tool not recognized by AI"

Cause: MCP server not configured correctly, or the host wasn't restarted. Fix: validate the config file is valid JSON, restart the host completely, then ask "List available MCP tools."

Cursor shows fewer Bitget tools than expected

Cause: other MCP servers consuming Cursor's 40-tool cap. The Bitget default profile is 14 tools. Fix: remove unused MCP servers, or use --modules to load only what you need.

"Rate limit exceeded"

Cause: too many rapid calls. Fix: the SDK auto-throttles, but if you hit Bitget's server-side limit, wait ~60s before retrying. Avoid asking the AI to place hundreds of orders in quick succession.

MCP server won't start

Check: Node.js version (node --version ≥ 20), network reachability to api.bitget.com, and that outbound HTTPS isn't blocked by a firewall.


Updates

Because installation uses npx -y, the latest version is pulled automatically each time your AI host starts — no manual updates needed.

To force-refresh the npm cache:

npx @bitget-ai/bitget-agent-mcp@latest --version

To upgrade the whole Bitget AI toolkit at once, use the installer in agent_hub.


Package

Purpose

Best for

agent-cli

Terminal AI trading tool (bgc)

Claude Code, Codex CLI, shell-native agents

agent-skill

AI reasoning guide for the CLI

Teaching agents how to use bgc correctly

agent-sdk

TypeScript foundation SDK

Developers building custom integrations

bitget-signal

Market-analysis skills (no API key)

Macro, on-chain, sentiment, technical, news

agent_hub

Central ecosystem entry + installer

Overview of all Bitget AI tools


FAQ

What is bitget-agent-mcp?

It's the official MCP (Model Context Protocol) server for Bitget. It exposes 89 Bitget UTA v3 operations to desktop AI clients (Claude Desktop, Cursor, Windsurf, ChatGPT Desktop, …) through 14 curated intent verbs plus a discover introspection tool and a raw escape hatch — over the MCP standard.

How is this different from agent-cli?

  • bitget-agent-mcp — for desktop AI hosts that speak MCP (Claude Desktop, Cursor, …).

  • agent-cli (bgc) — for terminal AI (Claude Code, Codex CLI) that runs commands in your shell.

Both sit on the same SDK and expose the same intent surface — pick the one that matches your AI tool.

Why intent verbs instead of one tool per endpoint?

Endpoint-per-tool servers advertise one tool per endpoint, which bloats the model's context and degrades tool-selection accuracy. The intent surface keeps the default tool list at 14 tools (12 verbs + discover + raw) while still covering all 89 default-exposed operations directly — and raw reaches any operation by operationId when you need the long tail. The agent uses discover to drill into detail only when it needs to.

Which modules are loaded by default?

Default: account (39 ops), trade (17 ops), market (16 ops) = 72 operations, exposed through 12 intent verbs plus discover and raw (14 tools total). Load more with --modules strategy,cryptoloans,tax or --modules all (which reaches the 14 verbs across 89 endpoints).

Does Cursor have a tool limit?

Yes — Cursor caps total MCP tools at 40. The default Bitget profile loads 14 tools, well within the cap (26 slots free). --modules all yields 16 tools.

How do I prevent accidental orders?

Add "--read-only" to your config args. Every write operation is rejected for the session — the AI can query balances and markets but cannot place orders, transfer funds, cancel, or withdraw.

Can I test without risking real funds?

Yes — use paper trading: create a Demo API Key, set the Demo credentials as environment variables, and add "--paper-trading" to your args. Signed requests route to Bitget's Demo environment.

Is my API key safe?

Yes. Credentials live only in your host's MCP config, are never proxied through any server, are signed locally with HMAC-SHA256 before reaching Bitget, and are never logged or written to disk by this server.

Is it free?

Yes — MIT-licensed and free for personal and commercial use. The MCP server is maintained by Bitget at no cost.

What AI tools are supported?

Claude Desktop, Cursor, Continue, ChatGPT Desktop, Windsurf, and any MCP client that communicates over stdio transport.


Contributing

Issues and pull requests are welcome.

  • Report bugs / request features: GitHub Issues

  • Security issues: please report privately via GitHub's security advisory feature on the repository — do not open a public issue.


License

MIT License — free for personal and commercial use.


⚠️ Risk disclaimer: trading cryptocurrency carries substantial risk. You are solely responsible for any orders your AI agent places on your behalf. Use --read-only and --paper-trading to rehearse safely before going live. Past performance does not guarantee future results.

Official Bitget Agent Hub tool · Part of the Bitget open-source AI ecosystem · Foundation: agent-sdk · Other surfaces: agent-cli · agent-skill · Market signals: bitget-signal

Available Tools

14 tools
account_configA

[VERB] Account settings by intent: set account mode (basic/advanced), position holding mode (one-way/hedge), and leverage; switch account & fee-deduction; plus oiLimit / paymentCoins / switchStatus / deductInfo reads. (No standalone cross/isolated margin-mode switch in v3 — see setLeverage posSide for isolated.)

ParametersJSON Schema
NameRequiredDescriptionDefault
coinNoCoin filter where applicable.
modeNoAccount mode basic Basic mode advanced Advanced mode
viewNosummary (default) trims null fields to save tokens; full returns the untouched payload.
actionYesWhat to do — setAccountMode: switch account mode (basic/advanced) (needs: mode) | setHoldingMode: set position (one-way/hedge) mode (needs: holdMode) | setLeverage: set leverage (needs: category, leverage) | switchAccount: switch active account | switchDeduct: toggle fee deduction (needs: deduct) | switchStatus: current account-switch status | deductInfo: fee-deduction settings | oiLimit: open-interest limit (needs: symbol, category) | paymentCoins: eligible fee-payment coins.
deductNoIs it enabled on enabled off disabled
dryRunNoPreview a write without sending it.
fieldsNoOptional list (array or comma-separated string) of fields to keep on each returned row.
symbolNoTrading pair where the setting is per-symbol.
confirmNoRequired to execute destructive (high-risk) writes; without it such a call returns { confirmationRequired: true }.
posSideNoPosition side long/short This field is required to set leverage for isolated margin
categoryNoProduct category, e.g. USDT-FUTURES (leverage/oiLimit).
holdModeNoHolding mode one_way_mode This mode allows holding positions in a single direction, either long or short, but not both at the same time hedge_mode This mode allows holding both long and short positions simultaneously
leverageNoLeverage multiple
targetUidNoTarget account UID. If not provided, it defaults to the currently operated account. If a sub-account UID is provided, it indicates the master account is operating on the sub-account.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, and the description adds value by separating read actions (oiLimit, paymentCoins, switchStatus, deductInfo) from write/set actions. However, it does not disclose side effects, reversibility, or any confirmation requirements for writes. The description does not contradict annotations, but it also doesn't go beyond the basic read/write split.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, dense sentence that efficiently lists all action categories and includes a valuable parenthetical limitation. The '[VERB]' placeholder is a minor structural flaw, but the rest is well-packed with no redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 14 parameters and 9 distinct actions, the description provides a compact overview of all action groups and highlights a key limitation. The schema covers individual parameter semantics, so the description's role is to tie actions together, which it does. It could have mentioned the 'view' summary/full parameter or confirmation flow, but those are already in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is stated as 100%, so the baseline is 3. The description adds one meaningful cross-reference: the isolated margin note linking to setLeverage posSide. It also summarizes action-to-parameter relationships (e.g., 'setLeverage (needs: category, leverage)'), which the schema independently provides. No major added semantic beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly enumerates the tool's scope: setting account mode, holding mode, leverage, switching account/deduct, and reading oiLimit/paymentCoins/switchStatus/deductInfo. It distinguishes itself from sibling account_overview by covering configuration actions. However, it lacks a single strong verb due to the literal '[VERB]' placeholder, and the resource is phrased as 'Account settings by intent' rather than a direct verb+resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage context by grouping actions by intent and explicitly notes a non-supported operation: 'No standalone cross/isolated margin-mode switch in v3 — see setLeverage posSide for isolated.' This points to an alternative, satisfying the when-not/alternative guidance. It does not explicitly say when to prefer this tool over account_overview, but the action list gives clear context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

account_overviewA
Read-onlyIdempotent

[VERB] One-call account snapshot: fans out to assets, settings, funding assets, and (with category/symbol) positions and fee rate. Each section reports ok/error independently.

ParametersJSON Schema
NameRequiredDescriptionDefault
coinNoOptional coin filter for funding assets.
viewNosummary (default) trims null fields to save tokens; full returns the untouched payload.
fieldsNoOptional list (array or comma-separated string) of fields to keep on each returned row.
symbolNoWith category, also fetches the fee rate for this symbol.
categoryNoIf provided, also fetches current positions (and fee rate when symbol is given too).

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly, idempotent, non-destructive), the description discloses that the tool 'fans out' to multiple subresources and that 'Each section reports ok/error independently.' This is valuable behavioral context about partial failures. It does not mention pagination, rate limits, or response structure, but the safety profile is already covered by annotations, so the added disclosure merits a 4.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no fluff, but the literal '[VERB]' placeholder is a structural artifact that undermines clarity. The rest of the sentence is efficient, but the placeholder prevents a higher score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description carries responsibility for explaining return behavior. It mentions the sections and independent error reporting, but does not describe the structure of each section or the full response shape. For a tool with multiple optional parameters and no output schema, this is adequate but not comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% parameter description coverage, so the schema already explains the coin filter, view mode, fields, symbol, and category parameters. The tool description adds only marginal context by referencing 'with category/symbol' for positions and fee rate, which is already in the schema. This aligns with the baseline of 3 for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is a 'One-call account snapshot' that aggregates multiple account aspects (assets, settings, funding assets, positions, fee rate), which distinguishes it from sibling tools that focus on individual resources. The verb is implied by 'snapshot' and the scope is specific, though the leading '[VERB]' placeholder is a minor artifact. It does not explicitly name alternatives, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description conveys clear usage context: use this for a consolidated account overview in a single call. It also specifies conditional behavior ('with category/symbol') for including positions and fee rate. However, it does not explicitly state when to use an alternative tool or provide exclusion criteria, so it misses the top score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

depositC

[VERB] Deposits by intent: address (get a deposit address) | records (deposit history) | setupAccount.

ParametersJSON Schema
NameRequiredDescriptionDefault
coinNoCoin to deposit, e.g. USDT.
sizeNoDeposit Quantity - Only applies to BTC Lightning Network - Limit range: 0.000001 - 0.01.
viewNosummary (default) trims null fields to save tokens; full returns the untouched payload.
chainNoChain/network for the deposit address.
limitNoItems per page The default value is 20, and the maximum value is 100.
actionYesWhat to do — address: get a deposit address (needs: coin) | records: deposit history (needs: startTime, endTime) | setupAccount: configure the deposit account (needs: coin, accountType).
cursorNoCursor ID - Used for pagination to reduce query response time - Do not send for the initial query. When querying the second page and subsequent data, use the smallest orderId returned from the previous query. The results will return data less than that value
dryRunNoPreview a write without sending it.
fieldsNoOptional list (array or comma-separated string) of fields to keep on each returned row.
confirmNoRequired to execute destructive (high-risk) writes; without it such a call returns { confirmationRequired: true }.
endTimeNoQuery record end time<ul><li>Unix millisecond timestamp, e.g., 1690196141868</li></ul>
orderIdNoOrder ID - Used for specifying order queries.
fetchAllNoPaged reads only: walk the cursor to bounded completion (returns { items, pages, truncated }).
startTimeNoQuery record start time<ul><li>Unix millisecond timestamp, e.g., 1690196141868</li></ul>
accountTypeNoAccount type funding Funding account unified Unified account otc OTC account The current default is the funding account, and it can be modified to a unified account or an OTC account

TDQS

C2.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate non-read-only, non-idempotent, non-destructive behavior. The description adds no additional behavioral context, such as whether setupAccount modifies account state, whether records pagination is handled, or any side effects or prerequisites. It does not contradict annotations, but it also fails to enrich the agent's understanding beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely brief, but the inclusion of the literal '[VERB]' placeholder indicates an incomplete template. The pipe-separated list is not a coherent, well-structured description and fails to front-load a clear purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 15 parameters, three action modes, and no output schema, the description is inadequate. It does not explain the overall workflow, what setupAccount entails, or how deposit relates to funds_records or transfer_funds. The agent would have to rely entirely on the schema to understand usage, leaving significant gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters including the action enum with per-action requirements. The tool description merely lists intents without adding meaning beyond what the schema provides, so it meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description literally begins with '[VERB]' placeholder and the remaining text is a list of intents rather than a clear verb+resource statement. It provides some clarity by enumerating address, records, and setupAccount, but fails to articulate the tool's unified purpose or distinguish it effectively from sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, and no exclusion or preference context. The action parameter schema partially fills in per-action requirements, but the tool description itself does not help an agent decide when to call deposit over related tools like transfer_funds, funds_records, or withdraw.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discoverA
Read-onlyIdempotent

[META] Discover the tool surface. discover({}) lists domains; discover({ domain }) lists that domain's tools; discover({ tool }) returns one tool's full input schema for execution; discover({ search }) keyword-searches the whole surface.

ParametersJSON Schema
NameRequiredDescriptionDefault
toolNoReturn one tool's full input schema and metadata, ready to execute.
actionNoWith `tool`, drill into one action's exact contract: required vs optional params, each with type/enum/description. Action-routed verbs only.
domainNoList every tool in this domain, with one-line descriptions.
searchNoKeyword-search the surface (tool names, actions, fronts, descriptions); returns ranked matches with the tool to open next.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior. The description adds specific behavioral detail by stating exactly what each discovery call returns, including the no-argument case. There is no contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with semicolon-separated variants, effectively front-loading the meta nature and covering all four modes with zero waste. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite lacking an output schema, the description adequately explains the return behavior for each mode (domains, tools, schema, search results). Given that this is a lightweight meta-discovery tool, it fully covers what an agent needs to know to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so a baseline of 3 applies. The description elevates this by grouping parameters into distinct usage modes and clarifying the empty-call behavior, which the schema alone doesn't explicitly state. It adds a little semantic value beyond the schema, though not extensive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies this as a [META] tool to 'Discover the tool surface', with a specific verb and resource. It distinguishes itself from operational siblings by enumerating four explicit discovery modes: listing domains, listing domain tools, retrieving full tool schemas, and keyword searching.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance for each invocation variant (no args, domain, tool, search). Although it doesn't name alternatives, none of the sibling tools offer this introspection capability, so the usage context is unambiguous and complete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

funds_recordsC
Read-onlyIdempotent

[VERB] Funds history (read-only): financial ledger | convert records | main↔sub transfer records | transferableCoins.

ParametersJSON Schema
NameRequiredDescriptionDefault
coinNoCoin filter, e.g. USDT.
roleNoTransfer-out account type initiator Initiator of the transfer receiver Recipient of the transfer Default: initiator
typeNoType TRANSFER_IN/TRANSFER_OUT...... All enumeration values can be viewed under the Enumeration category.
viewNosummary (default) trims null fields to save tokens; full returns the untouched payload.
limitNoLimit per page Default:100. Maximum:100
actionYesWhat to do — financial: financial (bill) ledger (needs: category) | convert: convert history (needs: fromCoin, toCoin) | subTransfers: main↔sub transfer records | transferableCoins: coins eligible for transfer (needs: fromType, toType).
cursorNoCursor Pagination is implemented by omitting the cursor in the first query and applying the cursor from the previous query for subsequent pages
fieldsNoOptional list (array or comma-separated string) of fields to keep on each returned row.
subUidNoSub-account UID. If not provided, transfer records of the main account will be retrieved.
toCoinNoTo coin (target coin) It refers to the coin being converted into (received)
toTypeNoTo (target) account type spot Spot account/Funding account p2p P2P account/OTC account coin_futures Coin-M futures account usdt_futures USDT futures account usdc_futures USDC futures account crossed_margin Cross margin account isolated_margin Isolated margin account uta Unified trading account
endTimeNoRange end (ms epoch).
categoryNoProduct type SPOT Spot trading MARGIN Margin trading USDT-FUTURES USDT futures COIN-FUTURES Coin-M futures USDC-FUTURES USDC futures OTHER Other
fetchAllNoPaged reads only: walk the cursor to bounded completion (returns { items, pages, truncated }).
fromCoinNoFrom coin (source coin) It refers to the coin being converted
fromTypeNoFrom (source) account type spot Spot account/Funding account p2p P2P account/OTC account coin_futures Coin-M futures account usdt_futures USDT futures account usdc_futures USDC futures account crossed_margin Cross margin account isolated_margin Isolated margin account uta Unified trading account
clientOidNoclientOid,Cannot exceed 64 characters.
startTimeNoRange start (ms epoch).

TDQS

C2.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description's 'read-only' note is redundant. It adds some context by listing the data categories, but it does not disclose pagination behavior, response format, or other operational details. This is a marginal addition beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely brief, but it is not effectively concise because it contains a '[VERB]' placeholder and uses a cryptic pipe-separated list. The structure is under-specified and gives the impression of a template that was not completed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 18 parameters and no output schema, this one-line description is insufficient for an agent to understand how to invoke the tool correctly. It does not explain pagination, return values, or how to combine parameters for different actions. The schema descriptions help, but the tool-level description leaves significant gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% description coverage for all 18 parameters, so the description does not need to repeat parameter details. It does mirror the 'action' enum (financial, convert, subTransfers, transferableCoins) in its list, but this adds no new semantic value since the schema already explains each action. The description fails to provide any additional parameter-level guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource as funds history and enumerates the record types (financial ledger, convert, sub-transfers, transferable coins), which provides useful scope. However, it begins with a literal '[VERB]' placeholder instead of a concrete verb, making the action implied rather than explicit. It does not explicitly differentiate from sibling tools, but the category list gives some implicit distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives like account_overview or transfer_funds. The description merely states what the tool covers without any context on selection criteria or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

marketC
Read-onlyIdempotent

[VERB] Public market data: tickers, orderbook, candles, instruments, funding rate, open interest, recent fills, and reference reads (no credentials required).

ParametersJSON Schema
NameRequiredDescriptionDefault
coinNoCoin filter where applicable, e.g. USDT.
typeNoCandlestick type market, mark, index, premium. Default: market
viewNosummary (default) trims null fields to save tokens; full returns the untouched payload.
limitNoMax rows to return.
actionYesWhat to do — tickers: ticker snapshot for a category/symbol (needs: category) | orderbook: order book depth (needs: category, symbol) | candles: recent klines (needs: category, symbol, interval) | candlesHistory: historical klines (needs: category, symbol, interval) | instruments: tradable instrument metadata (needs: category) | fundingRate: current funding rate (needs: symbol) | fundingRateHistory: historical funding rates (needs: category, symbol) | openInterest: current open interest (needs: category) | openInterestLimit: open-interest limit (needs: category) | recentFills: recent public trades (needs: category, symbol) | positionTier: position/leverage tiers (needs: category) | discountRate: collateral discount rates | indexComponents: index price components (needs: symbol) | marginLoan: margin-loan reference data (needs: coin) | proofOfReserves: proof-of-reserves | riskReserve: risk reserve fund (needs: category, symbol).
cursorNoPage number Default: 1. Maximum: 100
fieldsNoOptional list (array or comma-separated string) of fields to keep on each returned row.
symbolNoTrading pair, e.g. BTCUSDT.
endTimeNoRange end (ms epoch) for candles/history.
categoryNoProduct category, e.g. SPOT or USDT-FUTURES.
intervalNoGranularity 1m,3m,5m,15m,30m,1H,4H,6H,12H,1D
startTimeNoRange start (ms epoch) for candles/history.
marginCoinNoMargin coin, It is required when the category is COIN-FUTURES

TDQS

C2.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description's main addition is 'no credentials required', which is a useful behavioral detail. This does not contradict any annotation, but it lacks depth about rate limits, pagination, or potential response size.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence but contains the placeholder '[VERB]', which is an incomplete structural artifact. This undermines usability and indicates a lack of finalization, despite the otherwise concise length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 13 parameters, 16 action options, and no output schema, the description is far too sparse. It lists data types (tickers, orderbook, candles, etc.) but does not explain how to choose actions, what the response structure looks like, or how view/limit affect output. The description fails to adequately cover the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the input schema already provides detailed descriptions for all parameters. The description itself adds no parameter-specific semantics, so it meets the baseline without going beyond.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a placeholder verb '[VERB]' instead of a specific action, making it unclear whether the tool fetches, lists, or queries data. The resource 'Public market data' is clear, but the lack of a proper verb reduces purpose clarity to a noun phrase rather than a command.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is given on when to use this tool versus siblings like 'order', 'position', or 'account_overview'. The only usage hint is 'no credentials required', which implies public data access but does not state exclusions or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

orderA

[VERB] Manage orders by intent: place/cancel/modify (single or batch via orders), cancelAll, countdownCancel, plus open/detail/history/fills reads. Writes honor dryRun/confirm/readOnly; cancelAll requires confirm.

ParametersJSON Schema
NameRequiredDescriptionDefault
qtyNoOrder size/quantity (the v3 API field name).
sideNobuy or sell.
viewNosummary (default) trims null fields to save tokens; full returns the untouched payload.
limitNoLimit per page Default:100. Maximum:100
priceNoOrder price (limit orders).
actionYesWhat to do — place: place an order (needs: category, symbol, qty, side, orderType) | cancel: cancel an order | modify: modify an order | cancelAll: cancel all orders (destructive) (needs: category) | countdownCancel: dead-man's-switch auto-cancel (needs: countdown) | open: list open orders | detail: one order's detail | history: historical orders (needs: category) | fills: fill history | maxOpen: max openable size (needs: category, symbol, orderType, side). Pass `orders` to batch place/cancel/modify.
cursorNoCursor Pagination is implemented by omitting the cursor in the first query and applying the cursor from the previous query for subsequent pages
dryRunNoPreview the write without sending it.
fieldsNoOptional list (array or comma-separated string) of fields to keep on each returned row.
ordersNoArray of order/cancel/modify objects. When present, place/cancel/modify route to the batch endpoint automatically.
symbolNoTrading pair, e.g. BTCUSDT.
confirmNoRequired to execute cancelAll (destructive).
endTimeNoEnd timestamp A Unix timestamp in milliseconds e.g.,1597026383085
orderIdNoTarget order id for cancel/modify/detail.
posSideNoPosition side long/short This field is required in hedge-mode position. Available only for futures
stpModeNoSTP Mode(Self Trade Prevention) none: not setting STP(default) cancel_taker: cancel taker order cancel_maker: cancel maker order cancel_both: cancel both of taker and maker orders
categoryNoProduct category, e.g. SPOT or USDT-FUTURES.
fetchAllNohistory/fills only: walk the cursor to bounded completion (returns { items, pages, truncated }).
stopLossNoPreset Stop-Loss Trigger Price
clientOidNoIdempotency key. Auto-generated for a single `place` when omitted (P7).
countdownNoReconnect Window - Unit: seconds - Positive integer, range: [5, 60]. The minimum countdown is 5 second, and the maximum is 60 seconds. Filling in 0 cancels the countdown order cancellation function.
orderTypeNolimit or market.
startTimeNoStart timestamp A Unix timestamp in milliseconds e.g.,1597026383085
autoCancelNoWill the original order be canceled if the order modification fails yes: Cancel no: Not cancel(default)
reduceOnlyNoReduce-only identifier yes/no, default no; yes indicates that your position may only be reduced in size upon the activation of this order
takeProfitNoPreset Take-Profit Trigger Price
slOrderTypeNoStop-Loss Trigger Strategy Order Type limit: Limit Order market: Market Order
slTriggerByNoPreset Stop-Loss Trigger Type market: Market Price mark: Mark Price If not filled in, the default value is market price Note: This field is only valid for the contract business lines: USDT-Futures, COIN-Futures, and USDC-Futures
timeInForceNoTime in force ioc Immediate or cancel. It must be executed immediately, with any unfilled portion canceled. fok Fill or kill. It must be fully executed immediately, or it is canceled entirely. gtc Good 'til canceled. It remains active until it is either filled or manually canceled. post_only Post only. It will only be added to the order book as a maker. This field is required when orderType is limit. If omitted, it defaults to gtc
tpOrderTypeNoTake-Profit Trigger Strategy Order Type limit: Limit Order market: Market Order
tpTriggerByNoPreset Take-Profit Trigger Type market: Market Price mark: Mark Price If not specified, the default value is market price Note: This field is only valid for the contract business lines: USDT-Futures, COIN-Futures, and USDC-Futures.
slLimitPriceNoStop-Loss Strategy Order Execution Price This field is only valid for limit orders (when slOrderType=limit); it is ignored for market orders.
tpLimitPriceNoTake-Profit Strategy Order Execution Price This field is only valid for limit orders (when tpOrderType=limit); it is ignored for market orders.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations, the description discloses important behaviors: writes honor dryRun/confirm/readOnly, and cancelAll requires confirm. This adds context about safety gates and destructive actions. The mention of reads clarifies which actions are non-mutating.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, two sentences, and front-loaded with the core purpose. The list of actions is necessary. Minor penalty for the '[VERB]' placeholder artifact and the mention of 'readOnly' which is not in the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite 33 parameters and no output schema, the description provides only a high-level overview. It lacks information about return values or per-action output expectations. The schema covers parameter details, but the description doesn't explain what the agent should expect from open/detail/history/fills.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds semantics for the `orders` parameter (batch) and the confirm requirement for cancelAll, which goes beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool manages orders, listing specific actions such as place/cancel/modify, batch support, cancelAll, countdownCancel, and read operations. This is a specific verb+resource that distinguishes it from sibling tools like strategy_order, market, and position.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for order management but does not explicitly state when to use this tool versus alternatives, nor does it mention exclusions or alternative tools. The list of operations gives context, but no sibling differentiation is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

positionB

[VERB] Positions by intent: info (current) | history | adlRank | close (ONE position by symbol, at market) | closeAll (every position in a category). close & closeAll are destructive and require confirm; reads are normalized and history paginates.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNosummary (default) trims null fields to save tokens; full returns the untouched payload.
limitNoLimit per page Default:100. Maximum:100
actionYesWhat to do — info: current positions (needs: category) | history: historical positions (needs: category) | adlRank: ADL ranking | close: close ONE position by symbol, at market (destructive) (needs: category) | closeAll: close ALL positions in a category, at market (destructive) (needs: category).
cursorNoCursor Pagination is implemented by omitting the cursor in the first query and applying the cursor from the previous query for subsequent pages
dryRunNoPreview a close/closeAll without sending it.
fieldsNoOptional list (array or comma-separated string) of fields to keep on each returned row.
symbolNoOptional symbol filter, e.g. BTCUSDT.
confirmNoRequired to execute close/closeAll (destructive market close).
endTimeNoEnd timestamp A Unix timestamp in milliseconds e.g.,1597026383185 The time range between startTime and endTime must not exceed 30 days
posSideNoPosition side filter (long/short).
categoryNoProduct category, e.g. USDT-FUTURES (required by info/history).
fetchAllNohistory only: walk the cursor to bounded completion.
startTimeNoStart timestamp A Unix timestamp in milliseconds e.g.,1597026383085 The access window is 90 days

TDQS

B3/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explicitly states that close and closeAll are destructive and require confirm, which directly contradicts the annotation destructiveHint=false. This is a serious inconsistency, earning a score of 1. The additional mentions of normalized reads and pagination are helpful but do not override the contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, dense sentence that quickly lists the main action categories and key caveats. It is appropriately sized and front-loaded, but the '[VERB]' placeholder feels incomplete and slightly detracts from an otherwise concise structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's 13 parameters, lack of output schema, and only moderate annotation coverage, the description gives a solid overview but omits several operational details (e.g., fetchAll, view, fields). It covers the core actions and destructive requirements, but more context about pagination behavior and parameter interdependencies would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds marginal context beyond the schema, such as 'reads are normalized' and 'history paginates', but the action descriptions in the schema already explain the parameter semantics in detail. The description does not significantly reduce ambiguity about the 13 parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool acts on positions by intent, enumerating specific actions (info, history, adlRank, close, closeAll) and clarifying that close targets one symbol while closeAll targets a whole category. This distinguishes it from siblings like order or account_overview, though the placeholder '[VERB]' is slightly unpolished.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context on when to use it (e.g., for position management) and warns that close/closeAll are destructive and require confirmation. However, it doesn't explicitly mention alternatives or exclusions, such as 'for placing orders, use order' — making the guidance implied rather than fully explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rawA
Read-onlyIdempotent

[RAW] Escape hatch — invoke any v3 operation by operationId. Bypasses the curated surface but reuses signing, rate limiting, error decoding, AND the safety gate: honors readOnly, supports dryRun preview, and high-risk ops still require confirm.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsNoFlat argument record forwarded verbatim to callOperation (path params, query, and/or body fields).
dryRunNoPreview the request (method, path, would-send body) without sending it. Works even in readOnly.
confirmNoRequired to execute a high-risk (destructive/irreversible) operation — e.g. closeAllPositions, cancelAllOrders, withdrawal. Ignored for non-high-risk ops.
operationIdYesCatalog operationId to invoke (e.g. getTickers, placeOrder). See the generated catalog for valid ids.

TDQS

A3.6/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description states it can invoke any operation, including high-risk destructive ones like withdrawal, but the annotations declare readOnlyHint=true and destructiveHint=false. This directly contradicts the annotations, making the tool's safety profile misleading. The description does add nuance about the safety gate, but that cannot reconcile the fundamental contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, dense sentence that front-loads the core purpose ('[RAW] Escape hatch') and packs in essential safety behaviors without unnecessary fluff. Every phrase earns its place, maintaining high information density.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an open-ended escape hatch, the description covers the essential usage (operationId, args, dryRun, confirm) and notes that valid IDs are in a generated catalog. It lacks details about return format or error handling, but given the tool is generic, it is reasonably complete. The contradiction with annotations is a notable gap that could confuse agents.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters (args, dryRun, confirm, operationId) are already documented. The description adds minimal extra parameter-level value (e.g., dryRun works even in readOnly), but the baseline of 3 applies since the schema carries the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool invokes any v3 operation by operationId, positioning it as an escape hatch that bypasses the curated surface. It uses a specific verb ('invoke') and resource ('any v3 operation'), distinguishing it from curated sibling tools that target specific endpoints.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it ('Bypasses the curated surface') and mentions the safety gate (dryRun, confirm for high-risk ops), giving context for appropriate usage. However, it does not explicitly say 'use when no sibling covers your operation' or provide exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

repaymentA

[VERB] Repay account liabilities: submit a repayment, or list repayable coins/amounts.

ParametersJSON Schema
NameRequiredDescriptionDefault
coinNoCoin to repay, e.g. USDT.
viewNosummary (default) trims null fields to save tokens; full returns the untouched payload.
actionYesWhat to do — submit: repay a liability (needs: repayableCoinList, paymentCoinList) | repayable: list repayable coins/amounts.
amountNoAmount to repay.
dryRunNoPreview a write without sending it.
fieldsNoOptional list (array or comma-separated string) of fields to keep on each returned row.
confirmNoRequired to execute destructive (high-risk) writes; without it such a call returns { confirmationRequired: true }.
paymentCoinListNoPayment coin list
repayableCoinListNoRepayable coin list

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already set readOnlyHint=false, indicating a write operation, so the description doesn't need to restate that. It does add behavioral context by enumerating two possible actions (submit and list), which shapes expectations. However, it does not disclose details like confirmation requirements or dry-run behavior beyond what the schema provides.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, very concise and front-loaded with the core purpose. However, the literal '[VERB]' prefix is an artifact that should have been replaced, and the structure could be slightly cleaner without it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 9 parameters and no output schema, yet the description is minimal. It does not explain return values, how the two modes differ in response, or how parameters like confirm, dryRun, and lists interact. Given the complexity, the description is insufficient for an agent to fully understand the tool's behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All 9 parameters have descriptions in the schema (coverage 100%), so the baseline is 3. The description itself adds little parameter-level meaning, but it does reinforce the split between 'submit' and 'repayable' actions, which aligns with the action parameter enum.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('repay') and resource ('account liabilities'), and clearly distinguishes between two modes: submitting a repayment or listing repayable coins/amounts. This differentiates it from sibling tools like deposit or withdraw, which handle funding or withdrawals.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool—when you need to repay liabilities—but does not explicitly mention alternatives or exclusions. The two modes ('submit' vs 'repayable') give hints on sub-usage, but there is no direct comparison to sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

strategy_orderA

[VERB] Strategy (trigger/plan) orders by intent: place | cancel | modify | open (unfilled) | history. Writes honor dryRun/confirm/readOnly.

ParametersJSON Schema
NameRequiredDescriptionDefault
qtyNoOrder Quantity This is a required field when tpslMode=partial, and the unit is in the base coin
typeNoStrategy Type tpslTake-Profit and Stop-Loss Default:tpsl
viewNosummary (default) trims null fields to save tokens; full returns the untouched payload.
limitNoLimit per page Default:100. Maximum:100
actionYesWhat to do — place: create a strategy order (needs: category, symbol, qty, posSide) | cancel: cancel a strategy order (needs: orderId) | modify: modify a strategy order (needs: orderId, qty) | open: list unfilled strategy orders (needs: category) | history: strategy order history (needs: category).
cursorNoCursor Pagination is implemented by omitting the cursor in the first query and applying the cursor from the previous query for subsequent pages
dryRunNoPreview a write without sending it.
fieldsNoOptional list (array or comma-separated string) of fields to keep on each returned row.
symbolNoTrading pair, e.g. BTCUSDT.
confirmNoRequired to execute destructive (high-risk) writes; without it such a call returns { confirmationRequired: true }.
endTimeNoEnd timestamp A Unix timestamp in milliseconds e.g.,1597026383085
orderIdNoTarget strategy order id for cancel/modify.
posSideNoPosition side long/short
categoryNoProduct category, e.g. USDT-FUTURES.
fetchAllNoPaged reads only: walk the cursor to bounded completion (returns { items, pages, truncated }).
stopLossNoStop-Loss Trigger Price
tpslModeNoTake-Profit and Stop-Loss Mode fullAll Positions Take-Profit and Stop-Loss partialPartial Position Take-Profit and Stop-Loss If left blank, the default value is full
clientOidNoIdempotency key. Auto-generated for `place` when omitted (P7).
startTimeNoStart timestamp A Unix timestamp in milliseconds e.g.,1597026383085
takeProfitNoTake-Profit Trigger Price
slOrderTypeNoStop-Loss Trigger Strategy Order Type limit: Limit Order market: Market Order If not filled in, the default value is market price
slTriggerByNoStop-Loss Trigger Type market: Market Price mark: Mark Price If not filled in, the default value is market price
tpOrderTypeNoTake-Profit Trigger Strategy Order Type limit: Limit Order market: Market Order If not filled in, the default value is market price
tpTriggerByNoTake-Profit Trigger Type market: Market Price mark: Mark Price If not specified, the default value is market price
slLimitPriceNoStop-Loss Strategy Order Execution Price This field is only valid for limit orders (when slOrderType=limit); it is ignored for market orders
tpLimitPriceNoTake-Profit Strategy Order Execution Price This field is only valid for limit orders (when tpOrderType=limit); it is ignored for market orders.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, and the description usefully adds that writes honor dryRun/confirm/readOnly, clarifying preview and confirmation behavior for a mutation-capable tool. It does not disclose response shapes, error semantics, or auth requirements, but the added safety-flag context goes beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise and front-loaded with the core intents, with zero filler. The '[VERB]' placeholder is an unnecessary artifact, but for a tool with 26 parameters, this brevity keeps the most important information accessible.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (26 parameters, no output schema), the description is thin: it names intents and safety behavior but does not explain return-value conventions, how to map actions to required parameters, or pagination behavior. The schema's rich per-parameter descriptions partially compensate, making it minimally viable but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage for parameters is 100%, and each parameter already has detailed descriptions and enums, including action-specific remarks in the 'action' parameter. The tool description itself adds no parameter-level information beyond listing high-level intents, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the resource as strategy (trigger/plan) orders and enumerates the five distinct intents (place, cancel, modify, open, history), which clearly distinguishes it from sibling tools like 'order'. The literal '[VERB]' placeholder is a formatting flaw, but the action list makes the purpose specific and actionable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implicitly scopes the tool to strategy trigger/plan orders versus normal orders, and the 'writes honor dryRun/confirm/readOnly' note gives some operational context. However, it never explicitly states when to prefer this tool over a sibling like 'order' or 'market', nor does it list exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

subaccountC

[VERB] Sub-accounts by intent: create | createAgent | list | freeze | assets | API keys (apiKeys/createApiKey/modifyApiKey/deleteApiKey) | depositAddress | depositRecords.

ParametersJSON Schema
NameRequiredDescriptionDefault
ipsNoWithdrawal Whitelist IP Multiple IP addresses are supported A maximum of 30 IPs can be bound to a single key Only supports IPv4
coinNoCoin filter for deposit reads.
noteNoNote, cannot exceed 50 characters.
sizeNoDeposit Quantity - Only applies to BTC Lightning Network - Limit range: 0.000001 - 0.01.
typeNoPermission Type read_write Read/Write read_only Read-only
viewNosummary (default) trims null fields to save tokens; full returns the untouched payload.
chainNoChain Name - The chain name can be obtained using the Get Currency Information API.
limitNoItems per page The default value is 100, and the maximum value is 100.
actionYesWhat to do — create: create a sub-account (needs: username) | createAgent: create an Agent (broker) sub-account: username + passphrase (+ note) | list: list sub-accounts | freeze: freeze/unfreeze a sub-account (needs: subUid, operation) | assets: sub-account unified assets | apiKeys: list a sub-account's API keys (needs: subUid) | createApiKey: create a sub-account API key (needs: subUid, note, type, passphrase, permissions, ips) | modifyApiKey: modify a sub-account API key (needs: apikey, passphrase) | deleteApiKey: delete a sub-account API key (needs: apikey) | depositAddress: sub-account deposit address (needs: subUid, coin) | depositRecords: sub-account deposit history.
apikeyNoSub-account API Key
cursorNoCursor ID Used for pagination. Do not pass it for the first query. For subsequent queries (second page and beyond), use the cursor returned from the previous query.
dryRunNoPreview a write without sending it.
fieldsNoOptional list (array or comma-separated string) of fields to keep on each returned row.
subUidNoTarget sub-account uid.
confirmNoRequired to execute destructive (high-risk) writes; without it such a call returns { confirmationRequired: true }.
endTimeNoQuery parameter endTime.
fetchAllNoPaged reads only: walk the cursor to bounded completion (returns { items, pages, truncated }).
usernameNoGenerate a virtual email address username. It can only contain lowercase letters and cannot exceed 20 characters.
operationNoOperation Type: freeze Freeze unfreeze Unfreeze |
startTimeNoQuery parameter startTime.
passphraseNoBody field passphrase.
accountModeNoSub-account Mode classic Classic Account Sub-account unified Unified Account Sub-account
permissionsNopermission values <ul><li>Unified Account Permissions: uta_mgt Unified Account Management uta_trade Unified Account Trading </li></ul>

TDQS

C2.2/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations declare destructiveHint=false, yet the description exposes actions like deleteApiKey and freeze, which are high-risk/destructive operations. This is a direct contradiction. The description also fails to mention side effects, confirmation requirements, or rate limits, so behavioral traits are not transparently disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only one line and compact, but it is a pipe-separated fragment beginning with the placeholder '[VERB]'. It is under-specified and lacks a well-formed, front-loaded summary; this is more an incomplete scaffold than a concise, polished description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 23-parameter, multi-action tool with no output schema, the description is too thin: it omits return shapes, pagination behavior, confirmation semantics, and broader operational context. Although the schema provides detailed parameter descriptions, the top-level description does not adequately orient an agent for a tool of this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with 23 parameters, and the action parameter provides especially rich semantics, mapping each action to its required fields. The top-level description adds nothing beyond the schema, but the baseline of 3 applies because the schema carries the parameter-documentation burden effectively.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description lists sub-account intents (create, list, freeze, assets, apiKeys, depositAddress, depositRecords) and makes the domain clear, but it lacks an explicit verb and starts with the placeholder '[VERB]'. It communicates that the tool handles sub-account operations but does not clearly differentiate from sibling account-related tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives such as account_overview, transfer_funds, or deposit. The action list implies sub-account management, but there are no explicit exclusions, prerequisites, or recommendations for when a sibling tool would be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transfer_fundsB

[VERB] Move funds by intent: action internal | mainToSub | subToMain. preflight reports max transferable without moving anything; transfers honor dryRun/readOnly.

ParametersJSON Schema
NameRequiredDescriptionDefault
coinNoCoin to move, e.g. USDT.
viewNosummary (default) trims null fields to save tokens; full returns the untouched payload.
actionYesWhat to do — internal: UTA↔classic, same user (needs: fromType, toType, amount, coin) | mainToSub: main → sub-account (needs: fromType, toType, amount, coin, fromUserId, toUserId, clientOid) | subToMain: sub → main account (needs: fromType, toType, amount, coin). preflight reports max transferable without moving funds.
amountNoAmount to transfer.
dryRunNoPreview the transfer without sending it.
fieldsNoOptional list (array or comma-separated string) of fields to keep on each returned row.
symbolNoSymbol (internal isolated-margin transfers).
toTypeNoDestination account type.
fromTypeNoSource account type.
toUserIdNoDestination uid (mainToSub).
clientOidNoIdempotency key. Auto-generated for sub-account transfers when omitted (P7).
preflightNoIf true, return the max transferable amount for `coin` WITHOUT transferring.
fromUserIdNoSource uid (mainToSub).

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description reveals that preflight performs no funds movement and that transfers honor dryRun/readOnly, which is valuable safety-relevant behavior. It does not mention authentication needs or response details, but adds meaningful context not present in the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence and not verbose, but it includes the placeholder '[VERB]' which wastes words and reads as an unfinished template. The sentence structure is tight but the artifact prevents a higher score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 13 parameters and no output schema, the description is too sparse. It does not explain the overall transfer workflow, required fields for each action, return values, error conditions, or account type prerequisites. The preflight note is helpful but insufficient for a tool of this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of parameters with descriptions, so the baseline is 3. The tool description doesn't add parameter-level meaning; its mention of preflight and dryRun relates to behaviors already covered by the schema. No extra semantics are provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool moves funds and enumerates the three action intents (internal, mainToSub, subToMain), which distinguishes it from sibling tools like withdraw or deposit. However, the literal '[VERB]' placeholder is an artifact that slightly detracts from professionalism, so it’s a strong but not perfect purpose statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by listing the three action types and mentions preflight for checking without transferring. It does not explicitly contrast with alternatives like withdraw/deposit for external moves, nor does it state when not to use this tool. Guidance is present but implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

withdrawA

[VERB] Withdrawals by intent: submit (send funds out — irreversible, needs confirm) | records (withdrawal history).

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoAddress Tag This is required for withdrawals of certain cryptocurrencies, like EOS.
coinNoCoin to withdraw, e.g. USDT.
sizeNoWithdrawal Quantity Special Notes for Bitcoin Lightning Network Withdrawals: This parameter must exactly match the amount on the Bitcoin Lightning Network deposit invoice; The withdrawal quantity for Bitcoin Lightning Network represents the amount received, excluding fees; The quantity precision can be obtained via the "Get Currency Information" API
viewNosummary (default) trims null fields to save tokens; full returns the untouched payload.
chainNoChain/network for the withdrawal.
limitNoItems per page The default value is 20, and the maximum value is 100.
actionYesWhat to do — submit: submit a withdrawal (irreversible) (needs: coin, transferType, address, size) | records: withdrawal history (needs: startTime, endTime).
amountNoAmount to withdraw.
cursorNoCursor ID - Used for pagination to reduce query response time - Do not send for the initial query. When querying the second page and subsequent data, use the smallest orderId returned from the previous query. The results will return data less than that value
dryRunNoPreview a write without sending it.
fieldsNoOptional list (array or comma-separated string) of fields to keep on each returned row.
remarkNoRemark
addressNoDestination address.
confirmNoRequired to execute destructive (high-risk) writes; without it such a call returns { confirmationRequired: true }.
endTimeNoQuery record end time<ul><li>Unix millisecond timestamp, e.g., 1690196141868</li></ul>
orderIdNoorder ID - Either clientOid or orderId must be provided. If both are present or do not match, orderId will take priority
areaCodeNoArea Code This parameter is required when innerToType = mobile
fetchAllNoPaged reads only: walk the cursor to bounded completion (returns { items, pages, truncated }).
lastNameNoLast Name Fill in this parameter when identity=user
clientOidNoIdempotency key. Auto-generated for `submit` when omitted (P7).
firstNameNoFirst Name Fill in this parameter when identity=user
startTimeNoQuery record start time<ul><li>Unix millisecond timestamp, e.g., 1690196141868</li></ul>
memberCodeNoMember Code bithumb korbit coinone
companyNameNoCompany Name Fill in this parameter when identity=company
innerToTypeNoInternal Withdrawal Address Type uidUser ID email Email mobile Mobile phone number - If not filled, the default value is uid
identityTypeNoIdentity Type companyInstitutional Company user Individual User
transferTypeNoWithdrawal Type on_chainOn-chain deposit internal_transferInternal transfer

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnlyHint=false, idempotentHint=false), the description adds that submit is 'irreversible' and 'needs confirm', and that records is the history view. This gives important behavioral warnings not present in the annotations. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence that conveys the core operation split. The '[VERB]' placeholder is a minor flaw, but otherwise every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 27 parameters and two intents, the description provides a high-level map of behavior and key requirements. The schema handles detailed parameter semantics, so the description's brevity is acceptable, though it could mention confirm more.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description groups required parameters by intent ('submit needs...', 'records needs...'), which is not obvious from the flat schema. Since schema coverage is 100%, this grouping adds practical semantic value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the tool as 'Withdrawals' and distinguishes two intents: 'submit' for sending funds out and 'records' for history. This clearly separates it from sibling tools like deposit and transfer_funds, and the resource is explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description tells the agent when to use each intent: 'submit' requires coin, transferType, address, size; 'records' requires startTime, endTime. It also warns that submit is irreversible and needs confirmation, which is key usage context. It does not explicitly name alternative tools, but the intent split provides sufficient guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 14 tool updatesv3.0.0
    • First observedaccount_config
    • First observedaccount_overview
    • First observeddeposit
    • First observeddiscover
    • First observedfunds_records
    • First observedmarket
    • First observedorder
    • First observedposition
    • First observedraw
    • First observedrepayment
    • First observedstrategy_order
    • First observedsubaccount
    • First observedtransfer_funds
    • First observedwithdraw

TDQS

A3.5/5.0
Disambiguation5/5

Each tool targets a distinct domain (orders, strategy orders, market data, positions, account, etc.) with clear intent-based parameters. No two tools appear to perform the same function; even the similar 'order' and 'strategy_order' are clearly separated by description. The presence of 'raw' and 'discover' as meta-tools further disambiguates the surface.

Naming Consistency5/5

All tool names follow a consistent lowercase_with_underscores convention, using simple domain nouns (order, market, position, deposit, withdraw). There is no mixing of camelCase or different verb styles, and the naming makes the purpose of each tool immediately clear.

Tool Count5/5

With 14 tools, the set is well-scoped for a comprehensive exchange trading agent. Each tool meaningfully encapsulates a group of related operations (e.g., order handles many order actions), so the count feels neither bloated nor thin. The inclusion of raw and discover as utilities justifies the count without introducing redundancy.

Completeness5/5

The tool set covers the full trading lifecycle: order placement/modification/cancellation/reads, positions, market data, account settings and overview, funding movements (transfer, deposit, withdraw, repayment), and subaccount management. Even potential gaps like specific account configs are addressed with clear workarounds, and the raw tool fills any remaining endpoint gaps.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    A comprehensive MCP server providing full access to Bybit's v5 API for real-time market data, trading operations, and account management. It enables AI assistants to execute trades, manage positions, and monitor wallet balances with built-in safety controls for both testnet and production environments.
    22
    6
    -
  • A
    license
    Not graded
    quality
    F
    maintenance
    The official Bitget MCP (Model Context Protocol) server. Gives AI assistants direct, real-time access to the Bitget exchange through natural language.
    30
    223
    MIT
  • A
    license
    C
    quality
    D
    maintenance
    MCP server for Bybit exchange enabling 246 tools for trading, market data, account management, and more via natural language.
    100
    2
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Official MCP server for interacting with Saudi market data (Sahmk) via natural language queries, enabling stock quotes, company info, and market summaries inside AI agents like Cursor and Claude Desktop.
    15
    12
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Bitget-AI/agent-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server