Skip to main content
Glama

@qbtlabs/openmm-mcp

npm version npm downloads License: MIT Ask DeepWiki

📚 文档 · 🤖 AI 技能门户 · 🔌 API 参考

OpenMM 的 MCP 服务器 —— 通过任何 MCP 客户端向 AI 代理提供市场数据、账户、交易和策略工具。

两种使用方式

选项

适用场景

API 密钥

支付

本地 (npm)

完全控制,使用自己的密钥

加密保险库

免费

托管 (mcp.openmm.io)

无需设置,按需付费

公共数据无需密钥

x402 USDC


Related MCP server: polymarket-trader-mcp

本地设置

先决条件: Node.js 20 或更高版本。

1. 安装与配置

npm install -g @qbtlabs/openmm-mcp
openmm-mcp --setup

设置向导会为您的客户端(Claude Desktop、Claude Code、Cursor、Windsurf)写入正确的 MCP 配置。配置文件中不会存储任何凭据 —— 仅存储套接字路径。

2. 初始化加密保险库

openmm-init

这将在 ~/.openmm/vault.enc 处创建一个加密保险库,其中包含您的钱包密钥和交易所 API 凭据。您将设置密码、生成(或导入)钱包,并可选择添加交易所密钥。

3. 启动服务器

openmm serve

输入一次您的保险库密码。统一套接字将在 /tmp/openmm.sock 启动 —— 所有 MCP 客户端都连接到此处。任何配置文件中都不会存在凭据。

手动配置

如果您更喜欢直接编辑配置文件而不是使用 --setup

客户端

配置文件

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json

Claude Code

~/.claude.json

Cursor

.cursor/mcp.json

Windsurf

~/.codeium/windsurf/mcp_config.json

{
  "mcpServers": {
    "openmm": {
      "command": "node",
      "args": ["/path/to/openmm-mcp/dist/index.js"],
      "env": {
        "MCP_TRANSPORT": "stdio",
        "OPENMM_SOCKET": "/tmp/openmm.sock",
        "PAYMENT_SERVER": "https://mcp.openmm.io",
        "X402_TESTNET": "true"
      }
    }
  }
}

/path/to/openmm-mcp 替换为实际的安装路径。对于 Claude Desktop,请使用 node 的完整路径(例如通过 which node 获取),以避免 nvm/PATH 问题。

提示: 请改用 openmm-mcp --setup —— 它会自动写入正确的绝对路径。

没有 API 密钥。没有私钥。没有密码。只有套接字路径。

无保险库模式(快速启动)

您可以跳过保险库,直接在 env 块中传递 API 密钥:

{
  "mcpServers": {
    "openmm": {
      "command": "npx",
      "args": ["@qbtlabs/openmm-mcp"],
      "env": {
        "MEXC_API_KEY": "your_key",
        "MEXC_SECRET": "your_secret"
      }
    }
  }
}

保险库增强了每一种场景的安全性 —— 任何配置文件、进程环境或客户端内存中都不会存在敏感信息。

客户端兼容性

客户端

无保险库

有保险库

Claude Desktop

环境中的 API 密钥

OPENMM_SOCKET

Claude Code

环境中的 API 密钥

OPENMM_SOCKET

Cursor

环境中的 API 密钥

OPENMM_SOCKET

Windsurf

环境中的 API 密钥

OPENMM_SOCKET

所有客户端都连接到同一个运行中的 openmm serve —— 一个保险库,一个套接字,适用于任何客户端。


带有 x402 支付的托管服务器

连接到 mcp.openmm.io —— 公共数据无需本地安装。 使用 Base 链上的 USDC 按工具调用次数付费。

工作原理

