{"openapi":"3.1.0","info":{"title":"MoltNode by Chord: RPC gateway + swaps","version":"1.1.0","description":"One clean URL per chain. JSON-RPC 2.0 over HTTP POST. No API key required. For humans and agents. Swaps go through Chord (getchord.xyz): chordSwapQuote returns the best route, the unsigned transaction and a simulation; broadcast the signed transaction with rpcCall eth_sendRawTransaction. MCP server (read + trade): https://moltnode.ag/mcp."},"servers":[{"url":"https://moltnode.ag"}],"paths":{"/{chain}":{"post":{"operationId":"rpcCall","summary":"Send a JSON-RPC 2.0 request to a chain","parameters":[{"name":"chain","in":"path","required":true,"description":"Chain slug (see GET /api/chains).","schema":{"type":"string","enum":["monad","ethereum","base","arbitrum","optimism","polygon","bnb","solana","avalanche","hyperevm","berachain","abstract","sei","sonic","mantle","taiko","zksync","zetachain","opbnb","bob","edge","stable","katana","morph","swell","0g","tac","xlayer","gnosis","fantom","sui"]}},{"name":"X-Chord-Key","in":"header","required":false,"description":"Optional free Chord API key (https://getchord.xyz/developer): 10,000 requests a day and 5x the per-client rates, counted per key.","schema":{"type":"string"}},{"name":"X-MoltNode-Key","in":"header","required":false,"description":"Optional MoltNode key from https://moltnode.ag/quest (a wallet that swapped through Chord): 100,000 to 20,000,000 requests a month by the wallet's 30-day Chord volume, 10x the per-client rates. Without a key: 2,000 a day per IP.","schema":{"type":"string","pattern":"^mn_[0-9a-f]{40}$"}},{"name":"key","in":"query","required":false,"description":"The same MoltNode key, for wallets and clients that cannot send headers.","schema":{"type":"string","pattern":"^mn_[0-9a-f]{40}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonRpcRequest"},"examples":{"blockNumber":{"summary":"Latest block number (EVM)","value":{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}},"batch":{"summary":"Batch request","value":[{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]},{"jsonrpc":"2.0","id":2,"method":"eth_gasPrice","params":[]}]}}}}},"responses":{"200":{"description":"JSON-RPC 2.0 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonRpcResponse"}}}}}},"get":{"operationId":"endpointCard","summary":"Self-describing endpoint card (Accept: application/json) or the human page","parameters":[{"name":"chain","in":"path","required":true,"schema":{"type":"string","enum":["monad","ethereum","base","arbitrum","optimism","polygon","bnb","solana","avalanche","hyperevm","berachain","abstract","sei","sonic","mantle","taiko","zksync","zetachain","opbnb","bob","edge","stable","katana","morph","swell","0g","tac","xlayer","gnosis","fantom","sui"]}}],"responses":{"200":{"description":"Endpoint card (JSON) or HTML page"}}}},"/v1/meta/quote":{"servers":[{"url":"https://api.getchord.xyz","description":"Chord (getchord.xyz)"}],"get":{"operationId":"chordSwapQuote","summary":"Best swap route + unsigned transaction + simulation, from Chord","description":"Chord's router answers first; another aggregator only when Chord has no route. Amounts are integer strings in the token's smallest unit; the zero address is the native coin. With taker, the answer carries tx, approval and a simulation from that wallet. Nothing is custodied; the router enforces minAmountOut.","parameters":[{"name":"chain","in":"query","required":true,"schema":{"type":"string","enum":["base","ethereum","monad","bnb","avalanche","arbitrum","robinhood","arc"]}},{"name":"tokenIn","in":"query","required":true,"schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"}},{"name":"tokenOut","in":"query","required":true,"schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"}},{"name":"amount","in":"query","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"taker","in":"query","required":false,"schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"}},{"name":"slippageBps","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":5000}}],"responses":{"200":{"description":"Quote","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChordQuote"}}}}},"externalDocs":{"url":"https://getchord.xyz/docs/api-reference/operations/metaquote/"}}},"/mcp":{"post":{"operationId":"mcp","summary":"MCP server (Streamable HTTP, stateless): read every chain, trade with Chord","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonRpcRequest"}}}},"responses":{"200":{"description":"JSON-RPC answer"},"202":{"description":"Notification accepted"}}}},"/api/chains":{"get":{"operationId":"listChains","summary":"Machine-readable catalog of supported chains","responses":{"200":{"description":"Chain catalog","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChainCatalog"}}}}}}}},"components":{"schemas":{"JsonRpcRequest":{"type":"object","required":["jsonrpc","method"],"properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"type":["integer","string"]},"method":{"type":"string"},"params":{"type":"array","items":{}}}},"JsonRpcResponse":{"type":"object","properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"type":["integer","string"]},"result":{},"error":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"}}}}},"ChordQuote":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"chord, or the fallback aggregator"},"amountIn":{"type":"string"},"amountOut":{"type":"string"},"minAmountOut":{"type":"string"},"feeBps":{"type":"integer"},"priceImpactPct":{"type":["string","null"]},"route":{"type":"object","properties":{"venues":{"type":"array","items":{"type":"string"}}}},"approval":{"type":["object","null"],"properties":{"token":{"type":"string"},"spender":{"type":"string"},"amount":{"type":"string"}}},"tx":{"type":["object","null"],"properties":{"to":{"type":"string"},"data":{"type":"string"},"value":{"type":"string"},"gas":{"type":["string","null"]},"chainId":{"type":"integer"}}},"simulation":{"type":["object","null"],"properties":{"ok":{"type":["boolean","null"]},"amountOut":{"type":"string"},"gasUsed":{"type":"integer"}}},"quoteId":{"type":"string"},"expiresAt":{"type":"integer"}}},"ChainCatalog":{"type":"object","properties":{"name":{"type":"string"},"count":{"type":"integer"},"chains":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"chainId":{"type":["integer","null"]},"family":{"type":"string"},"nativeCurrency":{"type":"string"},"endpoint":{"type":"string"},"probeMethod":{"type":"string"},"explorer":{"type":["string","null"]},"providers":{"type":"integer"},"trade":{"type":["object","null"],"description":"Set when Chord trades on this chain.","properties":{"by":{"type":"string"},"chain":{"type":"string"},"quote":{"type":"string"},"page":{"type":"string"}}}}}}}}}}}