What you will accomplish
- Verify the hosted endpoint and protocol version
- Send initialize and notifications/initialized correctly
- Preserve an MCP session ID when the server returns one
- List live tools instead of assuming tool names or schemas
- Identify the withdrawal preview and live withdrawal tools
- Call public status or ticker data before any authenticated workflow
Before you begin
- An MCP-compatible client or curl for a protocol-level smoke test
- Network access to https://quote.trade/mcp
- No Quote.Trade account API key is required for the documented public market-data tools
Open the official MCP discovery record
Open the official MCP discovery JSON. Confirm status hosted-live, endpoint https://quote.trade/mcp, Streamable HTTP transport, protocol version 2025-06-18, and the current safety settings. REST and WebSocket remain available for direct application integrations.
https://quote.trade/.well-known/mcp.jsonThe discovery document identifies the hosted endpoint, and the agent guide classifies status, exchange information, instruments, ticker, and depth as public tools.
Send a complete initialize request
Use POST. Send both application/json and text/event-stream in Accept because Streamable HTTP clients may negotiate either response form. Save MCP-Session-Id from the response headers if the server returns it; later requests in that session should echo the value.
curl -i https://quote.trade/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H 'MCP-Protocol-Version: 2025-06-18' \
--data '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"quote-trade-smoke-test","version":"1.0.0"}}}'HTTP 200 with a JSON-RPC initialize result. Record any MCP-Session-Id response header.
Complete initialization
After a successful initialize response, send notifications/initialized. It is a notification and normally has no JSON-RPC result. If initialize returns MCP-Session-Id, add a header containing that exact returned value to later requests; otherwise omit the header.
curl -i https://quote.trade/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H 'MCP-Protocol-Version: 2025-06-18' \
--data '{"jsonrpc":"2.0","method":"notifications/initialized"}'A successful notification may return HTTP 202 with an empty body.
List the tools exposed by the live server
Read tool names, argument schemas, output schemas, and safety annotations from the live tools/list response.
curl -i https://quote.trade/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H 'MCP-Protocol-Version: 2025-06-18' \
--data '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'A tools array containing the public tools and any additional tools enabled on the server.
Call a public read-only tool
Start with status or ticker. The documented public market-data tools do not require a Quote.Trade account API key, although the MCP connection itself may still require authentication. Keep the structured response and its source fields, and use a fresh result for any current price.
curl -i https://quote.trade/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H 'MCP-Protocol-Version: 2025-06-18' \
--data '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"quote_trade_status","arguments":{}}}'A structured public status response. Then repeat with quote_trade_ticker and a symbol returned by live metadata.
Review the withdrawal tools
The server provides two withdrawal tools: quote_trade_withdraw_preview and quote_trade_withdraw. Preview checks the account, asset, scaled quantity, and quantity scale without moving funds. Live withdrawal also requires server-side withdrawal permission, per-request credentials, humanApproved: true, and the exact phrase APPROVE QUOTE.TRADE LIVE WITHDRAW.
Funds can go only to the user's login wallet; the agent cannot choose another address. Wallet challenge signing happens outside MCP. The server does not expose arbitrary-address transfers, staking, or unrestricted action loops.
curl -s https://quote.trade/mcp -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' -H 'MCP-Protocol-Version: 2025-06-18' --data '{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"quote_trade_withdraw_preview","arguments":{"symbol":"USDC","quantity":"20000000","quantity_scale":6}}}'A preview with willSend: false, a 20 USDC estimated amount, destination own-wallet-login-only, and the exact approval text required for a separate live withdrawal. No funds move.
Common problems and fixes
GET /mcp returns 405
Expected. The hosted endpoint accepts MCP messages over POST; GET is not a human-readable documentation route.
The server rejects Accept
Send Accept: application/json, text/event-stream together with Content-Type: application/json.
A later request loses the session
Echo MCP-Session-Id only when initialize returned it. Do not invent a session ID.
The live tool list changed
Review the changed schema and stop before calling a tool whose behavior or permissions are unclear.
Answers before you continue
Does a successful public tool call authorize trading or withdrawal?
No. Public tools are read-only. Account, order, and withdrawal workflows require separate credentials, server-side controls, and request-specific approval.
Does Quote.Trade MCP support withdrawals?
Yes. The server exposes withdrawal preview and live withdrawal tools. A live withdrawal can send only to the user’s login wallet; an agent cannot supply an arbitrary destination address.
Primary sources
Use the live tools/list response and quote_trade_api_manifest for currently exposed MCP capabilities; use the official guides for workflow context. If a guide and the live tool definition disagree, stop before any order or withdrawal call and update the integration. Public metadata fields, permissions, routes, and behavior can change.