AI Agent (Claude / Cursor / Windsurf)
│  MCP stdio — no keys in config
▼
MCP Client Process
(reads OPENMM_SOCKET — credentials never here)
│  Unix socket /tmp/openmm.sock (mode 0600)
▼
openmm serve — unified vault process
┌──────────────────────────────────┐
│  ~/.openmm/vault.enc             │
│  AES-256-GCM + PBKDF2           │  ← wallet key + exchange keys, one vault
│            │                     │
│  Policy Engine                   │  ← maxPerTx, maxPerDay, allowedChains
│  (checked before key is touched) │
│            │                     │
│  signAndWipe()                   │  ← key used inline, wiped from memory
└──────────────────────────────────┘
│  EIP-3009 signature only
▼
mcp.openmm.io → x402 verification → Base L2 settlement

安全属性

属性

实现方式

静态密钥加密

~/.openmm/vault.enc 中的 AES-256-GCM + PBKDF2

密钥从不进入客户端内存

MCP 进程仅持有套接字路径

配置文件中无密钥

配置中没有任何 API 密钥或私钥

进程隔离

签名发生在 openmm serve 中,而非 AI 代理进程中

策略执行

在访问私钥前检查支出限额

内存安全

signAndWipe() —— 密钥仅使用一次,随后立即超出作用域

支付流程

  1. 代理调用工具

  2. 服务器返回 402 Payment Required 及价格

  3. openmm serve 签署 EIP-3009 授权(无 Gas 费 —— 无需 ETH)

  4. 服务器在链上提交支付并返回数据

工具定价

类别

工具

价格 (USDC)

免费

list_exchanges

$0.00

读取

get_ticker, get_orderbook, get_trades, get_ohlcv, get_balance, list_orders, get_cardano_price, discover_pools, get_strategy_status

$0.001

写入

create_order, cancel_order, cancel_all_orders, start_grid_strategy, stop_strategy

$0.01


可用工具 (15)

工具

描述

参数

市场数据

list_exchanges

列出支持的交易所

get_ticker

实时价格、买入/卖出价、点差、成交量

exchange, symbol

get_orderbook

订单簿深度(买单/卖单)

exchange, symbol, limit?

get_trades

近期交易及买卖汇总

exchange, symbol, limit?

get_ohlcv

OHLCV K 线数据

exchange, symbol, timeframe?, limit?

账户

get_balance

账户余额(全部或筛选)

exchange, asset?

list_orders

未结订单(全部或按交易对)

exchange, symbol?

交易

create_order

下限价单或市价单

exchange, symbol, type, side, amount, price?

cancel_order

按 ID 取消订单

exchange, symbol, orderId

cancel_all_orders

取消某交易对的所有订单

exchange, symbol

Cardano DEX

get_cardano_price

从 DEX 聚合的代币价格

symbol

discover_pools

发现流动性池

symbol, minLiquidity?

策略

start_grid_strategy

启动网格交易

exchange, symbol, lowerPrice, upperPrice, gridLevels?, totalAmount

stop_strategy

停止运行中的策略

strategyId, cancelOrders?

get_strategy_status

获取策略状态

strategyId


CLI 参考

设置与服务器

命令

描述

openmm-init

创建保险库,生成/导入钱包,添加交易所

openmm-init --import <key>

使用现有私钥创建保险库

openmm serve

解锁保险库,启动统一套接字

openmm-status

显示保险库、套接字、钱包和交易所状态(无需密码)

交易所凭据

命令

描述

openmm-exchange list

列出已配置的交易所

openmm-exchange add <id>

添加交易所凭据

openmm-exchange remove <id>

移除交易所凭据

支持的交易所:mexc, gateio, bitget, kraken, binance, coinbase, okx

钱包

命令

描述

openmm-wallet info

显示钱包地址和链

openmm-wallet set

设置钱包凭据

openmm-wallet export

显示私钥(需要确认)

支出策略

命令

描述

openmm-policy show

显示当前策略

openmm-policy set max-per-tx <amount>

每笔交易的最大 USDC

openmm-policy set max-per-day <amount>

每天的最大 USDC

openmm-policy set allowed-chains <chains>

逗号分隔的链 ID

