{"serverId":"mcp-registry/fi.ophis/mcp","tools":[{"name":"build_order","fixed":{"name":"build_order","description":"Build a bounded, ready-to-sign CoW order on Ophis. Returns { order, signing:{domain,types,primaryType}, fullAppData, appDataHash, partnerFee, next }. The receiver is ALWAYS PINNED to the owner (proceeds cannot leave the account); this public endpoint exposes no custom-receiver option. Uses the correct per-chain settlement contract (Optimism, Unichain, Robinhood Chain, and Arc are non-canonical) and applies the canonical Ophis fee policy. Apply slippage to the LIMIT side by kind: for kind 'sell' ","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["chainId","owner","sellToken","buyToken","sellAmount","buyAmount","kind"],"properties":{"kind":{"enum":["sell","buy"],"type":"string","description":"'sell' = sellAmount is exact and buyAmount is your minimum out; 'buy' = buyAmount is exact and sellAmount is your maximum in."},"owner":{"type":"string","description":"The signer/owner address (receiver defaults to this)."},"chainId":{"type":"integer","description":"EVM chain id (use a chainId from list_chains `tradeable`)."},"buyToken":{"type":"string","description":"Buy token address (0x...)."},"buyAmount":{"type":"string","description":"In atoms. kind 'sell': the MINIMUM you accept (slippage-adjusted DOWN from the quote). kind 'buy': the EXACT amount you want to receive."},"feeAmount":{"type":"string","description":"Signed feeAmount in atoms. Must be omitted or \"0\" on this tool (the fee is taken from surplus + the appData partner fee)."},"sellToken":{"type":"string","description":"Sell token address (0x...)."},"sellAmount":{"type":"string","description":"In atoms. kind 'sell': the EXACT amount you sell. kind 'buy': the MAXIMUM you'll spend (slippage-adjusted UP from the quote)."},"isStablePair":{"type":"boolean","description":"Optional assertion checked against the server-owned stablecoin registry; omit to auto-classify."},"referrerCode":{"type":"string","description":"Affiliate referral code to embed in appData (credits that code's owner for eligible settled trades, including Arc). Defaults to the server's OPHIS_DEFAULT_REFERRER_CODE. An empty string opts out. Grammar: 3-64 chars [a-z0-9_-]; an invalid code errors."},"slippageBips":{"type":"integer","minimum":0,"description":"Max accepted slippage in bips; capped at 5000 (50%); when omitted, the enforced backstop defaults to 100 bps (1%). Recorded in appData. ENFORCED: build_order fetches a live quote and rejects a limit worse than this vs the quote. Fund safety: the receiver is always pinned to the owner."},"validForSeconds":{"type":"integer","minimum":60,"description":"Order lifetime in seconds (default 1200 = 20 min; minimum 60). The enforced live-quote fetch can consume several seconds, so very short lifetimes would return a near-expired order the orderbook rejects."},"partiallyFillable":{"type":"boolean","description":"Allow partial fills (default false = fill-or-kill)."},"referenceBuyAmount":{"type":"string"},"referenceSellAmount":{"type":"string"}},"additionalProperties":false},"annotations":{"title":"Build signable order","readOnlyHint":true,"openWorldHint":true}},"changes":[{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: referenceBuyAmount, referenceSellAmount. Change to number/boolean/array where that's what you accept.","verify":true}],"tokensBefore":843,"tokensAfter":852}],"toolsChanged":1,"tokensSaved":0,"todo":[{"tool":"build_order","params":["referenceBuyAmount","referenceSellAmount"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}