Quote.Trade MCP Adapter
Quote.Trade MCP: login, deposit address, market data, orders, and withdraws.
사용해야 할까요
품질 및 안전성
발견 사항 (5)
- LOWquote_trade_api_manifest에서
- LOWquote_trade_get_deposit_address에서
- LOWquote_trade_get_deposit_history에서
- LOWquote_trade_get_withdraw_requests에서
- LOWquote_trade_get_index_positions에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"mcp": {
"url": "https://quote.trade/mcp"
}
}
}원격 엔드포인트
https://quote.trade/mcpstreamable-http할 수 있는 일
도구 목록
도구 (25)
🟢quote_trade_api_discovery
Read once to learn efficient direct REST/WebSocket use: routes, signing, streaming, cumulative depth, and client execution controls. Public guidance only; no upstream calls.
입력 스키마
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"schemaVersion": {
"type": "string",
"description": "Discovery document schema version."
},
"serverVersion": {
"type": "string",
"description": "MCP implementation version."
},
"purpose": {
"type": "string",
"description": "How to use the guide."
},
"discoveryUrl": {
"type": "string",
"description": "Public HTTP discovery URL."
},
"bases": {
"type": "object",
"description": "Configured REST, WebSocket, and MCP URLs."
},
"documentation": {
"type": "object",
"description": "Canonical documentation links."
},
"rest": {
"type": "object",
"description": "Routes and route-specific signing guidance."
},
"webSocket": {
"type": "object",
"description": "Subscriptions and reconnection guidance."
},
"depthSemantics": {
"type": "object",
"description": "Cumulative quantity and quote freshness."
},
"workflow": {
"type": "array",
"description": "Efficient agent integration workflow.",
"items": {
"type": "string"
}
},
"executionControls": {
"type": "array",
"description": "Controls required in direct API clients.",
"items": {
"type": "string"
}
}
},
"required": [
"schemaVersion",
"serverVersion",
"purpose",
"discoveryUrl",
"bases",
"documentation",
"workflow",
"rest",
"webSocket",
"depthSemantics",
"executionControls"
],
"additionalProperties": false
}🟢quote_trade_api_manifest
Explains that MCP is only a tool/schema adapter around the existing Quote.Trade APIs, and returns local servlet guardrail configuration.
입력 스키마
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"adapter": {
"type": "string",
"description": "MCP adapter name."
},
"version": {
"type": "string",
"description": "Adapter version."
},
"servletOnly": {
"type": "boolean",
"description": "True when this adapter is servlet-hosted only."
},
"mcpProtocolVersion": {
"type": "string",
"description": "MCP protocol version."
},
"mcpEndpointPath": {
"type": "string",
"description": "Local MCP path."
},
"mcpPublicUrl": {
"type": "string",
"description": "Public MCP URL."
},
"directApiDiscoveryUrl": {
"type": "string",
"description": "Public GET guide for efficient direct REST/WebSocket use."
},
"apiBase": {
"type": "string",
"description": "Quote.Trade REST API base."
},
"liquidityApiBase": {
"type": "string",
"description": "Configured and validated at startup, but no MCP tool currently routes a request through it - every tool (withdraw included) calls apiBase. Reported here for operator visibility only."
},
"wsBase": {
"type": "string",
"description": "Quote.Trade WebSocket base."
},
"canonicalBehavior": {
"type": "string",
"description": "Adapter behavior summary."
},
"ordersExposedThroughMcp": {
"type": "boolean",
"description": "True when order tools are registered in tools/list."
},
"withdrawalsExposedThroughMcp": {
"type": "boolean",
"description": "True when withdraw tools are registered in tools/list."
},
"depositsExposedThroughMcp": {
"type": "boolean",
"description": "True when deposit-address tools are registered in tools/list."
},
"liveTradingExecutable": {
"type": "boolean",
"description": "Server configuration permits orders: trading enabled, positive notional cap, and a nonempty symbol allowlist. Caller credentials are still required."
},
"liveWithdrawExecutable": {
"type": "boolean",
"description": "Server configuration permits a supported withdrawal asset: trading enabled, positive cap, and USDC/USDT/XUSDC allowed. Caller withdrawal entitlement is still required."
},
"withdrawDestination": {
"type": "string",
"description": "Always own-wallet-login-only; no toAddress is ever accepted."
},
"tradingEnabled": {
"type": "boolean",
"description": "Server-side live trading/withdraw enablement."
},
"allowedSymbolsMode": {
"type": "string",
"description": "deny-all | all-quote-trade-instruments (*) | allowlist."
},
"maxNotionalUsd": {
"type": "number",
"description": "Server-side max USD notional. Must be > 0 for live order/withdraw."
},
"maxNotionalMode": {
"type": "string",
"description": "capped when maxNotionalUsd>0; disabled-fail-closed otherwise."
},
"maxCallsPerMinute": {
"type": "integer",
"description": "Per-caller MCP call rate limit."
},
"maxDailyNotionalUsd": {
"type": "number",
"description": "Per-caller daily notional allowance for live orders/withdraws."
},
"dailyNotionalUsed": {
"type": "number",
"description": "Notional already committed against the caller's daily allowance today."
},
"mcpHostSeesApiSecret": {
"type": "boolean",
"description": "True when private tools accept X-MBX-APISECRET at this MCP host."
},
"allowLeverage": {
"type": "boolean",
"description": "Server-side leverage allowance."
},
"approvalTextRequired": {
"type": "string",
"description": "Exact approval friction text for live orders."
},
"withdrawApprovalTextRequired": {
"type": "string",
"description": "Exact approval friction text for live withdraws."
},
"approvalFrictionOnly": {
"type": "boolean",
"description": "True when humanApproved/approvalText are friction only."
},
"credentialScoping": {
"type": "string",
"description": "Wallet login optional. Trade-only key: no withdraw. Full-access key (trade+withdraw): withdraw allowed."
},
"walletLoginOptional": {
"type": "boolean",
"description": "True: agents can trade with a web-app API key without wallet logon."
},
"credentialMapping": {
"type": "string",
"description": "How to map a logon/register response, or a web-app API key, onto MCP client headers."
},
"withdrawAssetsOnly": {
"type": "string",
"description": "stablecoins-only"
},
"allowedSymbols": {
"type": "array",
"description": "Trading symbol allowlist. Empty=deny-all; *=all instruments; else explicit symbols.",
"items": {
"type": "string"
}
},
"allowedWithdrawAssets": {
"type": "array",
"description": "Withdraw asset allowlist, independent of allowedSymbols. Empty=deny-all withdrawals; *=all stablecoins; else explicit assets (USDC, USDT, XUSDC).",
"items": {
"type": "string"
}
},
"depositAssets": {
"type": "array",
"description": "Supported deposit asset symbols (USDC, USDT, XUSDC).",
"items": {
"type": "string"
}
},
"withdrawAssets": {
"type": "array",
"description": "Supported withdraw asset symbols (stablecoins only: USDC, USDT, XUSDC).",
"items": {
"type": "string"
}
},
"credentialStatus": {
"type": "object",
"properties": {
"mode": {
"type": "string",
"description": "Credential mode."
},
"apiKeyHeader": {
"type": "string",
"description": "Inbound API key header name (X-MBX-APIKEY)."
},
"apiSecretHeader": {
"type": "string",
"description": "Inbound API secret header name (X-MBX-APISECRET)."
},
"apiKey": {
"type": "string",
"description": "Redacted per-request API key status."
},
"apiSecret": {
"type": "string",
"description": "Whether the per-request API secret is set."
},
"outboundAuthHeaders": {
"type": "string",
"description": "Headers sent to Quote.Trade private APIs."
},
"mcpHostSeesApiSecret": {
"type": "boolean",
"description": "True: this MCP host receives the raw API secret to compute the HMAC signature."
},
"trustWarning": {
"type": "string",
"description": "What possession of the API secret grants this MCP host."
},
"accountDefault": {
"type": "string",
"description": "Optional default account id."
}
},
"required": [
"mode",
"apiKeyHeader",
"apiSecretHeader",
"apiKey",
"apiSecret",
"outboundAuthHeaders",
"mcpHostSeesApiSecret",
"trustWarning"
],
"additionalProperties": false
},
"tools": {
"type": "array",
"description": "Registered tool names.",
"items": {
"type": "string"
}
}
},
"required": [
"adapter",
"version",
"ordersExposedThroughMcp",
"withdrawalsExposedThroughMcp",
"depositsExposedThroughMcp",
"liveTradingExecutable",
"liveWithdrawExecutable",
"tradingEnabled",
"allowedSymbols",
"allowedSymbolsMode",
"maxNotionalUsd",
"maxNotionalMode",
"approvalFrictionOnly",
"credentialStatus",
"tools"
],
"additionalProperties": false
}🟡quote_trade_get_challenge(login)
Optional wallet login/register step 1 (not required for trading with an existing API key). POST /api/getChallenge with a wallet address (login). Returns challenge text and isNewUser. Step 2: sign the challenge with the wallet outside MCP. Step 3: quote_trade_logon. No API key required.
입력 스키마
{
"type": "object",
"properties": {
"login": {
"type": "string",
"description": "Wallet address used as login, e.g. 0x15b65a49faf9a4047e912d7de4a77fe24c7cf483."
}
},
"required": [
"login"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"method": {
"type": "string",
"description": "HTTP method used against Quote.Trade."
},
"endpoint": {
"type": "string",
"description": "Quote.Trade API endpoint path."
},
"status": {
"type": "integer",
"description": "HTTP status code."
},
"raw": {
"type": "string",
"description": "Raw JSON response body."
},
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"additionalProperties": false
}🟡quote_trade_logon(challenge, signature, isNewUser)
Optional wallet login/register step 3 (not required if the agent already has an API key). Pass challenge + wallet signature from steps 1–2. isNewUser=true -> POST /api/registerUser; else POST /api/logon. On success, map body.requestToken/requestSecret to X-MBX-APIKEY / X-MBX-APISECRET; use body.id as account. Wallet signing stays outside MCP.
입력 스키마
{
"type": "object",
"properties": {
"challenge": {
"type": "string",
"description": "Challenge text returned by quote_trade_get_challenge (Sign auth token: ...)."
},
"signature": {
"type": "string",
"description": "Wallet signature of the challenge text (0x-prefixed hex)."
},
"isNewUser": {
"type": "boolean",
"description": "From quote_trade_get_challenge. true -> registerUser; false -> logon. If omitted, logon is tried first then registerUser on failure."
}
},
"required": [
"challenge",
"signature"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"method": {
"type": "string",
"description": "HTTP method used against Quote.Trade."
},
"endpoint": {
"type": "string",
"description": "Quote.Trade API endpoint path."
},
"status": {
"type": "integer",
"description": "HTTP status code."
},
"raw": {
"type": "string",
"description": "Raw JSON response body."
},
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
},
"credentialMapping": {
"type": "object",
"description": "Present on success only. Maps this response's requestToken/requestSecret/id to the MCP client headers and account field to use next."
},
"nextStep": {
"type": "string",
"description": "Present on success only. What to configure before calling private tools."
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"additionalProperties": false
}🟢quote_trade_get_deposit_address(symbol)
Deposit step 1. GET /api/getDepositAddress?symbol=ASSET and return chain + contract/address. Supported assets: USDC and USDT (mainnet), XUSDC (USDC on XDC). Step 2 is transferring funds to that address outside MCP (no backend call).
입력 스키마
{
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "Deposit asset symbol: USDC or USDT (mainnet), or XUSDC (USDC on XDC network)."
}
},
"required": [
"symbol"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"method": {
"type": "string",
"description": "HTTP method used against Quote.Trade."
},
"endpoint": {
"type": "string",
"description": "Quote.Trade API endpoint path."
},
"status": {
"type": "integer",
"description": "HTTP status code."
},
"raw": {
"type": "string",
"description": "Raw JSON response body."
},
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"additionalProperties": false
}🟢quote_trade_status
Call GET /api/status and return system status, server time, contracts URL, and feature flags.
입력 스키마
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"method": {
"type": "string",
"description": "HTTP method used against Quote.Trade."
},
"endpoint": {
"type": "string",
"description": "Quote.Trade API endpoint path."
},
"status": {
"type": "integer",
"description": "HTTP status code."
},
"raw": {
"type": "string",
"description": "Raw JSON response body."
},
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"additionalProperties": false
}🟢quote_trade_exchange_info(limit, skip, symbols)
Call GET /api/exchangeInfo and return a paginated slice of trading symbols plus rate limits/server time. Upstream has no pagination, so this adapter filters/slices locally. Default limit=50, max=200. Prefer quote_trade_instruments for compact tradable-pair discovery.
입력 스키마
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"description": "Max symbols to return. Default 50, max 200."
},
"skip": {
"type": "integer",
"description": "Number of matching symbols to skip before returning. Default 0."
},
"symbols": {
"type": "string",
"description": "Optional comma-separated symbol filter, e.g. BTC,ETH,SOL. When set, pagination applies to the filtered list."
}
},
"required": [],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"method": {
"type": "string",
"description": "HTTP method used against Quote.Trade."
},
"endpoint": {
"type": "string",
"description": "Quote.Trade API endpoint path."
},
"status": {
"type": "integer",
"description": "HTTP status code."
},
"raw": {
"type": "string",
"description": "Raw JSON response body."
},
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"additionalProperties": false
}🟢quote_trade_instruments(limit, skip)
Trade step 1. GET /api/getInstrumentPairs — paginated tradable symbols/instruments. Default limit=50, max=200. Use skip to page. Pick a symbol from this response for ticker/depth/order calls.
입력 스키마
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"description": "Max instruments to return. Default 50, max 200."
},
"skip": {
"type": "integer",
"description": "Number of instruments to skip before returning. Default 0."
}
},
"required": [],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"method": {
"type": "string",
"description": "HTTP method used against Quote.Trade."
},
"endpoint": {
"type": "string",
"description": "Quote.Trade API endpoint path."
},
"status": {
"type": "integer",
"description": "HTTP status code."
},
"raw": {
"type": "string",
"description": "Raw JSON response body."
},
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"additionalProperties": false
}🟢quote_trade_ticker(symbol)
Trade step 2. GET /api/ticker?symbol=SYMBOL for a symbol from quote_trade_instruments. Returns last price, bid, ask, lastUpdateId.
입력 스키마
{
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "Instrument symbol from quote_trade_instruments, such as BTC or ETH."
}
},
"required": [
"symbol"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"method": {
"type": "string",
"description": "HTTP method used against Quote.Trade."
},
"endpoint": {
"type": "string",
"description": "Quote.Trade API endpoint path."
},
"status": {
"type": "integer",
"description": "HTTP status code."
},
"raw": {
"type": "string",
"description": "Raw JSON response body."
},
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"additionalProperties": false
}🟢quote_trade_depth(symbol, limit)
Trade step 3. GET /api/depth?symbol=SYMBOL&limit=N. Use depth quantity to choose a suitable limit price before placing an order.
입력 스키마
{
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "Instrument symbol from quote_trade_instruments, such as BTC or ETH."
},
"limit": {
"type": "integer",
"description": "Optional maximum levels per side. Positive values are enforced by MCP; omitted/nonpositive uses upstream depth."
}
},
"required": [
"symbol"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"method": {
"type": "string",
"description": "HTTP method used against Quote.Trade."
},
"endpoint": {
"type": "string",
"description": "Quote.Trade API endpoint path."
},
"status": {
"type": "integer",
"description": "HTTP status code."
},
"raw": {
"type": "string",
"description": "Raw JSON response body."
},
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"additionalProperties": false
}🟢quote_trade_account
Withdraw step 1 / anytime account check. GET /api/account with per-request X-MBX-APIKEY. Inspect available balances before withdraw. No live trading action.
입력 스키마
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"method": {
"type": "string",
"description": "HTTP method used against Quote.Trade."
},
"endpoint": {
"type": "string",
"description": "Quote.Trade API endpoint path."
},
"status": {
"type": "integer",
"description": "HTTP status code."
},
"raw": {
"type": "string",
"description": "Raw JSON response body."
},
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"additionalProperties": false
}🟢quote_trade_get_positions
Anytime position check. GET /api/positions with per-request X-MBX-APIKEY. Reconcile current positions when starting or reconnecting, per the direct-discovery guide (quote_trade_api_discovery / rest.privateReads). No live trading action.
입력 스키마
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"method": {
"type": "string",
"description": "HTTP method used against Quote.Trade."
},
"endpoint": {
"type": "string",
"description": "Quote.Trade API endpoint path."
},
"status": {
"type": "integer",
"description": "HTTP status code."
},
"raw": {
"type": "string",
"description": "Raw JSON response body."
},
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"additionalProperties": false
}🟢quote_trade_get_orders(symbol, limit, startTime, endTime)
Anytime order check. POST /api/getOrders with per-request X-MBX-APIKEY. Read-only: no live trading action. Requires read entitlement on API keys that carry one.
입력 스키마
{
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "Optional instrument symbol filter, such as BTC. Omit for all symbols."
},
"limit": {
"type": "integer",
"description": "Optional maximum number of orders to return."
},
"startTime": {
"type": "integer",
"description": "Optional inclusive start of a time range, epoch milliseconds."
},
"endTime": {
"type": "integer",
"description": "Optional inclusive end of a time range, epoch milliseconds."
}
},
"required": [],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"method": {
"type": "string",
"description": "HTTP method used against Quote.Trade."
},
"endpoint": {
"type": "string",
"description": "Quote.Trade API endpoint path."
},
"status": {
"type": "integer",
"description": "HTTP status code."
},
"raw": {
"type": "string",
"description": "Raw JSON response body."
},
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"additionalProperties": false
}🟢quote_trade_get_order_status(orderId)
Anytime order check. POST /api/orderStatus with per-request X-MBX-APIKEY. Query the status of an order previously placed with quote_trade_place_order. Read-only: no live trading action.
입력 스키마
{
"type": "object",
"properties": {
"orderId": {
"type": "integer",
"description": "The order id returned by quote_trade_place_order."
}
},
"required": [
"orderId"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"method": {
"type": "string",
"description": "HTTP method used against Quote.Trade."
},
"endpoint": {
"type": "string",
"description": "Quote.Trade API endpoint path."
},
"status": {
"type": "integer",
"description": "HTTP status code."
},
"raw": {
"type": "string",
"description": "Raw JSON response body."
},
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"additionalProperties": false
}🟢quote_trade_get_risk
Anytime risk check. POST /api/getRisk with per-request X-MBX-APIKEY. Margin/equity/unrealized-PnL summary for the authenticated account. Read-only: no live trading action.
입력 스키마
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"method": {
"type": "string",
"description": "HTTP method used against Quote.Trade."
},
"endpoint": {
"type": "string",
"description": "Quote.Trade API endpoint path."
},
"status": {
"type": "integer",
"description": "HTTP status code."
},
"raw": {
"type": "string",
"description": "Raw JSON response body."
},
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"additionalProperties": false
}🟢quote_trade_get_order_history(orderId)
Anytime order check. POST /api/getOrderHistory with per-request X-MBX-APIKEY. Full order history, or one order's history with optional orderId. Requires a trade-scoped API key (same scope as quote_trade_place_order). Read-only: no live trading action.
입력 스키마
{
"type": "object",
"properties": {
"orderId": {
"type": "integer",
"description": "Optional order id to narrow to one order's history. Omit for the full order history."
}
},
"required": [],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"method": {
"type": "string",
"description": "HTTP method used against Quote.Trade."
},
"endpoint": {
"type": "string",
"description": "Quote.Trade API endpoint path."
},
"status": {
"type": "integer",
"description": "HTTP status code."
},
"raw": {
"type": "string",
"description": "Raw JSON response body."
},
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"additionalProperties": false
}🟢quote_trade_get_deposit_history
Anytime deposit check. POST /api/getDepositHistory with per-request X-MBX-APIKEY. Requires a trade-scoped API key (same scope as quote_trade_place_order). Read-only: no live trading action.
입력 스키마
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"method": {
"type": "string",
"description": "HTTP method used against Quote.Trade."
},
"endpoint": {
"type": "string",
"description": "Quote.Trade API endpoint path."
},
"status": {
"type": "integer",
"description": "HTTP status code."
},
"raw": {
"type": "string",
"description": "Raw JSON response body."
},
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"additionalProperties": false
}🟢quote_trade_get_withdraw_requests
Anytime withdrawal check. POST /api/getWithdrawRequests with per-request X-MBX-APIKEY. Inspect the status of withdrawals already submitted (including via quote_trade_withdraw). Requires a trade-scoped API key. Read-only: no live trading action, and this tool cannot cancel a withdrawal.
입력 스키마
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"method": {
"type": "string",
"description": "HTTP method used against Quote.Trade."
},
"endpoint": {
"type": "string",
"description": "Quote.Trade API endpoint path."
},
"status": {
"type": "integer",
"description": "HTTP status code."
},
"raw": {
"type": "string",
"description": "Raw JSON response body."
},
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"additionalProperties": false
}🟢quote_trade_get_user_wallets
Anytime wallet check. POST /api/getUserWallets with per-request X-MBX-APIKEY. On-chain addresses previously seen depositing to the authenticated account. Read-only: no live trading action.
입력 스키마
{
"type": "object",
"properties": {},
"required": [],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"method": {
"type": "string",
"description": "HTTP method used against Quote.Trade."
},
"endpoint": {
"type": "string",
"description": "Quote.Trade API endpoint path."
},
"status": {
"type": "integer",
"description": "HTTP status code."
},
"raw": {
"type": "string",
"description": "Raw JSON response body."
},
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"additionalProperties": false
}🟢quote_trade_get_index_positions(assetType)
Anytime position check. POST /api/getIndexPositions with per-request X-MBX-APIKEY. Distinct from quote_trade_get_positions: index/basket instrument positions rather than regular instrument positions. Optional assetType filter. Read-only: no live trading action.
입력 스키마
{
"type": "object",
"properties": {
"assetType": {
"type": "string",
"description": "Optional index/basket asset type filter. Omit for all."
}
},
"required": [],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"method": {
"type": "string",
"description": "HTTP method used against Quote.Trade."
},
"endpoint": {
"type": "string",
"description": "Quote.Trade API endpoint path."
},
"status": {
"type": "integer",
"description": "HTTP status code."
},
"raw": {
"type": "string",
"description": "Raw JSON response body."
},
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"additionalProperties": false
}🟢quote_trade_order_preview(account, symbol, side, type, price, ...)
Optional before live trade. Normalize/validate a BUY/SELL order locally without sending it.
입력 스키마
{
"type": "object",
"properties": {
"account": {
"type": "integer",
"description": "Quote.Trade account/user id. Optional for preview (defaults to account init-param, QUOTE_TRADE_ACCOUNT, or 0). Required for live place_order."
},
"symbol": {
"type": "string",
"description": "Instrument symbol from quote_trade_instruments, such as BTC."
},
"side": {
"type": "string",
"description": "BUY or SELL."
},
"type": {
"type": "string",
"description": "LIMIT only in this adapter."
},
"price": {
"type": "number",
"description": "Limit price chosen after quote_trade_depth."
},
"quantity": {
"type": "number",
"description": "Order quantity."
},
"paymentCurrency": {
"type": "string",
"description": "Payment currency such as USDT."
},
"disableLeverage": {
"type": "integer",
"description": "1 disables leverage; 0 enables leverage/shorting only if server allowLeverage is true."
},
"timestamp": {
"type": "integer",
"description": "Optional client timestamp in milliseconds."
}
},
"required": [
"symbol",
"side",
"price",
"quantity"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"willSend": {
"type": "boolean",
"description": "Whether this preview would send a live order."
},
"endpoint": {
"type": "string",
"description": "Target Quote.Trade order endpoint."
},
"estimatedNotional": {
"type": "number",
"description": "Estimated notional in USD (orders: price×qty; withdraws: USD price×human quantity)."
},
"estimatedQuantity": {
"type": "number",
"description": "Withdraw human quantity only (quantity / 10^quantity_scale). Present on withdraw previews."
},
"estimatedNotionalUsd": {
"type": "number",
"description": "Withdraw USD notional. Present on withdraw previews when priced."
},
"priceUsd": {
"type": "number",
"description": "USD unit price used for withdraw notional."
},
"priceSource": {
"type": "string",
"description": "How priceUsd was obtained (stablecoin-peg|ticker|ticker-unavailable)."
},
"destination": {
"type": "string",
"description": "Withdraw previews only: always own-wallet-login-only (no toAddress accepted)."
},
"notionalWarning": {
"type": "string",
"description": "Withdraw previews only: present when a USD price could not be resolved."
},
"withdrawAssetAllowed": {
"type": "boolean",
"description": "Withdraw previews only: whether the asset passes allowedWithdrawAssets."
},
"symbolAllowed": {
"type": "boolean",
"description": "Order previews only: whether the symbol passes the allowlist (empty=deny-all; *=all)."
},
"withinMaxNotional": {
"type": "boolean",
"description": "Whether USD notional is within maxNotionalUsd (>0 required; else false)."
},
"tradingEnabled": {
"type": "boolean",
"description": "Server-side trading enablement."
},
"credentialsPresent": {
"type": "boolean",
"description": "Whether per-request trading credentials are present."
},
"approvalTextRequired": {
"type": "string",
"description": "Exact approval friction text."
},
"approvalFrictionOnly": {
"type": "boolean",
"description": "True when approval fields are friction only."
},
"safety": {
"type": "string",
"description": "Preview safety notes."
},
"requestBody": {
"type": "object",
"description": "Normalized order request body that would be posted.",
"additionalProperties": true
}
},
"required": [
"willSend",
"endpoint",
"requestBody",
"estimatedNotional",
"symbolAllowed",
"withinMaxNotional",
"tradingEnabled",
"credentialsPresent",
"approvalFrictionOnly",
"safety"
],
"additionalProperties": false
}🔴quote_trade_place_order(account, symbol, side, type, price, ...)
Trade step 4. POST /api/order with a suitable price after instruments/ticker/depth. Requires tradingEnabled, allowedSymbols (* or explicit list; empty denies), maxNotionalUsd>0, and API credentials. Sending X-MBX-APISECRET to this MCP host grants it full signing authority. humanApproved/approvalText are agent friction only.
입력 스키마
{
"type": "object",
"properties": {
"account": {
"type": "integer",
"description": "Quote.Trade account/user id. Optional for preview (defaults to account init-param, QUOTE_TRADE_ACCOUNT, or 0). Required for live place_order."
},
"symbol": {
"type": "string",
"description": "Instrument symbol from quote_trade_instruments, such as BTC."
},
"side": {
"type": "string",
"description": "BUY or SELL."
},
"type": {
"type": "string",
"description": "LIMIT only in this adapter."
},
"price": {
"type": "number",
"description": "Limit price chosen after quote_trade_depth."
},
"quantity": {
"type": "number",
"description": "Order quantity."
},
"paymentCurrency": {
"type": "string",
"description": "Payment currency such as USDT."
},
"disableLeverage": {
"type": "integer",
"description": "1 disables leverage; 0 enables leverage/shorting only if server allowLeverage is true."
},
"timestamp": {
"type": "integer",
"description": "Optional client timestamp in milliseconds."
},
"humanApproved": {
"type": "boolean",
"description": "Agent-supplied confirmation friction (not a security control). Must be true; enableTrading remains authoritative."
},
"approvalText": {
"type": "string",
"description": "Agent-supplied confirmation friction (not a security control). Must exactly equal: APPROVE QUOTE.TRADE LIVE ORDER"
}
},
"required": [
"account",
"symbol",
"side",
"price",
"quantity",
"humanApproved",
"approvalText"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"method": {
"type": "string",
"description": "HTTP method used against Quote.Trade."
},
"endpoint": {
"type": "string",
"description": "Quote.Trade API endpoint path."
},
"status": {
"type": "integer",
"description": "HTTP status code."
},
"raw": {
"type": "string",
"description": "Raw JSON response body."
},
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"additionalProperties": false
}🔴quote_trade_cancel_order(account, symbol, orderId, side, humanApproved, ...)
Cancel one order by orderId. POST /api/cancelOrder. Identifies exactly one order via the matching engine's single-order cancel path - NOT a mass-cancel. There is no quote_trade_cancel_all: the upstream mass-cancel action's scope for edge-case parameters could not be verified from this codebase alone and is intentionally not exposed through MCP. Requires tradingEnabled, allowedSymbols (same allowlist as quote_trade_place_order), and a trade-scoped API key. No notional check applies: a cancellation has none. humanApproved/approvalText are agent friction only.
입력 스키마
{
"type": "object",
"properties": {
"account": {
"type": "integer",
"description": "Quote.Trade account/user id. Optional (defaults to account init-param, QUOTE_TRADE_ACCOUNT, or 0)."
},
"symbol": {
"type": "string",
"description": "Instrument symbol the order was placed on, such as BTC."
},
"orderId": {
"type": "integer",
"description": "The order id returned by quote_trade_place_order."
},
"side": {
"type": "string",
"description": "Optional BUY or SELL, matching the original order. Passed through if given."
},
"humanApproved": {
"type": "boolean",
"description": "Agent-supplied confirmation friction (not a security control). Must be true; enableTrading remains authoritative."
},
"approvalText": {
"type": "string",
"description": "Agent-supplied confirmation friction (not a security control). Must exactly equal: APPROVE QUOTE.TRADE CANCEL ORDER"
}
},
"required": [
"symbol",
"orderId",
"humanApproved",
"approvalText"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"method": {
"type": "string",
"description": "HTTP method used against Quote.Trade."
},
"endpoint": {
"type": "string",
"description": "Quote.Trade API endpoint path."
},
"status": {
"type": "integer",
"description": "HTTP status code."
},
"raw": {
"type": "string",
"description": "Raw JSON response body."
},
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"additionalProperties": false
}🟢quote_trade_withdraw_preview(account, symbol, quantity, quantity_scale)
Optional before live withdraw. Stablecoins only: USDC, USDT, or XUSDC (not BTC/ETH/other). Own login wallet only (no toAddress). estimatedNotional is USD at $1 peg. Trade-only API keys cannot withdraw — use a full-access key with withdraw entitlement.
입력 스키마
{
"type": "object",
"properties": {
"account": {
"type": "integer",
"description": "Quote.Trade account/user id. Optional for preview (defaults to account init-param, QUOTE_TRADE_ACCOUNT, or 0). Required for live withdraw."
},
"symbol": {
"type": "string",
"description": "Stablecoin to withdraw: USDC, USDT, or XUSDC only (not BTC/ETH/other)."
},
"quantity": {
"type": "string",
"description": "Scaled integer quantity as string (API format). Example: \"20000000\" with quantity_scale=6 means 20 USDC."
},
"quantity_scale": {
"type": "integer",
"description": "Decimal scale for quantity. Example: 6 for USDC."
}
},
"required": [
"symbol",
"quantity",
"quantity_scale"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"willSend": {
"type": "boolean",
"description": "Whether this preview would send a live order."
},
"endpoint": {
"type": "string",
"description": "Target Quote.Trade order endpoint."
},
"estimatedNotional": {
"type": "number",
"description": "Estimated notional in USD (orders: price×qty; withdraws: USD price×human quantity)."
},
"estimatedQuantity": {
"type": "number",
"description": "Withdraw human quantity only (quantity / 10^quantity_scale). Present on withdraw previews."
},
"estimatedNotionalUsd": {
"type": "number",
"description": "Withdraw USD notional. Present on withdraw previews when priced."
},
"priceUsd": {
"type": "number",
"description": "USD unit price used for withdraw notional."
},
"priceSource": {
"type": "string",
"description": "How priceUsd was obtained (stablecoin-peg|ticker|ticker-unavailable)."
},
"destination": {
"type": "string",
"description": "Withdraw previews only: always own-wallet-login-only (no toAddress accepted)."
},
"notionalWarning": {
"type": "string",
"description": "Withdraw previews only: present when a USD price could not be resolved."
},
"withdrawAssetAllowed": {
"type": "boolean",
"description": "Withdraw previews only: whether the asset passes allowedWithdrawAssets."
},
"symbolAllowed": {
"type": "boolean",
"description": "Order previews only: whether the symbol passes the allowlist (empty=deny-all; *=all)."
},
"withinMaxNotional": {
"type": "boolean",
"description": "Whether USD notional is within maxNotionalUsd (>0 required; else false)."
},
"tradingEnabled": {
"type": "boolean",
"description": "Server-side trading enablement."
},
"credentialsPresent": {
"type": "boolean",
"description": "Whether per-request trading credentials are present."
},
"approvalTextRequired": {
"type": "string",
"description": "Exact approval friction text."
},
"approvalFrictionOnly": {
"type": "boolean",
"description": "True when approval fields are friction only."
},
"safety": {
"type": "string",
"description": "Preview safety notes."
},
"requestBody": {
"type": "object",
"description": "Normalized order request body that would be posted.",
"additionalProperties": true
}
},
"required": [
"willSend",
"endpoint",
"requestBody",
"estimatedNotional",
"symbolAllowed",
"withinMaxNotional",
"tradingEnabled",
"credentialsPresent",
"approvalFrictionOnly",
"safety"
],
"additionalProperties": false
}🔴quote_trade_withdraw(account, symbol, quantity, quantity_scale, humanApproved, ...)
Withdraw step 3. POST /api/sendWithdrawWithVTokenRequest for stablecoins only (USDC|USDT|XUSDC) to the user's own login wallet (no toAddress). Not available for BTC/ETH/other assets. Requires a full-access API key with withdraw entitlement (trade-only keys are rejected by Quote.Trade), tradingEnabled, allowedWithdrawAssets (independent of the trading allowedSymbols allowlist), and maxNotionalUsd>0. humanApproved/approvalText are agent friction only.
입력 스키마
{
"type": "object",
"properties": {
"account": {
"type": "integer",
"description": "Quote.Trade account/user id. Optional for preview (defaults to account init-param, QUOTE_TRADE_ACCOUNT, or 0). Required for live withdraw."
},
"symbol": {
"type": "string",
"description": "Stablecoin to withdraw: USDC, USDT, or XUSDC only (not BTC/ETH/other)."
},
"quantity": {
"type": "string",
"description": "Scaled integer quantity as string (API format). Example: \"20000000\" with quantity_scale=6 means 20 USDC."
},
"quantity_scale": {
"type": "integer",
"description": "Decimal scale for quantity. Example: 6 for USDC."
},
"humanApproved": {
"type": "boolean",
"description": "Agent-supplied confirmation friction (not a security control). Must be true; enableTrading remains authoritative."
},
"approvalText": {
"type": "string",
"description": "Agent-supplied confirmation friction (not a security control). Must exactly equal: APPROVE QUOTE.TRADE LIVE WITHDRAW"
}
},
"required": [
"account",
"symbol",
"quantity",
"quantity_scale",
"humanApproved",
"approvalText"
],
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"method": {
"type": "string",
"description": "HTTP method used against Quote.Trade."
},
"endpoint": {
"type": "string",
"description": "Quote.Trade API endpoint path."
},
"status": {
"type": "integer",
"description": "HTTP status code."
},
"raw": {
"type": "string",
"description": "Raw JSON response body."
},
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"additionalProperties": false
}권장 프롬프트
quote_trade_get_challengequote_trade_get_challenge커뮤니티
증거