openmm-policy reset

清除所有策略限制

高级

命令

描述

openmm-vault info

显示保险库元数据

openmm-vault change-password

更改保险库密码

openmm-vault export

导出所有凭据(危险)

openmm-vault destroy

删除保险库


使用示例

检查 BTC 价格:

"Get me the BTC/USDT ticker on MEXC"

下单:

"Buy 0.1 ETH at $2400 on Kraken"

启动网格策略:

"Start a grid strategy on MEXC for INDY/USDT between $0.10 and $0.15 with 10 levels and $500 total"

检查 Cardano 代币:

"What's the current price of SNEK on Cardano DEXes?"

安全性

  • 保险库: AES-256-GCM 加密,位于 ~/.openmm/vault.enc

  • 密码: 仅限交互式终端 —— 绝不出现在任何配置文件、环境变量或 CLI 标志中

  • 套接字: /tmp/openmm.sock 模式 0600 —— 套接字是身份验证边界

  • 策略: 在接触私钥之前,在套接字处强制执行支出限额

  • 隔离: 私钥绝不会进入任何 MCP 客户端进程内存 —— 签名通过 IPC 在 openmm serve 进程中完成


开发

git clone https://github.com/QBT-Labs/openMM-MCP.git
cd openMM-MCP
npm install
npm run typecheck
npm run lint
npm test
npm run build

资源

许可证

MIT

托管部署

可在 Fronteir AI 上进行托管部署。

Available Tools

13 tools
cancel_all_ordersAInspect

Cancel all open orders for a trading pair on a supported exchange

ParametersJSON Schema
NameRequiredDescriptionDefault
exchangeYesExchange to query. Supported: mexc, gateio, bitget, kraken
symbolYesTrading pair symbol (e.g., BTC/USDT, INDY/USDT)

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action but does not mention that the operation is irreversible, what happens if there are no open orders, whether it cancels both buy and sell orders, or what response to expect. This is a significant transparency gap for a destructive operation.

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 front-loaded sentence with no filler. Every word contributes to understanding the tool's purpose and scope.

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?

With only two fully documented parameters and no output schema, the description is minimally viable for invoking the tool. However, the absence of annotations and the lack of any mention of return values, safety, or side effects leaves notable contextual gaps for an operation that cancels all open orders.

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%, and both parameters are already well described with format and supported values. The tool description adds no semantic meaning beyond what the schema provides, so the baseline score of 3 is appropriate.

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 ('Cancel'), a specific resource ('all open orders'), and the scope ('for a trading pair on a supported exchange'). This clearly differentiates it from sibling cancel_order, which implies a single order cancellation.

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 makes the intended use case clear: bulk cancellation of all open orders for a pair. However, it does not explicitly reference the sibling cancel_order tool or state when to choose one over the other, so usage guidance is implied rather than explicit.

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

cancel_orderAInspect

Cancel a specific order by ID on a supported exchange

ParametersJSON Schema
NameRequiredDescriptionDefault
exchangeYesExchange to query. Supported: mexc, gateio, bitget, kraken
symbolYesTrading pair symbol (e.g., BTC/USDT, INDY/USDT)
orderIdYesThe order ID to cancel

TDQS

A3.7/5.0
Behavior2/5

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

The tool has no annotations, so the description bears the full disclosure burden, yet it only says 'Cancel', a mutation, without stating whether cancellation is irreversible, idempotent, or what happens to a filled/canceled order. Permissions, confirmation, and error behavior are not covered.

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?

A single sentence with no filler; the key qualifier 'specific' and 'by ID' are up front, and the exchange constraint is stated once. Every word earns its place.

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?

For a simple three-parameter mutation, the description conveys the core operation, and the schema fills in parameter details. However, with no annotations and no output schema, it omits behavioral context like response shape, failure modes, and cancellation guarantees, making it minimally viable.

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 already documents all three parameters (exchange, symbol, orderId) at 100% coverage, so the description need not repeat them. It adds a slight framing with 'by ID' but no new semantic detail, matching the baseline.

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?

