openmm-mcp
@qbtlabs/openmm-mcp
📚 ドキュメント · 🤖 AIスキルポータル · 🔌 APIリファレンス
OpenMM 用のMCPサーバー。マーケットデータ、アカウント、取引、戦略ツールを、あらゆるMCPクライアントを通じてAIエージェントに提供します。
2つの利用方法
オプション | 最適な用途 | 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これにより、ウォレットキーと取引所のAPI認証情報を含む暗号化されたボルトが ~/.openmm/vault.enc に作成されます。パスワードを設定し、ウォレットを生成(またはインポート)し、必要に応じて取引所のキーを追加します。
3. サーバーの起動
openmm serveボルトのパスワードを一度入力します。統合ソケットが /tmp/openmm.sock で起動し、すべてのMCPクライアントがここに接続します。設定ファイルには認証情報は一切含まれません。
手動設定
--setup を使用せずに設定ファイルを直接編集したい場合:
クライアント | 設定ファイル |
Claude Desktop |
|
Claude Code |
|
Cursor |
|
Windsurf |
|
{
"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の場合は、nvm/PATHの問題を避けるため、node へのフルパス(which node で確認可能)を使用してください。
ヒント:
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 | envにAPIキー |
|
Claude Code | envにAPIキー |
|
Cursor | envにAPIキー |
|
Windsurf | envにAPIキー |
|
すべてのクライアントが実行中の openmm serve に接続します。1つのボルト、1つのソケットで、どのクライアントからでも利用可能です。
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セキュリティ特性
特性 | 方法 |
キーの保存時暗号化 |
|
クライアントメモリにキーを保持しない | MCPプロセスはソケットパスのみを保持 |
設定ファイルにキーを保持しない | 設定ファイルにはAPIキーや秘密鍵は一切なし |
プロセスの分離 | 署名はAIエージェントプロセスではなく |
ポリシーの強制 | 秘密鍵へのアクセス前に支出制限をチェック |
メモリ安全性 |
|
支払いフロー
エージェントがツールを呼び出す
サーバーが価格とともに
402 Payment Requiredを返すopenmm serveがEIP-3009認証に署名する(ガス代不要 — ETH不要)サーバーがオンチェーンで支払いを送信し、データを返す
ツール価格
カテゴリ | ツール | 価格 (USDC) |
無料 |
| $0.00 |
読み取り |
| $0.001 |
書き込み |
| $0.01 |
利用可能なツール (15)
ツール | 説明 | パラメータ |
マーケットデータ | ||
| 対応取引所の一覧 | — |
| リアルタイム価格、買値/売値、スプレッド、出来高 |
|
| オーダーブックの深さ(買値/売値) |
|
| 最近の取引と売買サマリー |
|
| OHLCVローソク足データ |
|
アカウント | ||
| アカウント残高(全資産または指定資産) |
|
| 未決済注文(全注文またはシンボル指定) |
|
取引 | ||
| 指値または成行注文の発注 |
|
| IDによる注文キャンセル |
|
| ペアの全注文をキャンセル |
|
Cardano DEX | ||
| DEXからの集計トークン価格 |
|
| 流動性プールの検索 |
|
戦略 | ||
| グリッド取引の開始 |
|
| 実行中の戦略を停止 |
|
| 戦略ステータスの取得 |
|
CLIリファレンス
セットアップとサーバー
コマンド | 説明 |
| ボルト作成、ウォレット生成/インポート、取引所追加 |
| 既存の秘密鍵でボルトを作成 |
| ボルトのロック解除、統合ソケットの起動 |
| ボルト、ソケット、ウォレット、取引所のステータス表示(パスワード不要) |
取引所の認証情報
コマンド | 説明 |
| 設定済み取引所の一覧 |
| 取引所の認証情報を追加 |
| 取引所の認証情報を削除 |
対応取引所: mexc, gateio, bitget, kraken, binance, coinbase, okx
ウォレット
コマンド | 説明 |
| ウォレットアドレスとチェーンを表示 |
| ウォレットの認証情報を設定 |
| 秘密鍵を表示(確認が必要) |
支出ポリシー
コマンド | 説明 |
| 現在のポリシーを表示 |
| トランザクションあたりの最大USDC |
| 1日あたりの最大USDC |
| カンマ区切りのチェーンID |
| すべてのポリシー制限をクリア |
高度な設定
コマンド | 説明 |
| ボルトのメタデータを表示 |
| ボルトのパスワードを変更 |
| すべての認証情報をエクスポート(危険) |
| ボルトを削除 |
使用例
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?"セキュリティ
ボルト:
~/.openmm/vault.encにて AES-256-GCM 暗号化パスワード: インタラクティブなターミナルのみ — 設定ファイル、環境変数、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リソース
OpenMM SDK — 基盤となる取引SDK
x402 Package — 支払い統合
MCP Specification — Model Context Protocolドキュメント
Base Network — USDC支払いのためのL2
ライセンス
MIT
ホスト型デプロイメント
ホスト型デプロイメントは Fronteir AI で利用可能です。
Available Tools
13 toolscancel_all_ordersAInspect
Cancel all open orders for a trading pair on a supported exchange
| Name | Required | Description | Default |
|---|---|---|---|
| exchange | Yes | Exchange to query. Supported: mexc, gateio, bitget, kraken | |
| symbol | Yes | Trading pair symbol (e.g., BTC/USDT, INDY/USDT) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| exchange | Yes | Exchange to query. Supported: mexc, gateio, bitget, kraken | |
| symbol | Yes | Trading pair symbol (e.g., BTC/USDT, INDY/USDT) | |
| orderId | Yes | The order ID to cancel |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| exchange | Yes | Exchange to query. Supported: mexc, gateio, bitget, kraken | |
| symbol | Yes | Trading pair symbol (e.g., BTC/USDT, INDY/USDT) | |
| type | Yes | Order type: limit or market | |
| side | Yes | Order side: buy or sell | |
| amount | Yes | Order amount in base currency | |
| price | No | Order price (required for limit orders, ignored for market orders) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Cardano token symbol (INDY, SNEK, MIN, NIGHT) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| exchange | Yes | Exchange to query. Supported: mexc, gateio, bitget, kraken | |
| asset | No | Optional asset to filter by (e.g., USDT, BTC). Returns all assets if omitted. |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Cardano token symbol (INDY, SNEK, MIN, NIGHT) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| exchange | Yes | Exchange to query. Supported: mexc, gateio, bitget, kraken | |
| symbol | Yes | Trading pair symbol (e.g., BTC/USDT, INDY/USDT) | |
| limit | No | Number of results to return (default: 10, max: 100) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| exchange | Yes | Exchange to query. Supported: mexc, gateio, bitget, kraken | |
| symbol | Yes | Trading pair symbol (e.g., BTC/USDT, INDY/USDT) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| exchange | Yes | Exchange to query. Supported: mexc, gateio, bitget, kraken | |
| symbol | Yes | Trading pair symbol (e.g., BTC/USDT, INDY/USDT) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| exchange | Yes | Exchange to query. Supported: mexc, gateio, bitget, kraken | |
| symbol | Yes | Trading pair symbol (e.g., BTC/USDT, INDY/USDT) | |
| limit | No | Number of results to return (default: 20, max: 100) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| exchange | Yes | Exchange to query. Supported: mexc, gateio, bitget, kraken | |
| symbol | No | Optional trading pair to filter by (e.g., BTC/USDT). Returns all if omitted. |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| exchange | Yes | Exchange to query. Supported: mexc, gateio, bitget, kraken | |
| symbol | Yes | Trading pair symbol (e.g., BTC/USDT, INDY/USDT) | |
| levels | No | Grid levels per side (default: 5) | |
| spacing | No | Base spacing as decimal (default: 0.02 = 2%) | |
| orderSize | No | Base order size in quote currency (default: 50) | |
| spacingModel | No | Spacing model | linear |
| spacingFactor | No | Factor for geometric spacing (default: 1.3) | |
| sizeModel | No | Size model | flat |
| dryRun | No | Preview grid without placing orders (default: true) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| exchange | Yes | Exchange to query. Supported: mexc, gateio, bitget, kraken | |
| symbol | Yes | Trading pair symbol (e.g., BTC/USDT, INDY/USDT) |
TDQS
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.
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.
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.
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.
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.
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.
13 tool updates
v1.0.5- First observed
cancel_all_orders - First observed
cancel_order - First observed
create_order - First observed
discover_pools - First observed
get_balance - First observed
get_cardano_price - First observed
get_orderbook - First observed
get_strategy_status - First observed
get_ticker - First observed
get_trades - First observed
list_orders - First observed
start_grid_strategy - First observed
stop_strategy
TDQS
Scored across 13 tools
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.
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.
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.
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
Related MCP Connectors
Non-custodial DeFi tools for AI agents on Solana: swaps, perps, lending, staking, equities.
AI crypto signals, whale positions, 19 technical indicators, derivatives, screener and backtests
Crypto market signals and portfolio telemetry. 6 tools pay-per-call in USDC, no API key.
Evidence-based market data for AI agents deploying capital in DeFi. Empirical, not advertised.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides cryptocurrency trading signals, market analysis, and portfolio management capabilities across 15+ exchanges with AI-enhanced technical analysis, arbitrage detection, and risk assessment tools.2-
- AlicenseAqualityCmaintenanceTrade, analyze, and automate Polymarket prediction markets via AI. 34 tools for direct trading, smart money flow, copy trading, backtest, and portfolio management.4866 npm16MIT

Haiku DeFi MCPofficial
AlicenseAqualityFmaintenanceMCP 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.745 npm2MIT- AlicenseNot gradedqualityDmaintenanceEnables AI-powered cryptocurrency trading and analytics across multiple exchanges and blockchains, with integrated Telegram bot and live trading capabilities.3MIT