openmm-mcp
@qbtlabs/openmm-mcp
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이 작업은 지갑 키와 거래소 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에 연결됩니다. 하나의 볼트, 하나의 소켓으로 모든 클라이언트를 지원합니다.
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 |
| 일일 최대 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 패키지 — 결제 통합
MCP 사양 — Model Context Protocol 문서
Base 네트워크 — 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