States the specific action (cancel), the exact target (an order identified by ID), and the scope (a single order on a supported exchange). This clearly distinguishes it from sibling cancel_all_orders, which targets multiple orders.

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 phrase 'a specific order by ID' establishes the primary use case: canceling one known order. It does not explicitly mention when to use cancel_all_orders or other alternatives, but the context is clear enough for an agent to select it for individual cancellations.

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

create_orderBInspect

Create a new order (limit or market) on a supported exchange

ParametersJSON Schema
NameRequiredDescriptionDefault
exchangeYesExchange to query. Supported: mexc, gateio, bitget, kraken
symbolYesTrading pair symbol (e.g., BTC/USDT, INDY/USDT)
typeYesOrder type: limit or market
sideYesOrder side: buy or sell
amountYesOrder amount in base currency
priceNoOrder price (required for limit orders, ignored for market orders)

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries full responsibility for disclosing behavior. It only states that an order is created but does not mention execution side effects, exchange confirmation, irreversibility, fees, auth requirements, or what happens after the call. For a financial mutation tool, this is a significant gap.

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 one short, front-loaded sentence with no filler or redundant elaboration. It earns its place by stating the core purpose clearly.

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 no annotations and no output schema, the description needs to cover more context, such as return values, order lifecycle, or side effects. It only provides a minimal statement of intent, which is insufficient for a complex financial action like order creation.

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 well. The description adds minimal extra meaning beyond naming limit and market order types, and it does not compensate or add detail beyond the schema.

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 uses a specific verb ('Create') with a clear resource ('new order') and scope ('limit or market', 'on a supported exchange'). It clearly distinguishes this tool from sibling tools like cancel_order, get_balance, and list_orders.

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 gives no guidance on when to use this tool versus alternatives, nor does it mention prerequisites or situations where another tool would be more appropriate. There is no explicit when-to-use or when-not-to-use guidance.

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

discover_poolsAInspect

Discover Cardano DEX liquidity pools for a native token via Iris API

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesCardano token symbol (INDY, SNEK, MIN, NIGHT)

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of disclosing behavior. 'Discover' implies a read-only lookup, but the description does not state whether it modifies anything, what happens when no pools exist, whether there are rate limits, or what the response shape is. This leaves meaningful behavioral uncertainty.

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, well-structured sentence that front-loads the action and resource, then specifies the API. Every word contributes meaning, with no filler or redundancy.

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 one documented parameter and no output schema, the description is concise but sufficient to understand the tool's purpose and invoke it. It could elaborate on the return format or edge cases, but the low complexity means the description is nearly complete as-is.

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%, and the schema already documents 'symbol' as a Cardano token symbol with examples. The description adds no parameter details beyond what the schema provides, so the baseline of 3 applies.

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 uses a specific verb ('Discover') with a specific resource ('Cardano DEX liquidity pools for a native token') and identifies the integration ('Iris API'). It is immediately distinguishable from all sibling tools, which focus on orders, balances, prices, and strategies rather than pool discovery.

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 context is clear: use this tool when you need to find DEX liquidity pools for a Cardano native token. It does not explicitly name alternatives or exclusions, but none of the sibling tools perform pool discovery, so the intended use is unambiguous enough.

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

get_balanceAInspect

Get account balances for all assets (or a specific asset) on a supported exchange

ParametersJSON Schema
NameRequiredDescriptionDefault
exchangeYesExchange to query. Supported: mexc, gateio, bitget, kraken
assetNoOptional asset to filter by (e.g., USDT, BTC). Returns all assets if omitted.

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the transparency burden. It clearly indicates a read-only balance query and the asset-level filter, but it does not mention authentication requirements, rate limits, or what happens for unsupported assets. For a simple read operation this is adequate but not comprehensive.

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 focused sentence that front-loads the verb and resource, includes the optional filtering behavior, and adds no redundant or filler content.

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?

