Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Changed the definition of "ravn_execute" and "ravn_quote"
⟨36 unchanged words⟩ , Layerswap, Mayan, NEAR Intents, Rift,2-hopRAVN two-hop routes). Every other venue fixes the recipient when ⟨80 unchanged words⟩
⟨177 unchanged words⟩ gasless venues"},"hops":{"description":"2-hopRAVN/routesdest-call(venue.name \"RAVN\": two-hop, or Relay with a DEX on arrival): the venuesactuallyitused.runs through, in order. Sign hop 1; hop 2 is a unique ⟨239 unchanged words⟩
Changed the definition of "ravn_status"
⟨24 unchanged words⟩ token's smallest unit, when the venue exposesitit. Only populated once status is terminal"},"status":{"type":"string"} ⟨122 unchanged words⟩
Changed the definition of "ravn_quote"
⟨17 unchanged words⟩ raced and produced a usable quote, best expected net outputfirst.first (a quote with slippage.noMinimum counts 0.3% under its outputAmount, the shortfall such a venue typically delivers). Each has its own quoteToken to pass to ⟨382 unchanged words⟩
Changed the definition of "ravn_quote"
⟨280 unchanged words⟩ ]},"isFirm":{"type":"boolean"},"noMinimum":{"description":"True when the venue enforces no minimum output (Rift fills at its own rate once the deposit lands); bps is then not a protection","type":"boolean"}},"required":["bps","isFirm","guaranteedMin","noMinimum"],"type":"object"},{"type" ⟨96 unchanged words⟩
Changed the definition of "ravn_quote" and "ravn_status"
⟨31 unchanged words⟩ the deposit and payout can't be linked on-chain.OnlyThrough this MCP server only NEAR quotes it (NO_LIQUIDITY if it can't, never a public fallback).: RAVN's second private venue, Houdini Swap, needs the end user's IP, user-agent and country for its compliance rules, which an MCP call doesn't carry — use POST /api/v1/quote for it. ~0.3 bps extra on EVM-to-EVM, ~5-8 bps ⟨450 unchanged words⟩
⟨35 unchanged words⟩ :"string"},"ref":{"description":"
Changed the definition of "ravn_status"
⟨35 unchanged words⟩ Status is authoritative where the venue exposes it;Jupiteraisswap theone livevenuethatcan't track reports 'unknown'honestlyrather thanguessing.a guess.
Changed the definition of "ravn_quote"
⟨62 unchanged words⟩ "estimatedTimeIsGuess":{"description":"True when thevenuetimedidn'tisreportRAVN'saestimate,timenotforthethisvenue'squoteown figure","type":"boolean"},"estimatedTimeSeconds":{ ⟨307 unchanged words⟩
Changed the definition of "ravn_execute" and "ravn_quote"
⟨21 unchanged words⟩ destinationAddress":{"description":"Late-bound output recipient,forhonoured by venues thatsupport binding itbind at execution time (e.g. NEAR IntentsChainflip, Garden,ChainflipLayerswap,Rift). Does NOT apply to RelayMayan,AcrossNEAR Intents,EcoRift,or2-hop).
Changed the definition of "ravn_execute", "ravn_quote" and "ravn_status"
⟨56 unchanged words⟩ ,"SIGNATURE"],"type":"string"},"statusRefquoteToken":{"description":"DEPOSITPassonlyto(ravn_submit_signature and ravn_status. On compose this is thedepositpost-bindaddress)token—fromSIGNATUREexecute,getsnot
Changed the definition of "ravn_quote"
Only numbers and dates differ: this server embeds live figures in the definition, so the text moves without the contract changing.
Get a swap quote from RAVN — same-chain or cross-chain, across1617 chains including native (non-wrapped) Bitcoin and Solana ⟨24 unchanged words⟩
Added "ravn_btc_coverage", "ravn_chains", "ravn_submit_signature" and 2 more; changed the definition of "ravn_quote" and "ravn_status" (5 tools before, 10 now)
⟨76 unchanged words⟩ an error","type":"string"},"excludeVenues":{"description":"Drop specific venues from this race, e.g. a risk objection to one of them or ravn_health showing it degraded. Naming a venue that was never eligible for this pair is a no-op, not an error","items":{"type":"string"},"type":"array"},"inputAmount":{"description":"Positive integer string, ⟨16 unchanged words⟩ 1=Ethereum, 8453=Base, -1=Bitcoin, -2=Solana — seeravn_healthravn_chains for the full list, or ravn_health for live venueliststatus","maximum":9007199254740991,"minimum":-9007199254740991,"type ⟨21 unchanged words⟩ 1=Ethereum, 8453=Base, -1=Bitcoin, -2=Solana — seeravn_healthravn_chains for the full list, or ravn_health for live venuelist
Certificate recorded, valid to 2026-12-03
Authorization not required
First tool surface recorded: 5 tools (server version 1.0.2)
Showing the latest 14 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨17 unchanged words⟩ rate limit","type":"string"},"confidential":{"description":"Settle privately via NEAR Intents' Confidential Intents so the deposit and payout can't be linked on-chain. Only NEAR quotes it (NO_LIQUIDITY if it can't, never a public fallback). ~0.3 bps extra on EVM-to-EVM, ~5-8 bps extra when Bitcoin or Solana is a leg, and it can settle slower than a public swap (Bitcoin-source: 13 min public vs 43 min confidential) — read estimatedTimeSeconds before executing","type":"boolean"},"destinationAddress":{"description":"Where output should land ⟨44 unchanged words⟩ instead (see ravn_quote's executable), not an error. A malformed address, one from the wrong ecosystem, or a known non-wallet address (a RAVN-listed token's mint/contract, this swap's own tokens, the native-coin sentinel, burn addresses, Solana core programs, and via an on-chain lookup a Solana token account or program — the token-account error names the owning wallet, which is the address to use) IS an error here — funds sent there are unrecoverable. Omit the field rather than passing an empty string; an empty string is treated as omitted","type":"string"},"excludeVenues":{ ⟨214 unchanged words⟩ Rift) support binding this at execute timeinsteadinstead. Validated against the INPUT chain (refunds are paid back on the origin), with the same non-wallet-address check as destinationAddress","type":"string"},"slippageBps":{ ⟨34 unchanged words⟩
⟨153 unchanged words⟩ must hold; null on gasless venues"},"hops":{"description":"2-hop / dest-call: the venues actually used. Sign hop 1; hop 2 is a unique deposit","items":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"type":"object"},"type":"array"},"input":{"additionalProperties":{},"propertyNames":{ ⟨188 unchanged words⟩
Poll the status of a swap by its quoteToken andtherefreturned byfrom ravn_execute (statusRef, deposit addressfor DEPOSIT venues,statusReforfororiginSIGNATUREtxvenueshash). Use the quoteToken execute returned — compose rebinds hop 1 onto hop 2's deposit. Status is authoritative where the venue exposes it; ⟨13 unchanged words⟩
⟨7 unchanged words⟩ data":{"additionalProperties":false,"properties":{"approval":{"additionalPropertiesalternatives":{},"description":"PresentEvery other venue that raced and produced a usable quote, best output first. Each has its own quoteToken to pass to ravn_execute instead. Empty whenthenoinputothertokenvenueneedscouldanserveERC-20thisapprovalpair,beforeorexecutingwhen a route was excluded via excludeVenues","items":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"type":"array"},"estimatedTimeIsGuess":{"description":"True when the venue ⟨95 unchanged words⟩ :"string"},"type":"object"},"inputUsd":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"USD value of the input amount, same price source as gas.usd. Null when the token can't be priced"},"output":{"additionalProperties":{},"propertyNames":{"type":"string"},"type":"object"},"outputUsd":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"USD value of the output amount. Compare against inputUsd for price impact"},"quoteToken":{"description":"Opaque token — pass ⟨54 unchanged words⟩ fee","executable","slippage","gas","inputUsd","outputUsd","estimatedTimeSeconds","estimatedTimeIsGuess","expiresAt","alternatives"],"type":"object"},"meta": ⟨60 unchanged words⟩
⟨7 unchanged words⟩ data":{"additionalProperties":false,"properties":{"deliveredAmount":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Actual delivered output, in the output token's smallest unit, when the venue exposes it"},"status":{"type":"string"},"tracking" ⟨11 unchanged words⟩ no live tracker yet","type":"string"},"txHash":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The destination-chain tx that paid the user out, when the venue names one. Only populated once status is terminal (success/refunded/failed), never while still in flight"},"venue":{"type":"string"} ⟨69 unchanged words⟩
Which tokens actually route from native Bitcoin — For a swap where native BTC is the source, not every token on the destination chain is reachable. Returns which of ravn_tokens's list on `chainId` a BTC venue can actually route to, and how many venues serve each, so you can build a token list that matches what will really quote instead of discovering it one NO_LIQUIDITY at a time. BTC-as-source only — selling a token INTO BTC isn't restricted the same way (nearly any token can be sold into BTC), so this has nothing useful to say about that direction.
List every chain RAVN supports — Every chain RAVN lists a token registry for (see ravn_tokens). Static, doesn't change per request, safe to cache instead of hardcoding a chain table.
Submit a signed RAVN order — For a SIGNATURE-type ravn_execute result only: submit the signature(s) you collected (over typedData, and approvalData if present) to actually place the order. RAVN decodes the venue from quoteToken and routes to the right venue-specific submit path — you never touch a per-venue endpoint. Returns a statusRef — pass it to ravn_status as `ref` to poll this swap.
List RAVN's token registry for a chain — RAVN's own listed token registry for one chain — populate a token picker without hardcoding one. This is "what RAVN knows about and might route", not a per-pair routability guarantee for any specific pair; call ravn_quote to check that.
Resolve a token address to its metadata — Resolve an arbitrary token address to its metadata (symbol, name, decimals) via an on-chain read — for a paste-any-address flow, when the token isn't necessarily on ravn_tokens's list.