Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,539Letters: 14Defects: 1,323counted 2 min ago
teppi

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 yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:64dea7161e1a504c8f383207f9fc66d49e55a123e0e833937d5557147a95b758 | sha256sum