Given the low complexity, fully documented parameters, and absence of an output schema, the description is nearly complete for selecting and invoking the tool. Minor omissions like response format or authentication setup do not prevent successful use, but they would add polish.

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 both parameters (exchange and asset) are already documented with their meanings and supported values. The description adds no substantial parameter semantics beyond paraphrasing the asset filter, matching the baseline for fully covered schemas.

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 uses a specific verb and resource ('Get account balances') and clearly scopes the operation to all assets or a specific asset on a supported exchange. This distinguishes it from sibling tools like get_ticker or get_trades, which concern market data rather than account balances.

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 the tool is for checking balances and notes it works on supported exchanges, but it does not explicitly state when to use it versus alternatives or mention any prerequisites such as authentication. The usage context is inferable but not fully articulated.

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

get_cardano_priceAInspect

Get aggregated price for a Cardano native token from DEX liquidity pools (TOKEN/USDT via ADA bridge)

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesCardano token symbol (INDY, SNEK, MIN, NIGHT)

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It usefully reveals that the price is aggregated and sourced from DEX liquidity pools, but it does not mention side effects (read-only nature), failure modes, unsupported symbols, or whether the price may vary based on pool conditions.

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?

A single, information-dense sentence with no filler. The core action and key qualifiers are front-loaded, and every phrase adds meaning.

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 simple one-parameter read tool, the description provides the essential context: what price, from where, and the pairing route. It is sufficient for basic selection and invocation, though it could be more complete by describing the expected return value or error behavior in the absence of an output 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?

The schema already fully documents the single 'symbol' parameter with example values, so schema coverage is 100%. The description adds context about the quote convention (TOKEN/USDT via ADA bridge) but does not add further parameter semantics beyond the schema.

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 uses a specific verb ('Get') and defines the exact resource: an aggregated price for a Cardano native token sourced from DEX liquidity pools. It also clarifies the quote path ('TOKEN/USDT via ADA bridge'), which distinguishes this tool from generic ticker or exchange price tools.

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 this is for Cardano native token prices aggregated from DEX pools, but it does not explicitly state when to use this tool versus siblings like get_ticker or discover_pools. There is no when-to-use guidance or mention of exclusions.

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

get_orderbookBInspect

Fetch order book depth (bids and asks) for a trading pair on a supported exchange

ParametersJSON Schema
NameRequiredDescriptionDefault
exchangeYesExchange to query. Supported: mexc, gateio, bitget, kraken
symbolYesTrading pair symbol (e.g., BTC/USDT, INDY/USDT)
limitNoNumber of results to return (default: 10, max: 100)

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It mentions 'supported exchange' but doesn't specify rate limits, authentication requirements, error handling, or response format. For a financial data tool with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves.

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, efficient sentence with zero wasted words. It's front-loaded with the core purpose and appropriately sized for what it communicates. Every word earns its place in conveying the essential function.

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 financial data tool with 3 parameters, no annotations, and no output schema, the description is insufficiently complete. It doesn't explain what 'bids and asks' data looks like, how results are structured, whether there are exchange-specific behaviors, or what authentication might be required. The context demands more comprehensive guidance.

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 three parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema - it doesn't explain what 'order book depth' means in practice or provide context about the limit parameter's effect on data granularity.

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 specific action ('fetch'), resource ('order book depth'), and scope ('for a trading pair on a supported exchange'), distinguishing it from siblings like get_ticker (price only) or get_trades (historical trades). It precisely communicates what the tool does without ambiguity.

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. It doesn't mention when to choose get_orderbook over get_ticker for price data, or how it differs from list_orders for order information. There's no context about prerequisites or typical use cases.

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

get_strategy_statusAInspect

Get current grid strategy status: open orders, current price, and P&L estimate

