Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

Ophis MCP

REMOTE · MCP.OPHIS.FI · SCANNED AUG 3

Gasless, MEV-protected onchain token swaps for AI agents on 11 EVM chains, built on CoW Protocol.

Available components

+6 this week 67 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →

Endpoint Security66
Transport & Reachability100
Schema Quality & AI Usability57
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 2982 tokens (~213/item across 14 items; 14 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
  • Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage99
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 96% of tool parameters carry a description.Partial
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

remote · mcp.ophis.fi

# add to Claude Code
claude mcp add --transport http fi-ophis-mcp https://mcp.ophis.fi/mcp
# ~/.codex/config.toml
[mcp_servers.fi-ophis-mcp]
url = "https://mcp.ophis.fi/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "fi-ophis-mcp": {
      "type": "remote",
      "url": "https://mcp.ophis.fi/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add fi-ophis-mcp --url https://mcp.ophis.fi/mcp --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  fi-ophis-mcp:
    url: "https://mcp.ophis.fi/mcp"
// mcp.json
{
  "mcpServers": {
    "fi-ophis-mcp": {
      "type": "http",
      "url": "https://mcp.ophis.fi/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 3 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

  • 1 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

  • 31 Jul 26 +2
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 30 Jul 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 29 Jul 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

  • 28 Jul 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

  • 27 Jul 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 26 Jul 26 61

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Probed https://mcp.ophis.fi/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=ophis.fi CN=WE1,O=Google Trust Services,C=US 27 Jul 2026 25 Oct 2026 ECDSA 256 ECDSA-SHA256 1b3eb44f66f23cf80e6798565e3c702f
SANs: ophis.fi, mcp.ophis.fi, *.mcp.ophis.fi
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b
DNSSEC secure

Validation of mcp.ophis.fi. Secure

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
fi. present 18073 13 Verified
ophis.fi. present 2371 13 Verified
mcp.ophis.fi. Verified address RRset verified with the apex keys
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=63072000; includeSubDomains; preload
x-content-type-options nosniff
Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mcp.ophis.fi/mcp Verified 200
http (plaintext) http://mcp.ophis.fi/mcp HTTPS enforced 301 https://mcp.ophis.fi/mcp
MCP tools — 14 exposed · ~2,982 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
build_order ~688

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 and Unichain are non-canonical) and embeds the CIP-75 partner fee. Apply slippage to the LIMIT side by kind: for kind 'sell' lower buyAmount (your minimum out); for kind 'buy' raise sellAmount (your maximum in). slippageBips is capped at 5000 (50%); when omitted, the enforced backstop defaults to 100 bps (1%). ENFORCED: build_order fetches a live quote and REJECTS the call if the limit is worse than slippageBips vs that quote (or if a quote cannot be fetched; retry). Sign `order` as EIP-712 with `signing`, then call submit_order.

NameTypeReqDescription
buyAmountstringyesIn atoms. kind 'sell': the MINIMUM you accept (slippage-adjusted DOWN from the quote). kind 'buy': the EXACT amount you want to receive.
buyTokenstringyesBuy token address (0x...).
chainIdintegeryesEVM chain id (use a chainId from list_chains `tradeable`).
feeAmountstringSigned feeAmount in atoms. Must be omitted or "0" on this tool (the fee is taken from surplus + the appData partner fee).
kindstringyes'sell' = sellAmount is exact and buyAmount is your minimum out; 'buy' = buyAmount is exact and sellAmount is your maximum in.
ownerstringyesThe signer/owner address (receiver defaults to this).
partiallyFillablebooleanAllow partial fills (default false = fill-or-kill).
referenceBuyAmount
referenceSellAmount
referrerCodestringAffiliate referral code to embed in appData (credits that code's owner for this trade). Defaults to the server's OPHIS_DEFAULT_REFERRER_CODE if set. Grammar: 3-64 chars [a-z0-9_-]; an invalid code er…
sellAmountstringyesIn atoms. kind 'sell': the EXACT amount you sell. kind 'buy': the MAXIMUM you'll spend (slippage-adjusted UP from the quote).
sellTokenstringyesSell token address (0x...).
slippageBipsintegerMax 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…
validForSecondsintegerOrder 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 rejec…

No output schema declared.

No examples provided.

expected_surplus ~203

Estimate how much better Ophis quotes than the open market for a sell: fetches the Ophis orderbook sell-quote and a public all-DEX aggregator (KyberSwap) quote for the same input, and returns `beatBps` (+ = Ophis returns more of the buy token). Use before build_order to show the expected edge. The reference can reflect thin or manipulated liquidity, so treat beatBps as advisory, not a sole execution signal. Sell-side (exact-in) only. Read-only.

NameTypeReqDescription
buyTokenstringyesBuy token address (0x...).
chainIdintegeryesEVM chain id (use a chainId from list_chains `tradeable`).
fromstringyesThe trading account address (quotes are account-aware).
sellAmountstringyesExact sell amount in atoms (uint256 decimal string).
sellTokenstringyesSell token address (0x...).

No output schema declared.

No examples provided.

get_balances ~166

Read a wallet's native-token balance plus ERC-20 balances for the given token addresses on one chain, via a public RPC (one multicall). Returns each token's symbol, decimals, raw atoms, and human-readable amount. A token address that is not an ERC-20 is reported with an `error` and does not fail the batch. Read-only; holds no keys. Supported chains are those with a public RPC (most Ophis chains).

NameTypeReqDescription
chainIdintegeryesEVM chain id (use list_chains for Ophis chains).
ownerstringyesWallet address to read balances for (0x...).
tokensarrayERC-20 token addresses to read (0x...); max 50. Native balance is always returned.

No output schema declared.

No examples provided.

get_gas ~86

Read a chain's current gas price (EIP-1559 maxFee/maxPriority suggestion when supported, plus an effective gasPrice in wei and gwei). Ophis trades are gasless for the trader, so this mainly bounds the cost of a one-time ERC-20 approval to the VaultRelayer. Read-only.

NameTypeReqDescription
chainIdintegeryesEVM chain id.

No output schema declared.

No examples provided.

get_integrator_earnings ~188

Look up what an integrator's own-fee routing earned, by appCode (the identifier you tag into appData: your widget appCode or your SDK ophisReferrer code). Returns routed volume (USD, split by chain and by sovereign-vs-hosted), the Ophis base fee charged on your flow, your OWN stacked fee, and your referral rebate paid-to-date with payout tx links. Guaranteed/paid figures are scoped to the Ophis-operated chains (Optimism, Unichain); CoW-hosted figures are accrued at settlement and disbursed by CoW under CoW terms (see the response `disclaimer`). Read-only, keyless, cumulative (no current-cycle or next-payout data).

NameTypeReqDescription
appCodestringyesYour integrator appCode / referral code (3-64 chars of [a-z0-9_-]).

No output schema declared.

No examples provided.

get_portfolio ~172

Read a wallet's native and (optionally) ERC-20 balances across multiple chains at once. Pass `tokensByChain` (chainId -> token addresses) to include token balances; omit `chainIds` to scan every chain with a public RPC (max 12 chains, and at most 100 token reads total across all chains). Per-chain RPC failures are returned inline so one dead endpoint does not sink the result. Read-only; holds no keys.

NameTypeReqDescription
chainIdsarrayChains to read (max 12). Omit to scan all chains with a public RPC.
ownerstringyesWallet address to read (0x...).
tokensByChainobjectMap of chainId -> ERC-20 token addresses to read on that chain (native is always included).

No output schema declared.

No examples provided.

get_quote ~263

Fetch a best-execution quote from the chain's Ophis orderbook (use a chainId from list_chains' `tradeable`). Amounts are in atoms (smallest unit, uint256 decimal string). For kind='sell' the amount is the sell amount before fee; for kind='buy' it is the desired buy amount. Returns the orderbook quote (sellAmount/buyAmount/feeAmount/validTo). Before build_order, apply slippage to the limit side by kind: kind='sell' -> lower buyAmount (min out); kind='buy' -> raise sellAmount (max in).

NameTypeReqDescription
amountstringyesAmount in atoms (uint256 decimal string).
buyTokenstringyesBuy token address (0x...).
chainIdintegeryesEVM chain id (use list_chains for supported chains).
fromstringyesThe trading account address (quotes are account-aware).
kindstringyes'sell' = you specify the sell amount; 'buy' = you specify the buy amount.
sellTokenstringyesSell token address (0x...).
validForSecondsintegerQuote validity window in seconds (default 1200 = 20 min).

No output schema declared.

No examples provided.

get_token_chart ~220

Fetch OHLCV price history for a token from the keyless GeckoTerminal market API (resolves the token's deepest pool, then returns candles). Use for an agent to reason about recent price action before quoting. Prices come from a single pool that may be thin or manipulated, so treat them as advisory, not a sole execution signal. The keyless tier is a shared ~30 req/min quota, so cache and do not poll tightly. Read-only.

NameTypeReqDescription
aggregateintegerBucket multiple base units into one candle, e.g. timeframe=hour aggregate=4 = 4h candles (default 1).
chainIdintegeryesEVM chain id (GeckoTerminal-mapped: eth/optimism/base/arbitrum/polygon/bsc/avax/linea/gnosis/ink).
limitintegerNumber of candles (default 30, max 300).
timeframestringCandle timeframe (default 'day').
tokenstringyesToken address (0x...).

No output schema declared.

No examples provided.

list_chains ~91

List Ophis chains, split into `tradeable` (orderbook host is live, only route get_quote/build_order to these) and `paused` (settlement deployed but no live orderbook yet, so these throw). Each tradeable chain includes its orderbook host and GPv2Settlement contract (Optimism and Unichain are non-canonical) and partner-fee config. No input.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

lookup_tier ~63

Look up a wallet's Ophis fee-rebate tier and live status (30-day volume → bronze/silver/gold/platinum, rebate %). Returns the indexer status plus the static tier ladder.

NameTypeReqDescription
walletstringyesWallet address (0x...).

No output schema declared.

No examples provided.

parse_intent ~86

Parse a plain-English swap request (e.g. "swap 100 USDC for ETH on Optimism") into a structured intent: { intent: "swap"|"unknown", entities: [{type: sellToken|buyToken|amount|chain, value, raw}] }. Backed by the live Ophis parser.

NameTypeReqDescription
textstringyesThe natural-language swap request.

No output schema declared.

No examples provided.

resolve_token ~221

Resolve an ERC-20 token SYMBOL to its CANONICAL on-chain address from the trusted Ophis/CoW token list (the same curated list the swap UI uses). Use this BEFORE quoting or building so you never trade an address taken from chat, the web, or memory: a token can spoof the symbol "USDC" at a scam address, and this fails closed. Returns { found, ambiguous, canonical: {address, decimals, name} | null, matches: [...] }. found=false means no trusted match (do NOT guess: confirm any candidate with get_balances and the user). ambiguous=true means several trusted tokens share the symbol (e.g. native vs bridged); confirm which the user means. Native coins are not returned; resolve the wrapped symbol (e.g. WETH). Read-only.

NameTypeReqDescription
chainIdintegeryesEVM chain id (use a chainId from list_chains `tradeable`).
symbolstringyesToken symbol to resolve, e.g. "USDC" or "WETH".

No output schema declared.

No examples provided.

submit_order ~174

Relay a PRE-SIGNED order to the chain's Ophis orderbook. Pass the exact `order` object and `fullAppData` from build_order, plus your EIP-712 `signature` and `from` (owner). The MCP holds no keys — it only forwards. Returns the order UID on success.

NameTypeReqDescription
chainIdintegeryesEVM chain id the order was built for.
fromstringyesThe owner address that signed.
fullAppDatastringyesThe fullAppData string returned by build_order.
orderobjectyesThe order object returned by build_order.
signaturestringyes0x EIP-712 signature over the order by the owner.
signingSchemestringSignature scheme over the order (default 'eip712').

No output schema declared.

No examples provided.

validate_order ~361

Offline preflight for an order you built OUTSIDE build_order (no network call, no keys). Catches the documented silent-failure modes before you sign or submit: wrong appCode (settles but earns zero rebate), wrong orderbook host (api.cow.fi silently bypasses the Ophis stack on Ophis-operated chains), wrong EIP-712 domain (signing against CoW's canonical settlement on an Ophis-operated chain yields a domain the deployed contract rejects), appData hash mismatch (order.appData must equal keccak256 of the exact fullAppData string), an unpinned receiver (proceeds leaving the owner), an expired or non-zero-fee order, and malformed partnerFee entries. Pass whatever you have (chainId is required; owner, order, fullAppData, signingDomain, orderbookUrl are all optional and each is checked if present). Returns { valid, errors, warnings, expected } where `expected` echoes the correct per-chain orderbook host, settlement, EIP-712 domain, appCode, and partnerFee. Prefer build_order to construct orders; use this to verify externally-built ones.

NameTypeReqDescription
chainIdintegeryesEVM chain id the order is for (use list_chains `tradeable`).
fullAppDatastringThe exact appData JSON string that will be submitted with the order.
orderobjectThe (partial) order about to be signed.
orderbookUrlstringThe orderbook base URL the order will be submitted to.
ownerstringThe signing account address; enables the receiver drain-guard check.
signingDomainobjectThe EIP-712 domain the order will be signed against.

No output schema declared.

No examples provided.