trackmcp
Back to directory

Intent-based DEX aggregator

4 stars RustOthers Updated Sep 4, 2026
defidexdex-aggregatorethereumintent-based-tradingrustsoliditytypescriptagent-tradingmev-protectionoptimism

Documentation

Ophis

Describe a trade in plain English. Ophis does the rest.

An intent-based DEX aggregator with a natural-language layer, built for humans and agents alike.

·

·

·

·

·


Say `swap 100 USDC for ETH on Base` and Ophis resolves the tokens, chain, and

amount, then fills the order through a competitive solver auction that settles

on-chain. It is a fork of CoW Protocol (orderbook, autopilot,

driver, and baseline solver) with a natural-language intent layer over a

rebranded CoW Swap UI. On Optimism, Ophis runs the whole stack under its own

settlement contracts and keeps the full fee; on the other supported chains

(Ethereum, Base, Arbitrum, and more) it routes through CoW Protocol's hosted

network.

What that buys you on every trade:

  • Gasless, MEV-protected. Orders settle in a batch auction where every trade

clears at one uniform price, so sandwiches and front-running are structurally

absent, not best-effort.

  • Solver-aligned pricing. On every supported chain the base fee is 1 bp and

Ophis earns primarily when execution beats its reference quote: 80% of

improvement on volatile pairs (99 bps cap), or 50% on stable pairs (20 bps

cap). Hosted chains encode that policy in CIP-75 appData and separately pay

CoW Protocol's upstream fees.

  • Non-custodial, no account, no auth. Every order is signed in your own

wallet (EIP-712 or ERC-1271). Ophis never holds keys or funds and cannot move,

freeze, or recover them. The signature is the only trust boundary.

  • Transparent, capped fees. A 0.01% (1 bp) base plus the capped improvement

policy above, with a share returned monthly as WETH rebates plus an 8%

referral on trades you bring.

Live across 13 EVM chains, with Ophis-operated settlement on Optimism

(chain 10), Unichain (130), and Robinhood Chain (4663), plus CoW-hosted

settlement on the other supported chains.

Quickstart: the Intent API

Ophis's one bespoke API turns natural language into a structured order. No key,

no account, just POST your request:

bash
curl -sS https://ophis.fi/api/intent \
  -H 'content-type: application/json' \
  -d '{"text":"swap 100 USDC for ETH on Base"}'
json
{
  "ok": true,
  "data": {
    "intent": "swap",
    "entities": [
      { "type": "amount",    "value": "100",  "raw": "100",  "start": 5,  "end": 8 },
      { "type": "sellToken", "value": "USDC", "raw": "USDC", "start": 9,  "end": 13 },
      { "type": "buyToken",  "value": "ETH",  "raw": "ETH",  "start": 18, "end": 21 },
      { "type": "chain",     "value": "base", "raw": "Base", "start": 25, "end": 29 }
    ]
  }
}

Map the chain slug to a chain ID and hand the user a swap deep link to review and

sign. The endpoint only normalizes text, it never places, signs, or executes a

trade. It is rate-limited to 30 requests per minute per IP; non-browser callers

(no `Origin` header) are allowed, which is the path agents use. Full reference:

docs.ophis.fi/intent-api.

Agents and SDK

Ophis is built to be traded by autonomous agents, not just people. Pick your

integration depth, all of it non-custodial and keyless:

Point any MCP client (Claude, Cursor, a custom agent) at the hosted Model

Context Protocol server:

code
https://mcp.ophis.fi/mcp

It speaks Streamable-HTTP MCP and exposes 14 tools: intent parsing, canonical

token resolution, chain discovery, quoting, bounded order build/validation and

submission, rebate and integrator lookups, balances, portfolios, gas, charts,

and expected-surplus comparison. The server holds no keys and never signs.

`build_order` returns a bounded, ready-to-sign EIP-712 order with the receiver

pinned to the owner; the agent signs locally with its own key and submits. See

the complete tool reference. (A bare request

without an `Accept: text/event-stream` header returns HTTP 406, that is the

transport negotiating, not an outage.)

@ophis/sdk

For agents that build and sign CoW orders directly:

bash
npm install @ophis/sdk

The SDK encodes four fork details that fail silently if you guess them:

  • `getOphisOrderbookUrl(chainId)` picks the right host. Optimism self-hosts

its orderbook (not `api.cow.fi`); the wrong host bypasses the Ophis solver and

zeroes the fee.

  • `getOphisOrderDomain(chainId)` gives the EIP-712 domain with the correct

`verifyingContract`. The OP settlement is non-canonical, so the cow-sdk default

is rejected on-chain.

  • `buildOphisAppDataPartnerFee(chainId)` builds the exact CIP-75 volume-fee

fragment `{ volumeBps, recipient }`, not the price-improvement shape.

  • `assertReceiverIsOwner(owner, receiver)` pins the order receiver. An