ParametersJSON Schema
NameRequiredDescriptionDefault
exchangeYesExchange to query. Supported: mexc, gateio, bitget, kraken
symbolYesTrading pair symbol (e.g., BTC/USDT, INDY/USDT)

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full disclosure burden. It clearly signals a read-only operation via 'Get' and discloses the output components (open orders, current price, P&L estimate). However, it does not state preconditions such as whether an active strategy must exist for the given symbol/exchange, what happens when no strategy is found, or whether the price is a live snapshot or cached value.

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?

A single, front-loaded sentence with zero filler. The verb, resource, and the three returned components each earn their place, and nothing is redundantly repeated from the input schema or the rest of the definition.

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?

The tool is low-complexity (two flat params, no output schema, no annotations), and the description partially compensates for the missing output schema by listing what the call returns. The remaining gap is behavioral context: what occurs if no strategy is running on the queried exchange/symbol, and whether the strategy must be started before this call is valid.

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 both symbol and exchange already documented with examples and supported values. The description adds only implicit context that these parameters identify which grid strategy to query, but introduces no format details, ranges, or validation rules beyond what the schema already provides. Baseline 3 applies.

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 uses a specific verb ('Get') with a distinct resource ('grid strategy status') and enumerates the returned data (open orders, current price, P&L estimate). The resource is unique among the sibling tools — none of the other reads (get_ticker, get_balance, get_trades) target strategy state — so it can be told apart without opening the schema, though it does not explicitly name alternatives.

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 use case is implied: call this to inspect the state of a grid strategy for a given exchange/symbol. However, there is no explicit when-to-use guidance, no mention of when not to use it (e.g., when a strategy is not running), and no named alternatives such as start_grid_strategy for lifecycle operations or get_ticker for live market price.

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

get_tickerAInspect

Get real-time price, bid/ask, spread, and volume for a trading pair on a supported exchange

