https://app.ravn.exchange/api/mcp
Transport: Streamable HTTP
Auth: None required. Every tool works anonymously; pass your own API key as the optional
apiKey argument on any tool for a higher rate limit (see Authentication).
Cost: Free. These tools call the same free /v1/* endpoints as the REST API, not the
paid x402 endpoints.
Connect a client
Try it: one prompt, one loop
With the config above added, prompt your client with something like:Swap 0.01 ETH on Ethereum to USDC on Base for 0x1234…5678, my wallet address.A capable MCP client resolves that into:
ravn_quote({ inputChainId: 1, outputChainId: 8453, inputToken: "0xEeee...EEeE", outputToken: "<Base USDC address>", inputAmount: "10000000000000000", userAddress: "0x1234...5678" })→ returns aquoteTokenplus the priced route.ravn_execute({ quoteToken })→ returns{ executionType: "TRANSACTION", transaction: {...} }for this route (0x Gasless/RFQ-style routes instead returnSIGNATURE).- Your agent signs and sends the returned
transactionwith its own wallet — RAVN never touches it. ravn_status({ quoteToken, ref: <statusRef from step 2> }), polled untilstatusis terminal (success,refunded, orfailed).
transaction looks like for each executionType, and Signing: who holds the wallet?
for how an autonomous agent handles step 3 without a human clicking “confirm.”
Tools
ravn_quote
Get a swap quote, same-chain or cross-chain, across all 16 supported chains including native
Bitcoin and Solana as source or destination. Returns a quoteToken to pass to ravn_execute.
ravn_execute
Turn a quoteToken from ravn_quote into an execution payload.
Returns one of three shapes, tagged by
executionType:
TRANSACTION: sign and broadcast yourselfSIGNATURE: sign, RAVN submits on your behalfDEPOSIT: send the input asset to a given address (the common case for Bitcoin-source swaps; seeravn_btc_prepare_sendbelow)
ravn_status
Poll a swap’s status.
Status is authoritative where the venue exposes it. A few venues (Rift, Jupiter, Bebop, 0x
Gasless) report
"unknown" honestly rather than guessing. Check the response’s tracking
field.
ravn_health
No arguments. Liveness check across every venue RAVN routes through, useful to call before a
swap if you want to know whether a route is degraded ahead of time.
ravn_btc_prepare_send
Turns a DEPOSIT-type ravn_execute result into a ready-to-sign Bitcoin transaction (a PSBT),
so your agent doesn’t have to implement UTXO selection or fee estimation itself.
UTXOs and the fee rate are fetched from the public mempool.space API,
with no keys and no auth required.
RAVN never sees or handles a private key at any point. The response is an unsigned PSBT
(
psbtBase64): sign it with your own wallet’s key and broadcast it yourself.Chain IDs
Bitcoin and Solana use negative sentinel IDs rather than their (non-existent, in Bitcoin’s
case) EVM chain IDs. Don’t assume 0 or a positive placeholder.
A full loop, end to end
ravn_quote: get aquoteTokenravn_execute: get backTRANSACTION/SIGNATURE/DEPOSIT- If
DEPOSITand the input asset is Bitcoin:ravn_btc_prepare_send→ sign the PSBT with your own wallet → broadcast - Otherwise: sign/send with your own wallet per the returned payload
- If
ravn_status: poll until terminal

