THORChain Swap MCP
A public, unauthenticated MCP server providing read-only access to THORChain network data. It allows AI agents to fetch live cross-chain swap quotes, list liquidity pool depths and status, and retrieve current network parameters without requiring API keys or wallet connections.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://swap.thorchain.org/mcpWhat its tools do
16 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to swap.thorchain.org ·
- Passed Endpoint is on the registry namespace domain ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Fetch live cross-chain swap quotes for asset pairs
- List liquidity pools with depth and status data
- Retrieve current THORChain network parameters
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- thorchain-mcp 1.1.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 16 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
},
"logging": {}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
16 advertised
check_reference_memo — Check Reference Memo
Pre-flight check for memoless transactions. Returns what reference would be extracted from the amount and whether it's available for registration.
{
"type": "object",
"required": [
"asset",
"amount"
],
"properties": {
"asset": {
"type": "string",
"description": "The asset (e.g. BTC.BTC)"
},
"amount": {
"type": "string",
"description": "The transaction amount in base units"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_inbound_addresses — Get Inbound Addresses
Returns vault addresses for depositing assets into THORChain. Each chain has its own inbound address along with gas rates and halted status.
{
"type": "object",
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_lastblock — Get Last Block Heights
Returns the last observed and signed block heights for all chains. Useful for monitoring chain sync status and detecting chain halts.
{
"type": "object",
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_network_summary — Get Network Summary
Compact THORChain network status for agents: node counts, bonding/liquidity APY, reserve, pooled RUNE, next churn height, vault migration flag. Prefer this over get_network_info (full toolset only), which returns large per-node bond arrays.
{
"type": "object",
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_outbound_fees — Get Outbound Fees
Returns outbound fee information for all assets including the fee amount, surplus/deficit tracking, and dynamic multiplier. Use this to estimate transaction costs.
{
"type": "object",
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_pool — Get Pool
Returns one liquidity pool by asset (e.g. BTC.BTC): depths, units, status and price. Use list_pools to find asset identifiers and get_pool_stats for volume, fees and APY.
{
"type": "object",
"required": [
"asset"
],
"properties": {
"asset": {
"type": "string",
"description": "The asset identifier (e.g. BTC.BTC or ETH.ETH)"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_pool_stats — Get Pool Stats
Returns detailed analytics and statistics for a specific liquidity pool including volume, fees, APY, and historical metrics.
{
"type": "object",
"required": [
"asset"
],
"properties": {
"asset": {
"type": "string",
"description": "The asset identifier (e.g. BTC.BTC or ETH.ETH)"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_swap_status — Get Swap Status
Answers "did my swap go through?" in plain terms. Returns a status (not_found, pending, streaming, sent, refunded, completed), whether it is done, a one-line summary to tell the user, streaming progress, an estimated wait, and the refund reason. refund=true with status sent means part was refunded. Start here for swap tracking; use get_tx_status only for raw stage detail.
{
"type": "object",
"required": [
"hash"
],
"properties": {
"hash": {
"type": "string",
"description": "The deposit (inbound) transaction hash: the hash of what the user sent to THORChain. A 0x prefix is fine."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_tx — Get Transaction
Returns the observed transaction for a hash (inbound or outbound): chain, addresses, coins, memo and the heights THORChain saw it at. For "did my swap go through?" use get_swap_status.
{
"type": "object",
"required": [
"hash"
],
"properties": {
"hash": {
"type": "string",
"description": "The transaction hash (inbound or outbound)"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_tx_status — Get Transaction Status
Returns THORNode's raw status for an inbound transaction: every processing stage, planned outbounds and sent outbounds. For a plain answer (pending, streaming, sent, refunded) use get_swap_status; use this for stage-level detail.
{
"type": "object",
"required": [
"hash"
],
"properties": {
"hash": {
"type": "string",
"description": "The inbound transaction hash to check status for"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}list_pools — List Pools
Returns all active liquidity pools on THORChain with their balances, units, and status. Supports pagination with limit and offset parameters.
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"description": "Maximum number of results to return (default 100, max 1000)"
},
"offset": {
"type": "integer",
"description": "Number of results to skip for pagination"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}lookup_thorname — Look Up THORName
Returns THORName details including chain addresses, expiry, and owner.
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "THORName to look up"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}ping — Ping THORNode
Health check endpoint. Returns 'pong' if the THORNode is responding. Use this to verify connectivity to the node.
{
"type": "object",
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}prepare_swap — Prepare Swap
Build a ready-to-execute THORChain swap. Returns the exact vault address to send to, the memo, the source chain, the expected output and guaranteed minimum, the estimated time, and an expiry. Use this when the user wants to actually perform a swap, not just price it (for pricing only, use quote_swap). The returned instruction is what a wallet signs and broadcasts; this tool itself never moves funds.
{
"type": "object",
"required": [
"from_asset",
"to_asset",
"amount",
"destination"
],
"properties": {
"amount": {
"type": "integer",
"description": "Amount to swap in THORChain base units (1e8; e.g. 50000000 = 0.5 BTC)"
},
"to_asset": {
"type": "string",
"description": "The target asset to swap to (e.g. ETH.ETH)"
},
"affiliate": {
"type": "string",
"description": "Optional affiliate address or THORName that collects a fee"
},
"from_asset": {
"type": "string",
"description": "The source asset to swap from (e.g. BTC.BTC)"
},
"destination": {
"type": "string",
"description": "The address on the destination chain that will receive the swap output. Required to execute a swap."
},
"affiliate_bps": {
"type": "integer",
"description": "Optional affiliate fee in basis points (0-1000; protocol caps total affiliate fees at 1000 bps)"
},
"max_slippage_bps": {
"type": "integer",
"description": "Maximum acceptable slippage in basis points; sets the min-received limit baked into the memo (default 300 = 3%). Range 1-10000."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}quote_limit — Quote Limit Order
Get a limit order quote with expected output, expiry time, and a generated memo for executing the limit order. Limit orders execute when the target price is reached. For an immediate market swap use quote_swap.
{
"type": "object",
"required": [
"from_asset",
"to_asset",
"amount",
"target_out"
],
"properties": {
"amount": {
"type": "integer",
"description": "The amount in base units (1e8 for most assets)"
},
"to_asset": {
"type": "string",
"description": "The target asset (e.g. ETH.ETH)"
},
"affiliate": {
"type": "string",
"description": "The affiliate address or THORName"
},
"custom_ttl": {
"type": "integer",
"description": "Custom TTL in blocks for the limit order"
},
"from_asset": {
"type": "string",
"description": "The source asset (e.g. BTC.BTC)"
},
"target_out": {
"type": "integer",
"description": "The limit price: minimum acceptable output amount in base units (1e8). The order executes only at this price or better"
},
"destination": {
"type": "string",
"description": "The destination address for the swap output"
},
"affiliate_bps": {
"type": "integer",
"description": "The affiliate fee in basis points (0-1000; protocol caps total affiliate fees at 1000 bps)"
},
"refund_address": {
"type": "string",
"description": "The refund address if the swap fails"
},
"streaming_quantity": {
"type": "integer",
"description": "Number of sub-swaps for streaming"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}quote_swap — Quote Swap
Calculate how much output you would receive when swapping one asset for another. Use this tool to answer questions like 'how much ETH would I get for 100 RUNE?' Returns expected output amount, fees, slippage, estimated time, and a memo for executing the swap.
{
"type": "object",
"required": [
"from_asset",
"to_asset",
"amount"
],
"properties": {
"amount": {
"type": "integer",
"description": "The amount in base units (1e8 for most assets)"
},
"to_asset": {
"type": "string",
"description": "The target asset (e.g. ETH.ETH)"
},
"affiliate": {
"type": "string",
"description": "The affiliate address or THORName"
},
"from_asset": {
"type": "string",
"description": "The source asset (e.g. BTC.BTC)"
},
"destination": {
"type": "string",
"description": "The destination address for the swap output"
},
"affiliate_bps": {
"type": "integer",
"description": "The affiliate fee in basis points (0-1000; protocol caps total affiliate fees at 1000 bps)"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
- 2026-11-09: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 733 ms
- 95th percentile latency
- 733 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 733 ms · metadata changed · 16 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http thorchain-swap-mcp https://swap.thorchain.org/mcpCodex
codex mcp add thorchain-swap-mcp --url https://swap.thorchain.org/mcpCursor
{
"mcpServers": {
"thorchain-swap-mcp": {
"url": "https://swap.thorchain.org/mcp"
}
}
}Cline
{
"mcpServers": {
"thorchain-swap-mcp": {
"type": "streamableHttp",
"url": "https://swap.thorchain.org/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"thorchain-swap-mcp": {
"type": "http",
"url": "https://swap.thorchain.org/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http thorchain-swap-mcp https://swap.thorchain.org/mcpClaude Desktop
https://swap.thorchain.org/mcpWindsurf
{
"mcpServers": {
"thorchain-swap-mcp": {
"serverUrl": "https://swap.thorchain.org/mcp"
}
}
}Let your agent find its tools
Find servers like THORChain Swap MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other ai and machine learning servers
Do you run THORChain Swap MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.