ParametersJSON Schema
NameRequiredDescriptionDefault
exchangeYesExchange to query. Supported: mexc, gateio, bitget, kraken
symbolYesTrading pair symbol (e.g., BTC/USDT, INDY/USDT)

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'real-time' data, which is useful context, but fails to disclose other critical traits such as rate limits, authentication requirements, error handling, or data freshness guarantees. For a read operation with no annotation coverage, this leaves significant gaps in understanding its behavior.

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, front-loaded sentence that efficiently conveys the tool's purpose without any wasted words. Every part of the sentence earns its place by specifying the data retrieved and the context (supported exchange), making it appropriately sized and structured.

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 low complexity (2 parameters, no nested objects) and 100% schema coverage, the description is adequate but not complete. It lacks output schema, so return values are undocumented, and with no annotations, behavioral aspects like rate limits or errors are missing. For a simple read tool, it meets minimum viability but has clear gaps in contextual information.

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 both parameters (exchange and symbol) well-documented in the schema. The description adds no additional meaning beyond what the schema provides (e.g., it doesn't explain format nuances or constraints). According to the rules, with high schema coverage, the baseline is 3 even without param info in the description.

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 specific action ('Get') and resource ('real-time price, bid/ask, spread, and volume for a trading pair'), distinguishing it from siblings like get_balance (balances), get_orderbook (order book data), and get_trades (trade history). It precisely defines what data is retrieved without being vague or tautological.

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 specifying 'on a supported exchange,' which provides some context for when to use this tool (for real-time market data on those exchanges). However, it does not explicitly state when to use it versus alternatives like get_orderbook (for depth data) or get_cardano_price (for a specific asset's price), nor does it mention exclusions or prerequisites.

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

get_tradesCInspect

Get recent trades for a trading pair on a supported exchange

ParametersJSON Schema
NameRequiredDescriptionDefault
exchangeYesExchange to query. Supported: mexc, gateio, bitget, kraken
symbolYesTrading pair symbol (e.g., BTC/USDT, INDY/USDT)
limitNoNumber of results to return (default: 20, max: 100)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'recent trades' but doesn't specify what 'recent' means (e.g., time window, pagination), whether there are rate limits, authentication requirements, or what format the results will be in. This leaves significant gaps for an agent to understand the tool's behavior.

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, efficient sentence that gets straight to the point with no wasted words. It's appropriately sized for a straightforward data retrieval tool and front-loads the essential information.

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 data retrieval tool with no annotations and no output schema, the description is insufficient. It doesn't explain what 'recent' means, the structure of returned trade data, potential errors, or how it differs from sibling tools. Given the complexity of trading data and lack of structured output information, more context is needed.

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 three parameters thoroughly. The description doesn't add any meaningful parameter semantics beyond what's in the schema, maintaining the baseline score 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 the action ('Get recent trades') and resource ('for a trading pair on a supported exchange'), making the purpose immediately understandable. It doesn't explicitly differentiate from siblings like 'get_orderbook' or 'get_ticker', but the focus on trades is specific enough to avoid confusion with those alternatives.

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 like 'get_orderbook' or 'get_ticker', nor does it mention prerequisites or exclusions. It simply states what the tool does without contextual usage information.

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

list_ordersAInspect

List open orders on a supported exchange, optionally filtered by trading pair symbol

ParametersJSON Schema
NameRequiredDescriptionDefault
exchangeYesExchange to query. Supported: mexc, gateio, bitget, kraken
symbolNoOptional trading pair to filter by (e.g., BTC/USDT). Returns all if omitted.

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does not mention authentication requirements, rate limits, pagination, or whether the operation is strictly read-only. The verb 'List' implies a read operation, but important behavioral details are omitted.

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, well-structured sentence that front-loads the core purpose and then adds the optional filter. Every token earns its place; no waste.

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?

For a simple two-parameter tool, the description and schema cover the essential inputs and purpose. However, with no output schema and no annotations, the description does not explain the return format, authentication requirements, or any exchange-specific behavior, leaving some gaps for an agent to resolve.

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 both parameters thoroughly. The description adds little beyond the schema, only restating the optional symbol filter. Baseline 3 is appropriate since the description does not need to compensate.

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 uses a specific verb ('List') with a clear resource ('open orders') and context ('on a supported exchange'), and mentions the optional symbol filter. This clearly distinguishes it from sibling tools like cancel_order, create_order, and get_trades.

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 usage is implied: use this tool to list currently open orders on an exchange, optionally filtered by pair. However, there is no explicit guidance on when not to use it or how it differs from alternatives such as get_trades or get_orderbook, leaving some ambiguity.

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

start_grid_strategyBInspect

Calculate and optionally place grid trading orders around the current price

ParametersJSON Schema
NameRequiredDescriptionDefault
exchangeYesExchange to query. Supported: mexc, gateio, bitget, kraken
symbolYesTrading pair symbol (e.g., BTC/USDT, INDY/USDT)
levelsNoGrid levels per side (default: 5)
spacingNoBase spacing as decimal (default: 0.02 = 2%)
orderSizeNoBase order size in quote currency (default: 50)
spacingModelNoSpacing modellinear
spacingFactorNoFactor for geometric spacing (default: 1.3)
sizeModelNoSize modelflat
dryRunNoPreview grid without placing orders (default: true)

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the burden of conveying side effects. It does disclose that order placement is optional, which is an important safety-relevant behavior. However, it does not explain what happens when dryRun is false, how many orders may be placed, or what result the agent should expect.

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 efficient sentence with no filler. The key verbs 'calculate' and 'optionally place' are front-loaded, and the 'around the current price' scope is immediately clear.

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?

Despite having 9 parameters, potential order placement, no annotations, and no output schema, the description provides almost no operational context. It does not explain how the grid strategy is constructed, what the preview output contains, or what side effects occur when orders are actually placed.

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 each parameter. The description adds no deeper meaning about how levels, spacing, sizeModel, or spacingModel interact. This meets the baseline but does not exceed it.

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 action: calculate and optionally place grid trading orders, anchored around the current price. This distinguishes it from generic order tools like create_order and from strategy lifecycle tools like get_strategy_status and stop_strategy.

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 for when to use this tool versus alternatives such as create_order or the strategy status/stop tools. The 'optionally place' wording hints at preview vs. execution, but it does not explicitly state when dryRun should be used or when a different tool is more appropriate.

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

stop_strategyAInspect

Cancel all open orders for a trading pair, effectively stopping any running grid strategy

ParametersJSON Schema
NameRequiredDescriptionDefault
exchangeYesExchange to query. Supported: mexc, gateio, bitget, kraken
symbolYesTrading pair symbol (e.g., BTC/USDT, INDY/USDT)

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of disclosing behavior. It clearly states the destructive scope (cancelling all open orders for a pair) and the downstream effect (stopping a running grid strategy). It does not discuss reversibility, but the main behavioral traits are explicit.

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?

A single sentence with no filler. The action and object are front-loaded followed by the intended effect, making it efficient and easy to parse.

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?

For a simple two-parameter cancel operation, the description covers the action, scope, and outcome. However, given the existence of a sibling tool with an identical action ('cancel_all_orders'), the description lacks routing context to help an agent select correctly between them.

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 both 'symbol' and 'exchange' are already well documented. The description adds no additional parameter-level meaning, making the baseline score of 3 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 uses a specific verb and resource: 'Cancel all open orders for a trading pair' and adds the intended outcome of stopping a grid strategy. However, it does not differentiate itself from the closely named sibling 'cancel_all_orders', which appears to describe the same action on the same resource.

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 phrase 'effectively stopping any running grid strategy' implies the intended use case for halting a strategy. But it provides no explicit guidance about when to choose this tool over alternatives such as cancel_order or cancel_all_orders.

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.

  1. 13 tool updatesv1.0.5
    • First observedcancel_all_orders
    • First observedcancel_order
    • First observedcreate_order
    • First observeddiscover_pools
    • First observedget_balance
    • First observedget_cardano_price
    • First observedget_orderbook
    • First observedget_strategy_status
    • First observedget_ticker
    • First observedget_trades
    • First observedlist_orders
    • First observedstart_grid_strategy
    • First observedstop_strategy

TDQS

B3.4/5.0

Scored across 13 tools

Disambiguation4/5

Most tools have distinct purposes, such as create_order for order creation and get_ticker for price data. However, cancel_all_orders and stop_strategy both involve canceling orders for a trading pair, which could cause confusion in selection, though stop_strategy is tied to grid strategies.

Naming Consistency4/5

The naming follows a consistent verb_noun pattern with snake_case throughout, such as get_balance and list_orders. Minor deviations exist, like discover_pools using 'discover' instead of 'get' or 'list', but overall the pattern is clear and readable.

Tool Count5/5

With 13 tools, the count is well-scoped for a trading and strategy automation server. Each tool serves a specific function, from order management to price fetching and strategy control, without feeling excessive or insufficient for the domain.

Completeness4/5

The toolset covers core trading operations like order CRUD, balance checks, and market data, plus grid strategy management. A minor gap is the lack of tools for modifying existing orders (e.g., update_order) or detailed strategy configuration, but agents can work around this with the available tools.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides cryptocurrency trading signals, market analysis, and portfolio management capabilities across 15+ exchanges with AI-enhanced technical analysis, arbitrage detection, and risk assessment tools.
    2
    -
  • A
    license
    A
    quality
    C
    maintenance
    Trade, analyze, and automate Polymarket prediction markets via AI. 34 tools for direct trading, smart money flow, copy trading, backtest, and portfolio management.
    48
    66 npm
    16
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    MCP server for DeFi execution — lets AI agents swap, provide liquidity, lend, bridge, and run yield strategies across 22 chains in a single transaction. 7 tools for token discovery, portfolio analysis, quoting, and execution via the Haiku API.
    7
    45 npm
    2
    MIT