unpinned receiver is the number one drain vector for an automated signer.

Discovery and the trust boundary

Ophis publishes machine-readable manifests for agent discovery under

`https://ophis.fi/.well-known/`: `mcp.json`, `ai-plugin.json`, `agent-skills/`,

and `api-catalog` (RFC 9727), plus the root-served `auth.md`, `llms.txt`, and

`openapi.json`.

These off-chain helpers make the safe path the easy path, but they are guards,

not an authorization boundary: a prompt-injected agent can ignore them. For an

agent that signs without a human in the loop, enforce policy where the agent

cannot reach it: funds in a Safe smart account, a deterministic policy gate

(allowlisted tokens, pinned receiver and appData, an oracle-bounded limit price,

spend caps), a guardian key, and the same policy checked again at orderbook

ingestion. Full guide: docs.ophis.fi/ai-agents.

Status

Ophis settles across two kinds of chains.

Ophis-operated (self-hosted orderbook, solver, and settlement; Ophis keeps the

full fee):

ChainChain IDStatus
Optimism10Live: settlement, solver, partner fee
Unichain130Live: settlement, solver, partner fee
Robinhood Chain4663Live: settlement, solver, partner fee

CoW-hosted (orders route through CoW Protocol's settlement and solver network,

with the partner fee disbursed by CoW): Ethereum, Base, Arbitrum, Polygon, BNB,

Gnosis, Avalanche, Linea, and the other CoW-supported chains, all live.

On BNB Smart Chain (BSC, chain ID 56) Ophis is live: orders placed through Ophis

(`SupportedChainId.BNB` in `cowSdk.ts`,

mapped from the `bnb` slug in `chainMap.ts`)

settle on-chain through CoW Protocol's GPv2Settlement at

`0x9008D19f58AAbD9eD0D60971565AA8510560ab41` on BSC, giving gasless, MEV-protected

swaps with no Ophis-side custody. Ophis does not deploy its own settlement on BSC;

BNB trades use CoW Protocol's canonical BSC deployment.

The two have different settlement contracts and orderbook hosts, so resolve them

per chain via `@ophis/sdk` or the MCP `list_chains` tool rather than assuming.

Full live status: docs.ophis.fi/status.

Cross-chain destinations (Solana, Bitcoin) are surfaced via NEAR Intents.

Canonical contract addresses and the disclosure policy live in

`SECURITY.md`.

Architecture

PathOriginPurpose
`apps/frontend/``cowprotocol/cowswap` (subtree)Vite/Nx monorepo holding several surfaces: `apps/cowswap-frontend` is the swap UI (Ophis code under `src/ophis/` and `src/modules/mevReceipt/`), `apps/explorer` is the order explorer, `apps/ophis-landing` is the ophis.fi landing site. Self-contained pnpm workspace (own lockfile, excluded from the root).
`apps/backend/``cowprotocol/services` (subtree)Rust orderbook, autopilot, driver, baseline solver. Ophis additions live in dedicated crates and `ophis::` module paths.
`apps/mcp-server/`New`@ophis/mcp-server`: agent-facing MCP server (Streamable-HTTP) deployed as a Cloudflare Worker at `mcp.ophis.fi/mcp`. Holds no keys and never signs.
`apps/rebate-indexer/`New`@ophis/rebate-indexer`: off-chain volume-tier and WETH rebate indexer plus Safe batch proposer (rebates.ophis.fi).
`apps/docs-ophis/`NewDocusaurus docs portal (docs.ophis.fi). Self-contained app (own lockfile, excluded from the root, like `apps/frontend`).
`packages/sdk/`New`@ophis/sdk`: dependency-free helpers for the per-chain orderbook host, EIP-712 order domain, CIP-75 partner-fee `appData`, receiver-pinning guards, tier assignment, and the supported-chain registry.
`contracts/``cowprotocol/contracts` (subtree)`GPv2Settlement`, `GPv2VaultRelayer`, `GPv2AllowListAuthentication`, deployed under an Ophis-controlled solver allowlist. Per-network artifacts in `contracts/deployments/`.
`functions/`NewCloudflare Pages Functions: `api/intent.ts` (the natural-language parser, shared by swap and landing), `api/bungee` (bridge proxy), `_middleware.ts` (host routing).
`infra/`NewPer-chain runtime stacks (`optimism-mainnet/`, `unichain-mainnet/`, `robinhood-mainnet/`, `local/`), plus `rpc/` (eRPC) and `cloudflare/` config.

Upstream subtrees are vendored as-is; Ophis changes are catalogued in

`apps/frontend/.ophis-divergences.md` and `apps/backend/.ophis-divergences.md`

so `git subtree pull` stays tractable.

Repo map

