Server definition
- Hash
- sha256:64dea7161e1a504c8f383207f9fc66d49e55a123e0e833937d5557147a95b758
- What it is
- What a remote MCP server returned when asked what it offers: 25 tools
The blob, as servednamed by its sha256
{
"instructions": "MCP adapter 1.5.14 (released 2026-09-19) for Quote.Trade REST/WebSocket APIs. For efficient direct API use, read quote_trade_api_discovery or GET https://quote.trade/mcp/discovery once, then run repeated REST/WebSocket work in client code. Wallet login is optional. Agents normally use an API key+secret from the Quote.Trade web app as X-MBX-APIKEY / X-MBX-APISECRET (no wallet/logon required for trading). Credential scoping: trade-only key -> market data, account, order preview/place (no withdraw). Full-access key (trade+withdraw) -> same plus quote_trade_withdraw. Withdraw is allowed only with a full-access key; trade-only keys are rejected for withdraw by Quote.Trade. If using optional wallet logon/register instead, map body.requestToken/requestSecret to those headers and body.id as account. TRUST WARNING: any API secret sent to this MCP host grants signing authority for that key's permissions. Downstream Quote.Trade REST/WS APIs receive only X-MBX-APIKEY + signature. Optional register/login: get_challenge -> sign with wallet outside MCP -> logon (isNewUser true/false). Optional deposit: get_deposit_address (USDC|USDT|XUSDC) then transfer outside MCP. Trade: instruments -> ticker -> depth -> place_order (optional order_preview). Withdraw (full-access key only; stablecoins USDC|USDT|XUSDC only): account -> quote_trade_withdraw (own login wallet; no toAddress). BTC/ETH/other cannot be withdrawn via MCP. Guardrails fail closed: empty allowedSymbols denies live orders, empty allowedWithdrawAssets denies live withdrawals (these are two independent lists); allowedSymbols=* for all trade instruments, allowedWithdrawAssets=* for all stablecoins; MCP imposes no per-order, per-withdrawal or daily USD notional cap. Backend permissions, balances and margin still apply. humanApproved/approvalText are agent friction only (orders: APPROVE QUOTE.TRADE LIVE ORDER; withdraws: APPROVE QUOTE.TRADE LIVE WITHDRAW).",
"tools": [
{
"description": "Withdraw step 1 / anytime account check. GET /api/account with per-request X-MBX-APIKEY. Inspect available balances before withdraw. No live trading action.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"required": [],
"type": "object"
},
"name": "quote_trade_account",
"outputSchema": {
"additionalProperties": false,
"properties": {
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
},
"endpoint": {
"description": "Quote.Trade API endpoint path.",
"type": "string"
},
"method": {
"description": "HTTP method used against Quote.Trade.",
"type": "string"
},
"raw": {
"description": "Raw JSON response body.",
"type": "string"
},
"status": {
"description": "HTTP status code.",
"type": "integer"
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"type": "object"
}
},
{
"description": "Read once to learn efficient direct REST/WebSocket use: routes, signing, streaming, cumulative depth, and client execution controls. Public guidance only; no upstream calls.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"required": [],
"type": "object"
},
"name": "quote_trade_api_discovery",
"outputSchema": {
"additionalProperties": false,
"properties": {
"bases": {
"description": "Configured REST, WebSocket, and MCP URLs.",
"type": "object"
},
"depthSemantics": {
"description": "Cumulative quantity and quote freshness.",
"type": "object"
},
"discoveryUrl": {
"description": "Public HTTP discovery URL.",
"type": "string"
},
"documentation": {
"description": "Canonical documentation links.",
"type": "object"
},
"executionControls": {
"description": "Controls required in direct API clients.",
"items": {
"type": "string"
},
"type": "array"
},
"purpose": {
"description": "How to use the guide.",
"type": "string"
},
"releaseDate": {
"description": "MCP implementation release date (YYYY-MM-DD).",
"type": "string"
},
"rest": {
"description": "Routes and route-specific signing guidance.",
"type": "object"
},
"schemaVersion": {
"description": "Discovery document schema version.",
"type": "string"
},
"serverVersion": {
"description": "MCP implementation version.",
"type": "string"
},
"webSocket": {
"description": "Subscriptions and reconnection guidance.",
"type": "object"
},
"workflow": {
"description": "Efficient agent integration workflow.",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"schemaVersion",
"serverVersion",
"releaseDate",
"purpose",
"discoveryUrl",
"bases",
"documentation",
"workflow",
"rest",
"webSocket",
"depthSemantics",
"executionControls"
],
"type": "object"
}
},
{
"description": "Explains that MCP is only a tool/schema adapter around the existing Quote.Trade APIs, and returns local servlet guardrail configuration.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"required": [],
"type": "object"
},
"name": "quote_trade_api_manifest",
"outputSchema": {
"additionalProperties": false,
"properties": {
"adapter": {
"description": "MCP adapter name.",
"type": "string"
},
"allowLeverage": {
"description": "Server-side leverage allowance.",
"type": "boolean"
},
"allowedSymbols": {
"description": "Trading symbol allowlist. Empty=deny-all; *=all instruments; else explicit symbols.",
"items": {
"type": "string"
},
"type": "array"
},
"allowedSymbolsMode": {
"description": "deny-all | all-quote-trade-instruments (*) | allowlist.",
"type": "string"
},
"allowedWithdrawAssets": {
"description": "Withdraw asset allowlist, independent of allowedSymbols. Empty=deny-all withdrawals; *=all stablecoins; else explicit assets (USDC, USDT, XUSDC).",
"items": {
"type": "string"
},
"type": "array"
},
"apiBase": {
"description": "Quote.Trade REST API base.",
"type": "string"
},
"approvalFrictionOnly": {
"description": "True when humanApproved/approvalText are friction only.",
"type": "boolean"
},
"approvalTextRequired": {
"description": "Exact approval friction text for live orders.",
"type": "string"
},
"canonicalBehavior": {
"description": "Adapter behavior summary.",
"type": "string"
},
"credentialMapping": {
"description": "How to map a logon/register response, or a web-app API key, onto MCP client headers.",
"type": "string"
},
"credentialScoping": {
"description": "Wallet login optional. Trade-only key: no withdraw. Full-access key (trade+withdraw): withdraw allowed.",
"type": "string"
},
"credentialStatus": {
"additionalProperties": false,
"properties": {
"accountDefault": {
"description": "Optional default account id.",
"type": "string"
},
"apiKey": {
"description": "Redacted per-request API key status.",
"type": "string"
},
"apiKeyHeader": {
"description": "Inbound API key header name (X-MBX-APIKEY).",
"type": "string"
},
"apiSecret": {
"description": "Whether the per-request API secret is set.",
"type": "string"
},
"apiSecretHeader": {
"description": "Inbound API secret header name (X-MBX-APISECRET).",
"type": "string"
},
"mcpHostSeesApiSecret": {
"description": "True: this MCP host receives the raw API secret to compute the HMAC signature.",
"type": "boolean"
},
"mode": {
"description": "Credential mode.",
"type": "string"
},
"outboundAuthHeaders": {
"description": "Headers sent to Quote.Trade private APIs.",
"type": "string"
},
"trustWarning": {
"description": "What possession of the API secret grants this MCP host.",
"type": "string"
}
},
"required": [
"mode",
"apiKeyHeader",
"apiSecretHeader",
"apiKey",
"apiSecret",
"outboundAuthHeaders",
"mcpHostSeesApiSecret",
"trustWarning"
],
"type": "object"
},
"dailyNotionalUsed": {
"description": "Compatibility field, always zero: MCP does not track a daily USD budget.",
"type": "number"
},
"depositAssets": {
"description": "Supported deposit asset symbols (USDC, USDT, XUSDC).",
"items": {
"type": "string"
},
"type": "array"
},
"depositsExposedThroughMcp": {
"description": "True when deposit-address tools are registered in tools/list.",
"type": "boolean"
},
"directApiDiscoveryUrl": {
"description": "Public GET guide for efficient direct REST/WebSocket use.",
"type": "string"
},
"liquidityApiBase": {
"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.",
"type": "string"
},
"liveTradingExecutable": {
"description": "Server configuration permits orders: trading enabled and a nonempty symbol allowlist. No MCP USD cap; caller credentials and backend account checks are still required.",
"type": "boolean"
},
"liveWithdrawExecutable": {
"description": "Server configuration permits a supported withdrawal asset: trading enabled and USDC/USDT/XUSDC allowed. No MCP USD cap; caller withdrawal entitlement and backend balance checks are still required.",
"type": "boolean"
},
"maxCallsPerMinute": {
"description": "Per-caller MCP call rate limit.",
"type": "integer"
},
"maxDailyNotionalUsd": {
"description": "Null: no MCP cumulative daily USD cap on orders or withdrawals.",
"type": "null"
},
"maxNotionalMode": {
"description": "Always unlimited for MCP orders and withdrawals. Backend account controls still apply.",
"type": "string"
},
"maxNotionalUsd": {
"description": "Null: no MCP per-order or per-withdrawal USD notional cap.",
"type": "null"
},
"mcpEndpointPath": {
"description": "Local MCP path.",
"type": "string"
},
"mcpHostSeesApiSecret": {
"description": "True when private tools accept X-MBX-APISECRET at this MCP host.",
"type": "boolean"
},
"mcpProtocolVersion": {
"description": "MCP protocol version.",
"type": "string"
},
"mcpPublicUrl": {
"description": "Public MCP URL.",
"type": "string"
},
"ordersExposedThroughMcp": {
"description": "True when order tools are registered in tools/list.",
"type": "boolean"
},
"releaseDate": {
"description": "Adapter release date (YYYY-MM-DD).",
"type": "string"
},
"servletOnly": {
"description": "True when this adapter is servlet-hosted only.",
"type": "boolean"
},
"tools": {
"description": "Registered tool names.",
"items": {
"type": "string"
},
"type": "array"
},
"tradingEnabled": {
"description": "Server-side live trading/withdraw enablement.",
"type": "boolean"
},
"version": {
"description": "Adapter version.",
"type": "string"
},
"walletLoginOptional": {
"description": "True: agents can trade with a web-app API key without wallet logon.",
"type": "boolean"
},
"withdrawApprovalTextRequired": {
"description": "Exact approval friction text for live withdraws.",
"type": "string"
},
"withdrawAssets": {
"description": "Supported withdraw asset symbols (stablecoins only: USDC, USDT, XUSDC).",
"items": {
"type": "string"
},
"type": "array"
},
"withdrawAssetsOnly": {
"description": "stablecoins-only",
"type": "string"
},
"withdrawDestination": {
"description": "Always own-wallet-login-only; no toAddress is ever accepted.",
"type": "string"
},
"withdrawalsExposedThroughMcp": {
"description": "True when withdraw tools are registered in tools/list.",
"type": "boolean"
},
"wsBase": {
"description": "Quote.Trade WebSocket base.",
"type": "string"
}
},
"required": [
"adapter",
"version",
"releaseDate",
"ordersExposedThroughMcp",
"withdrawalsExposedThroughMcp",
"depositsExposedThroughMcp",
"liveTradingExecutable",
"liveWithdrawExecutable",
"tradingEnabled",
"allowedSymbols",
"allowedSymbolsMode",
"maxNotionalUsd",
"maxNotionalMode",
"approvalFrictionOnly",
"credentialStatus",
"tools"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"account": {
"description": "Quote.Trade account/user id. Optional (defaults to account init-param, QUOTE_TRADE_ACCOUNT, or 0).",
"type": "integer"
},
"approvalText": {
"description": "Agent-supplied confirmation friction (not a security control). Must exactly equal: APPROVE QUOTE.TRADE CANCEL ORDER",
"type": "string"
},
"humanApproved": {
"description": "Agent-supplied confirmation friction (not a security control). Must be true; enableTrading remains authoritative.",
"type": "boolean"
},
"orderId": {
"description": "The order id returned by quote_trade_place_order.",
"type": "integer"
},
"side": {
"description": "Optional BUY or SELL, matching the original order. Passed through if given.",
"type": "string"
},
"symbol": {
"description": "Instrument symbol the order was placed on, such as BTC.",
"type": "string"
}
},
"required": [
"symbol",
"orderId",
"humanApproved",
"approvalText"
],
"type": "object"
},
"name": "quote_trade_cancel_order",
"outputSchema": {
"additionalProperties": false,
"properties": {
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
},
"endpoint": {
"description": "Quote.Trade API endpoint path.",
"type": "string"
},
"method": {
"description": "HTTP method used against Quote.Trade.",
"type": "string"
},
"raw": {
"description": "Raw JSON response body.",
"type": "string"
},
"status": {
"description": "HTTP status code.",
"type": "integer"
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"type": "object"
}
},
{
"description": "Trade step 3. GET /api/depth?symbol=SYMBOL&limit=N. Use depth quantity to choose a suitable limit price before placing an order.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"limit": {
"description": "Optional maximum levels per side. Positive values are enforced by MCP; omitted/nonpositive uses upstream depth.",
"type": "integer"
},
"symbol": {
"description": "Instrument symbol from quote_trade_instruments, such as BTC or ETH.",
"type": "string"
}
},
"required": [
"symbol"
],
"type": "object"
},
"name": "quote_trade_depth",
"outputSchema": {
"additionalProperties": false,
"properties": {
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
},
"endpoint": {
"description": "Quote.Trade API endpoint path.",
"type": "string"
},
"method": {
"description": "HTTP method used against Quote.Trade.",
"type": "string"
},
"raw": {
"description": "Raw JSON response body.",
"type": "string"
},
"status": {
"description": "HTTP status code.",
"type": "integer"
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"limit": {
"description": "Max symbols to return. Default 50, max 200.",
"type": "integer"
},
"skip": {
"description": "Number of matching symbols to skip before returning. Default 0.",
"type": "integer"
},
"symbols": {
"description": "Optional comma-separated symbol filter, e.g. BTC,ETH,SOL. When set, pagination applies to the filtered list.",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "quote_trade_exchange_info",
"outputSchema": {
"additionalProperties": false,
"properties": {
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
},
"endpoint": {
"description": "Quote.Trade API endpoint path.",
"type": "string"
},
"method": {
"description": "HTTP method used against Quote.Trade.",
"type": "string"
},
"raw": {
"description": "Raw JSON response body.",
"type": "string"
},
"status": {
"description": "HTTP status code.",
"type": "integer"
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"login": {
"description": "Wallet address used as login, e.g. 0x15b65a49faf9a4047e912d7de4a77fe24c7cf483.",
"type": "string"
}
},
"required": [
"login"
],
"type": "object"
},
"name": "quote_trade_get_challenge",
"outputSchema": {
"additionalProperties": false,
"properties": {
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
},
"endpoint": {
"description": "Quote.Trade API endpoint path.",
"type": "string"
},
"method": {
"description": "HTTP method used against Quote.Trade.",
"type": "string"
},
"raw": {
"description": "Raw JSON response body.",
"type": "string"
},
"status": {
"description": "HTTP status code.",
"type": "integer"
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"type": "object"
}
},
{
"description": "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).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"symbol": {
"description": "Deposit asset symbol: USDC or USDT (mainnet), or XUSDC (USDC on XDC network).",
"type": "string"
}
},
"required": [
"symbol"
],
"type": "object"
},
"name": "quote_trade_get_deposit_address",
"outputSchema": {
"additionalProperties": false,
"properties": {
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
},
"endpoint": {
"description": "Quote.Trade API endpoint path.",
"type": "string"
},
"method": {
"description": "HTTP method used against Quote.Trade.",
"type": "string"
},
"raw": {
"description": "Raw JSON response body.",
"type": "string"
},
"status": {
"description": "HTTP status code.",
"type": "integer"
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"required": [],
"type": "object"
},
"name": "quote_trade_get_deposit_history",
"outputSchema": {
"additionalProperties": false,
"properties": {
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
},
"endpoint": {
"description": "Quote.Trade API endpoint path.",
"type": "string"
},
"method": {
"description": "HTTP method used against Quote.Trade.",
"type": "string"
},
"raw": {
"description": "Raw JSON response body.",
"type": "string"
},
"status": {
"description": "HTTP status code.",
"type": "integer"
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"assetType": {
"description": "Optional index/basket asset type filter. Omit for all.",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "quote_trade_get_index_positions",
"outputSchema": {
"additionalProperties": false,
"properties": {
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
},
"endpoint": {
"description": "Quote.Trade API endpoint path.",
"type": "string"
},
"method": {
"description": "HTTP method used against Quote.Trade.",
"type": "string"
},
"raw": {
"description": "Raw JSON response body.",
"type": "string"
},
"status": {
"description": "HTTP status code.",
"type": "integer"
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"orderId": {
"description": "Optional order id to narrow to one order's history. Omit for the full order history.",
"type": "integer"
}
},
"required": [],
"type": "object"
},
"name": "quote_trade_get_order_history",
"outputSchema": {
"additionalProperties": false,
"properties": {
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
},
"endpoint": {
"description": "Quote.Trade API endpoint path.",
"type": "string"
},
"method": {
"description": "HTTP method used against Quote.Trade.",
"type": "string"
},
"raw": {
"description": "Raw JSON response body.",
"type": "string"
},
"status": {
"description": "HTTP status code.",
"type": "integer"
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"orderId": {
"description": "The order id returned by quote_trade_place_order.",
"type": "integer"
}
},
"required": [
"orderId"
],
"type": "object"
},
"name": "quote_trade_get_order_status",
"outputSchema": {
"additionalProperties": false,
"properties": {
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
},
"endpoint": {
"description": "Quote.Trade API endpoint path.",
"type": "string"
},
"method": {
"description": "HTTP method used against Quote.Trade.",
"type": "string"
},
"raw": {
"description": "Raw JSON response body.",
"type": "string"
},
"status": {
"description": "HTTP status code.",
"type": "integer"
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"endTime": {
"description": "Optional inclusive end of a time range, epoch milliseconds.",
"type": "integer"
},
"limit": {
"description": "Optional maximum number of orders to return.",
"type": "integer"
},
"startTime": {
"description": "Optional inclusive start of a time range, epoch milliseconds.",
"type": "integer"
},
"symbol": {
"description": "Optional instrument symbol filter, such as BTC. Omit for all symbols.",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "quote_trade_get_orders",
"outputSchema": {
"additionalProperties": false,
"properties": {
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
},
"endpoint": {
"description": "Quote.Trade API endpoint path.",
"type": "string"
},
"method": {
"description": "HTTP method used against Quote.Trade.",
"type": "string"
},
"raw": {
"description": "Raw JSON response body.",
"type": "string"
},
"status": {
"description": "HTTP status code.",
"type": "integer"
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"required": [],
"type": "object"
},
"name": "quote_trade_get_positions",
"outputSchema": {
"additionalProperties": false,
"properties": {
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
},
"endpoint": {
"description": "Quote.Trade API endpoint path.",
"type": "string"
},
"method": {
"description": "HTTP method used against Quote.Trade.",
"type": "string"
},
"raw": {
"description": "Raw JSON response body.",
"type": "string"
},
"status": {
"description": "HTTP status code.",
"type": "integer"
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"required": [],
"type": "object"
},
"name": "quote_trade_get_risk",
"outputSchema": {
"additionalProperties": false,
"properties": {
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
},
"endpoint": {
"description": "Quote.Trade API endpoint path.",
"type": "string"
},
"method": {
"description": "HTTP method used against Quote.Trade.",
"type": "string"
},
"raw": {
"description": "Raw JSON response body.",
"type": "string"
},
"status": {
"description": "HTTP status code.",
"type": "integer"
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"required": [],
"type": "object"
},
"name": "quote_trade_get_user_wallets",
"outputSchema": {
"additionalProperties": false,
"properties": {
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
},
"endpoint": {
"description": "Quote.Trade API endpoint path.",
"type": "string"
},
"method": {
"description": "HTTP method used against Quote.Trade.",
"type": "string"
},
"raw": {
"description": "Raw JSON response body.",
"type": "string"
},
"status": {
"description": "HTTP status code.",
"type": "integer"
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"required": [],
"type": "object"
},
"name": "quote_trade_get_withdraw_requests",
"outputSchema": {
"additionalProperties": false,
"properties": {
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
},
"endpoint": {
"description": "Quote.Trade API endpoint path.",
"type": "string"
},
"method": {
"description": "HTTP method used against Quote.Trade.",
"type": "string"
},
"raw": {
"description": "Raw JSON response body.",
"type": "string"
},
"status": {
"description": "HTTP status code.",
"type": "integer"
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"limit": {
"description": "Max instruments to return. Default 50, max 200.",
"type": "integer"
},
"skip": {
"description": "Number of instruments to skip before returning. Default 0.",
"type": "integer"
}
},
"required": [],
"type": "object"
},
"name": "quote_trade_instruments",
"outputSchema": {
"additionalProperties": false,
"properties": {
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
},
"endpoint": {
"description": "Quote.Trade API endpoint path.",
"type": "string"
},
"method": {
"description": "HTTP method used against Quote.Trade.",
"type": "string"
},
"raw": {
"description": "Raw JSON response body.",
"type": "string"
},
"status": {
"description": "HTTP status code.",
"type": "integer"
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"challenge": {
"description": "Challenge text returned by quote_trade_get_challenge (Sign auth token: ...).",
"type": "string"
},
"isNewUser": {
"description": "From quote_trade_get_challenge. true -> registerUser; false -> logon. If omitted, logon is tried first then registerUser on failure.",
"type": "boolean"
},
"signature": {
"description": "Wallet signature of the challenge text (0x-prefixed hex).",
"type": "string"
}
},
"required": [
"challenge",
"signature"
],
"type": "object"
},
"name": "quote_trade_logon",
"outputSchema": {
"additionalProperties": false,
"properties": {
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
},
"credentialMapping": {
"description": "Present on success only. Maps this response's requestToken/requestSecret/id to the MCP client headers and account field to use next.",
"type": "object"
},
"endpoint": {
"description": "Quote.Trade API endpoint path.",
"type": "string"
},
"method": {
"description": "HTTP method used against Quote.Trade.",
"type": "string"
},
"nextStep": {
"description": "Present on success only. What to configure before calling private tools.",
"type": "string"
},
"raw": {
"description": "Raw JSON response body.",
"type": "string"
},
"status": {
"description": "HTTP status code.",
"type": "integer"
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"type": "object"
}
},
{
"description": "Optional before live trade. Normalize/validate a BUY/SELL order locally without sending it.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"account": {
"description": "Quote.Trade account/user id. Optional for preview (defaults to account init-param, QUOTE_TRADE_ACCOUNT, or 0). Required for live place_order.",
"type": "integer"
},
"disableLeverage": {
"description": "1 disables leverage; 0 enables leverage/shorting only if server allowLeverage is true.",
"type": "integer"
},
"paymentCurrency": {
"description": "Payment currency such as USDT.",
"type": "string"
},
"price": {
"description": "Limit price chosen after quote_trade_depth.",
"type": "number"
},
"quantity": {
"description": "Order quantity.",
"type": "number"
},
"side": {
"description": "BUY or SELL.",
"type": "string"
},
"symbol": {
"description": "Instrument symbol from quote_trade_instruments, such as BTC.",
"type": "string"
},
"timestamp": {
"description": "Optional client timestamp in milliseconds.",
"type": "integer"
},
"type": {
"description": "LIMIT only in this adapter.",
"type": "string"
}
},
"required": [
"symbol",
"side",
"price",
"quantity"
],
"type": "object"
},
"name": "quote_trade_order_preview",
"outputSchema": {
"additionalProperties": false,
"properties": {
"approvalFrictionOnly": {
"description": "True when approval fields are friction only.",
"type": "boolean"
},
"approvalTextRequired": {
"description": "Exact approval friction text.",
"type": "string"
},
"credentialsPresent": {
"description": "Whether per-request trading credentials are present.",
"type": "boolean"
},
"destination": {
"description": "Withdraw previews only: always own-wallet-login-only (no toAddress accepted).",
"type": "string"
},
"endpoint": {
"description": "Target Quote.Trade order endpoint.",
"type": "string"
},
"estimatedNotional": {
"description": "Estimated notional in USD (orders: price×qty; withdraws: USD price×human quantity).",
"type": "number"
},
"estimatedNotionalUsd": {
"description": "Withdraw USD notional. Present on withdraw previews when priced.",
"type": "number"
},
"estimatedQuantity": {
"description": "Withdraw human quantity only (quantity / 10^quantity_scale). Present on withdraw previews.",
"type": "number"
},
"notionalWarning": {
"description": "Withdraw previews only: present when a USD price could not be resolved.",
"type": "string"
},
"priceSource": {
"description": "How priceUsd was obtained (stablecoin-peg|ticker|ticker-unavailable).",
"type": "string"
},
"priceUsd": {
"description": "USD unit price used for withdraw notional.",
"type": "number"
},
"requestBody": {
"additionalProperties": true,
"description": "Normalized order request body that would be posted.",
"type": "object"
},
"safety": {
"description": "Preview safety notes.",
"type": "string"
},
"symbolAllowed": {
"description": "Whether the order symbol or withdrawal asset passes its own allowlist (empty=deny-all; *=all supported).",
"type": "boolean"
},
"tradingEnabled": {
"description": "Server-side trading enablement.",
"type": "boolean"
},
"willSend": {
"description": "Whether this preview would send a live order.",
"type": "boolean"
},
"withdrawAssetAllowed": {
"description": "Withdraw previews only: whether the asset passes allowedWithdrawAssets.",
"type": "boolean"
},
"withinMaxNotional": {
"description": "Always true for a valid preview: MCP imposes no USD notional cap. This does not establish balance, margin or authorization.",
"type": "boolean"
}
},
"required": [
"willSend",
"endpoint",
"requestBody",
"estimatedNotional",
"symbolAllowed",
"withinMaxNotional",
"tradingEnabled",
"credentialsPresent",
"approvalFrictionOnly",
"safety"
],
"type": "object"
}
},
{
"description": "Trade step 4. POST /api/order with a suitable price after instruments/ticker/depth. Requires tradingEnabled, allowedSymbols (* or explicit list; empty denies), and API credentials. No MCP USD notional cap applies. Sending X-MBX-APISECRET to this MCP host grants it full signing authority. humanApproved/approvalText are agent friction only.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"account": {
"description": "Quote.Trade account/user id. Optional for preview (defaults to account init-param, QUOTE_TRADE_ACCOUNT, or 0). Required for live place_order.",
"type": "integer"
},
"approvalText": {
"description": "Agent-supplied confirmation friction (not a security control). Must exactly equal: APPROVE QUOTE.TRADE LIVE ORDER",
"type": "string"
},
"disableLeverage": {
"description": "1 disables leverage; 0 enables leverage/shorting only if server allowLeverage is true.",
"type": "integer"
},
"humanApproved": {
"description": "Agent-supplied confirmation friction (not a security control). Must be true; enableTrading remains authoritative.",
"type": "boolean"
},
"paymentCurrency": {
"description": "Payment currency such as USDT.",
"type": "string"
},
"price": {
"description": "Limit price chosen after quote_trade_depth.",
"type": "number"
},
"quantity": {
"description": "Order quantity.",
"type": "number"
},
"side": {
"description": "BUY or SELL.",
"type": "string"
},
"symbol": {
"description": "Instrument symbol from quote_trade_instruments, such as BTC.",
"type": "string"
},
"timestamp": {
"description": "Optional client timestamp in milliseconds.",
"type": "integer"
},
"type": {
"description": "LIMIT only in this adapter.",
"type": "string"
}
},
"required": [
"account",
"symbol",
"side",
"price",
"quantity",
"humanApproved",
"approvalText"
],
"type": "object"
},
"name": "quote_trade_place_order",
"outputSchema": {
"additionalProperties": false,
"properties": {
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
},
"endpoint": {
"description": "Quote.Trade API endpoint path.",
"type": "string"
},
"method": {
"description": "HTTP method used against Quote.Trade.",
"type": "string"
},
"raw": {
"description": "Raw JSON response body.",
"type": "string"
},
"status": {
"description": "HTTP status code.",
"type": "integer"
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"type": "object"
}
},
{
"description": "Call GET /api/status and return system status, server time, contracts URL, and feature flags.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"required": [],
"type": "object"
},
"name": "quote_trade_status",
"outputSchema": {
"additionalProperties": false,
"properties": {
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
},
"endpoint": {
"description": "Quote.Trade API endpoint path.",
"type": "string"
},
"method": {
"description": "HTTP method used against Quote.Trade.",
"type": "string"
},
"raw": {
"description": "Raw JSON response body.",
"type": "string"
},
"status": {
"description": "HTTP status code.",
"type": "integer"
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"type": "object"
}
},
{
"description": "Trade step 2. GET /api/ticker?symbol=SYMBOL for a symbol from quote_trade_instruments. Returns last price, bid, ask, lastUpdateId.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"symbol": {
"description": "Instrument symbol from quote_trade_instruments, such as BTC or ETH.",
"type": "string"
}
},
"required": [
"symbol"
],
"type": "object"
},
"name": "quote_trade_ticker",
"outputSchema": {
"additionalProperties": false,
"properties": {
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
},
"endpoint": {
"description": "Quote.Trade API endpoint path.",
"type": "string"
},
"method": {
"description": "HTTP method used against Quote.Trade.",
"type": "string"
},
"raw": {
"description": "Raw JSON response body.",
"type": "string"
},
"status": {
"description": "HTTP status code.",
"type": "integer"
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"type": "object"
}
},
{
"description": "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, and allowedWithdrawAssets (independent of the trading allowedSymbols allowlist). No MCP USD notional cap applies. humanApproved/approvalText are agent friction only.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"account": {
"description": "Quote.Trade account/user id. Optional for preview (defaults to account init-param, QUOTE_TRADE_ACCOUNT, or 0). Required for live withdraw.",
"type": "integer"
},
"approvalText": {
"description": "Agent-supplied confirmation friction (not a security control). Must exactly equal: APPROVE QUOTE.TRADE LIVE WITHDRAW",
"type": "string"
},
"humanApproved": {
"description": "Agent-supplied confirmation friction (not a security control). Must be true; enableTrading remains authoritative.",
"type": "boolean"
},
"quantity": {
"description": "Scaled integer quantity as string (API format). Example: \"20000000\" with quantity_scale=6 means 20 USDC.",
"type": "string"
},
"quantity_scale": {
"description": "Decimal scale for quantity. Example: 6 for USDC.",
"type": "integer"
},
"symbol": {
"description": "Stablecoin to withdraw: USDC, USDT, or XUSDC only (not BTC/ETH/other).",
"type": "string"
}
},
"required": [
"account",
"symbol",
"quantity",
"quantity_scale",
"humanApproved",
"approvalText"
],
"type": "object"
},
"name": "quote_trade_withdraw",
"outputSchema": {
"additionalProperties": false,
"properties": {
"body": {
"description": "Parsed JSON response body when valid JSON; otherwise the raw text."
},
"endpoint": {
"description": "Quote.Trade API endpoint path.",
"type": "string"
},
"method": {
"description": "HTTP method used against Quote.Trade.",
"type": "string"
},
"raw": {
"description": "Raw JSON response body.",
"type": "string"
},
"status": {
"description": "HTTP status code.",
"type": "integer"
}
},
"required": [
"method",
"endpoint",
"status",
"body",
"raw"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"account": {
"description": "Quote.Trade account/user id. Optional for preview (defaults to account init-param, QUOTE_TRADE_ACCOUNT, or 0). Required for live withdraw.",
"type": "integer"
},
"quantity": {
"description": "Scaled integer quantity as string (API format). Example: \"20000000\" with quantity_scale=6 means 20 USDC.",
"type": "string"
},
"quantity_scale": {
"description": "Decimal scale for quantity. Example: 6 for USDC.",
"type": "integer"
},
"symbol": {
"description": "Stablecoin to withdraw: USDC, USDT, or XUSDC only (not BTC/ETH/other).",
"type": "string"
}
},
"required": [
"symbol",
"quantity",
"quantity_scale"
],
"type": "object"
},
"name": "quote_trade_withdraw_preview",
"outputSchema": {
"additionalProperties": false,
"properties": {
"approvalFrictionOnly": {
"description": "True when approval fields are friction only.",
"type": "boolean"
},
"approvalTextRequired": {
"description": "Exact approval friction text.",
"type": "string"
},
"credentialsPresent": {
"description": "Whether per-request trading credentials are present.",
"type": "boolean"
},
"destination": {
"description": "Withdraw previews only: always own-wallet-login-only (no toAddress accepted).",
"type": "string"
},
"endpoint": {
"description": "Target Quote.Trade order endpoint.",
"type": "string"
},
"estimatedNotional": {
"description": "Estimated notional in USD (orders: price×qty; withdraws: USD price×human quantity).",
"type": "number"
},
"estimatedNotionalUsd": {
"description": "Withdraw USD notional. Present on withdraw previews when priced.",
"type": "number"
},
"estimatedQuantity": {
"description": "Withdraw human quantity only (quantity / 10^quantity_scale). Present on withdraw previews.",
"type": "number"
},
"notionalWarning": {
"description": "Withdraw previews only: present when a USD price could not be resolved.",
"type": "string"
},
"priceSource": {
"description": "How priceUsd was obtained (stablecoin-peg|ticker|ticker-unavailable).",
"type": "string"
},
"priceUsd": {
"description": "USD unit price used for withdraw notional.",
"type": "number"
},
"requestBody": {
"additionalProperties": true,
"description": "Normalized order request body that would be posted.",
"type": "object"
},
"safety": {
"description": "Preview safety notes.",
"type": "string"
},
"symbolAllowed": {
"description": "Whether the order symbol or withdrawal asset passes its own allowlist (empty=deny-all; *=all supported).",
"type": "boolean"
},
"tradingEnabled": {
"description": "Server-side trading enablement.",
"type": "boolean"
},
"willSend": {
"description": "Whether this preview would send a live order.",
"type": "boolean"
},
"withdrawAssetAllowed": {
"description": "Withdraw previews only: whether the asset passes allowedWithdrawAssets.",
"type": "boolean"
},
"withinMaxNotional": {
"description": "Always true for a valid preview: MCP imposes no USD notional cap. This does not establish balance, margin or authorization.",
"type": "boolean"
}
},
"required": [
"willSend",
"endpoint",
"requestBody",
"estimatedNotional",
"symbolAllowed",
"withinMaxNotional",
"tradingEnabled",
"credentialsPresent",
"approvalFrictionOnly",
"safety"
],
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:64dea7161e1a504c8f383207f9fc66d49e55a123e0e833937d5557147a95b758 | sha256sum