Raw HTTP / curl¶
For any client that isn't a managed connector — your own agent, a script, or testing — call the MCP's JSON-RPC endpoint directly with a direct API key.
The endpoint is always (note the trailing slash):
Without the slash the server returns a 307 redirect that some HTTP clients don't follow on POST.
Initialize¶
export TCD_KEY="tcd_..."
curl -X POST https://mcp.thecoindaily.co/mcp/ \
-H "Authorization: Bearer $TCD_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc":"2.0","id":1,"method":"initialize",
"params":{"protocolVersion":"2025-06-18","capabilities":{},
"clientInfo":{"name":"my-app","version":"0.1"}}
}' | jq
The response lists the server capabilities and the publication's instructions block — the editorial framing every client receives.
List tools¶
curl -X POST https://mcp.thecoindaily.co/mcp/ \
-H "Authorization: Bearer $TCD_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' \
| jq '.result.tools[].name'
Call a tool¶
curl -X POST https://mcp.thecoindaily.co/mcp/ \
-H "Authorization: Bearer $TCD_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc":"2.0","id":3,"method":"tools/call",
"params":{"name":"get_ticker_sentiment","arguments":{"ticker":"BTC-USD"}}
}' | jq
Standard MCP Streamable HTTP transport. Every tool result includes a disclosure field — preserve it when forwarding content downstream.