Skip to content

Hosted MCP server

POST
/mcp
curl --request POST \
--url 'https://api.getchord.xyz/v1/mcp?chain=monad' \
--header 'Content-Type: application/json' \
--data '{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "chord_search", "arguments": { "query": "EURC" } } }'

Model Context Protocol over stateless Streamable HTTP: POST one JSON-RPC message (or a batch of up to 20), get JSON back. Methods: initialize, ping, tools/list, tools/call. 17 tools; every data tool takes a chain. ?chain=<key> pins a default chain and names the server chord-<key>. The handshake and the tool list need no credentials and are not metered; a tool call is an ordinary request to this API made as the caller, so it is limited and metered exactly like the REST call it wraps. Send a key as X-API-Key, Authorization: Bearer, or ?apiKey=. A tool-level failure is a normal result with isError: true and a sentence the model can act on. Guide: https://getchord.xyz/docs/agents/mcp/

chain
string
Allowed values: monad robinhood arc avalanche base bnb arbitrum ethereum solana

Default chain for this endpoint.

apiKey
string

Your key, for connectors that cannot set a header.

Media typeapplication/json

A JSON-RPC 2.0 message, or an array of them.

object
key
additional properties
any
Example
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "chord_search",
"arguments": {
"query": "EURC"
}
}
}

The JSON-RPC response. A tool result carries one text block: {chain, route, data} as JSON.

Media typeapplication/json

JSON-RPC 2.0 response.

object
key
additional properties
any
Example
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": "{\"chain\":\"arc\",\"route\":\"GET /v1/tokens/search\",\"data\":{\"chain\":5042,\"q\":\"EURC\",\"tokens\":[{\"address\":\"0xbef5f6d51cb62b58e6a8f77868681825c6fe21c1\",\"symbol\":\"EURC\",\"name\":\"Euro Coin\",\"decimals\":6,\"logoURI\":\"https://assets.coingecko.com/coins/images/26045/small/euro.png\",\"verified\":true}]}}"
}
]
}
}

A notification: nothing to answer.

Invalid parameters — error names the check that failed (INVALID_PARAMS, BAD_ADDRESS, BAD_LIMIT, BAD_HOURS, …).

Media typeapplication/json

Every non-2xx body.

object
error
required

Stable machine code, e.g. INVALID_PARAMS, NOT_READY, RATE_LIMIT_EXCEEDED.

string
message

For humans.

string
statusCode

HTTP status, when included.

integer
Example
{
"error": "INVALID_PARAMS",
"message": "amount must be an integer string in the token's smallest unit"
}