code
ophis/
├── apps/
│   ├── frontend/        cowswap fork: swap UI + explorer + landing site
│   ├── backend/         cowprotocol/services fork (Rust)
│   ├── rebate-indexer/  tier + WETH rebate API, Safe batch proposer
│   ├── docs-ophis/      Docusaurus docs portal
│   └── mcp-server/      agent-facing MCP Worker (mcp.ophis.fi)
├── contracts/           GPv2 settlement contracts (+ per-network deployments)
├── packages/sdk/        @ophis/sdk
├── functions/           Cloudflare Pages Functions (intent API, bungee, middleware)
├── infra/               per-chain runtime stacks + rpc + cloudflare config
├── scripts/             repo utility scripts
└── docs/                specs, plans, audits, operations runbooks

Build

Root workspace (pnpm 9, Node 20.19+ or 22.12+, turborepo):

sh
pnpm install      # all root-workspace deps
pnpm build        # builds members with a build step (currently @ophis/sdk)
pnpm typecheck    # typechecks every member
pnpm test         # runs the unit suites

Only `packages/sdk` has a build step today. `apps/rebate-indexer`,

`apps/mcp-server`, and `infra/rpc` run directly (no `build` script) and are

validated by `pnpm typecheck` and `pnpm test`. The Rust backend (`apps/backend`)

is a Cargo workspace, not a pnpm package, so build and test it with Cargo:

sh
cd apps/backend && cargo build && cargo test

`apps/frontend` and `apps/docs-ophis` are self-contained pnpm workspaces with

their own lockfiles, deliberately excluded from the root. Build them from inside

their own directory (see each app's README):

sh
cd apps/frontend   && pnpm install --frozen-lockfile && pnpm run build:cowswap
cd apps/docs-ophis && pnpm install --frozen-lockfile && pnpm run build

The contracts use Foundry (`forge build`); `forge-std` is a git submodule, so run

`git submodule update --init` first.

Deploy

Every surface deploys independently from `main`:

  • Swap app and Explorer `cloudflare-deploy.yml`: two sequential Cloudflare Pages deploys (swap.ophis.fi / ophis.fi, then explorer.ophis.fi).
  • Landing `landing-deploy.yml`: path-filtered build with a Playwright and Lighthouse budget gate, to Cloudflare Pages.
  • Docs `docs-deploy.yml`: the Docusaurus site to its own Cloudflare Pages project.
  • MCP server `mcp-deploy.yml`: to Cloudflare Workers (custom domain `mcp.ophis.fi`) with a least-privilege Workers token; `mcp-registry-release.yml` publishes matching versioned metadata to the official MCP Registry from protected `mcp-v*` tags.
  • Rebate indexer `rebate-indexer-deploy.yml`: to self-hosted infrastructure over a private network.
  • Operated-chain backends: the Optimism, Unichain, and Robinhood Chain

orderbooks, autopilots, drivers, and solver lanes run on Ophis infrastructure

from `infra/optimism-mainnet/`, `infra/unichain-mainnet/`, and

`infra/robinhood-mainnet/`. They are not deployed by a GitHub workflow.

Quality gates: `ci.yml` (lint, typecheck, tests),

`codeql.yml`,

`security.yml` (dependency and supply-chain

scans), and `echidna.yml` (contract fuzzing).

`sdk-release.yml` publishes `@ophis/sdk` to npm.

All package and MCP publishing controls are documented in the

release runbook.

Fees and rebates

On every supported chain, Ophis charges a 0.01% (1 bp) base plus a capped

share of reference-quote improvement: 80% capped at 99 bps for volatile

pairs and 50% capped at 20 bps for stable pairs. Operated-chain backends

apply the improvement policy; hosted orders encode it in CIP-75 appData and

separately pay CoW Protocol's upstream fees.

Part of the fee flows back to traders:

  • Volume-tier rebates. Each month a share of collected WETH fees is paid back,

split across active wallets by 30-day volume and tier (Bronze through Platinum).

The rebate indexer computes shares and a Safe batch

proposer pays out.

  • Referrals. Mint a code, share `https://swap.ophis.fi/?ref=YOURCODE`, and earn

8% of the verified base fee Ophis keeps on trades your referrals route, paid monthly in WETH.

Full numbers and the tier ladder: docs.ophis.fi/fees

and docs.ophis.fi/affiliate.

Security

See `SECURITY.md` for the disclosure policy, canonical contract

addresses, the partner-fee recipient and governance model, in-scope components,

and audit history.

License

GPL-3.0, inherited from upstream CoW Protocol.

Frequently asked questions

What is ophis?

ophis is Intent-based DEX aggregator

How do I install ophis?

Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.

Is ophis open source?

Yes — it is hosted on GitHub at https://github.com/ophis-fi/ophis and has 4 stars.

Related MCP tools

Run your own MCP server? See who uses it and what to fix.

Measure it with TrackMCP