Ophis

Servidor MCP para o agregador DEX baseado em intenções Ophis: cotações e ordens de swap sem gas e protegidas contra MEV em 11 blockchains.

Documentação

Ophis

Ophis

Descreva uma negociação em linguagem natural. O Ophis cuida do resto.
Um agregador de DEX baseado em intenções com uma camada de linguagem natural, feito para humanos e agentes.

CI CodeQL Security audits GPL-3.0 License OP mainnet live

App de Swap · Documentação · Explorador · Agentes · SDK · Segurança


Diga swap 100 USDC for ETH on Base e o Ophis resolve os tokens, a rede e o valor, e então preenche a ordem por meio de um leilão competitivo de solvers que liquida on-chain. É um fork do CoW Protocol (orderbook, autopilot, driver e solver de linha de base) com uma camada de intenção em linguagem natural sobre uma interface do CoW Swap renomeada. Na Optimism, o Ophis executa toda a stack sob seus próprios contratos de liquidação e mantém a taxa integral; nas outras redes suportadas (Ethereum, Base, Arbitrum e outras), ele roteia pela rede hospedada do CoW Protocol.

O que isso proporciona em cada negociação:

  • Sem gas, protegido contra MEV. As ordens são liquidadas em um leilão em lote onde cada negociação é executada a um preço uniforme, então sandwiches e front-running são estruturalmente ausentes, não apenas uma tentativa de mitigação.
  • Precificação alinhada ao solver. Em todas as redes suportadas, a taxa base é de 1 bp e o Ophis ganha principalmente quando a execução supera sua cotação de referência: 80% da melhoria em pares voláteis (teto de 99 bps), ou 50% em pares estáveis (teto de 20 bps). Redes hospedadas codificam essa política no appData CIP-75 e pagam separadamente as taxas upstream do CoW Protocol.
  • Sem custódia, sem conta, sem autenticação. Cada ordem é assinada na sua própria carteira (EIP-712 ou ERC-1271). O Ophis nunca detém chaves ou fundos e não pode mover, congelar ou recuperá-los. A assinatura é o único limite de confiança.
  • Taxas transparentes e limitadas. Uma taxa base de 0,01% (1 bp) mais a política de melhoria limitada acima, com uma parcela devolvida mensalmente como reembolsos em WETH, além de uma comissão de 8% sobre negociações que você trouxer.

Ativo em 13 redes EVM, com liquidação operada pelo Ophis na Optimism (chain 10), Unichain (130) e Robinhood Chain (4663), além de liquidação hospedada pelo CoW nas outras redes suportadas.

Início rápido: a API de Intenção

A API exclusiva do Ophis transforma linguagem natural em uma ordem estruturada. Sem chave, sem conta, basta enviar sua solicitação via POST:

curl -sS https://ophis.fi/api/intent \
  -H 'content-type: application/json' \
  -d '{"text":"swap 100 USDC for ETH on Base"}'
{
  "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 }
    ]
  }
}

Mapeie o slug da rede para um ID de rede e entregue ao usuário um deep link de swap para revisar e assinar. O endpoint apenas normaliza o texto; ele nunca coloca, assina ou executa uma negociação. Ele é limitado a 30 solicitações por minuto por IP; chamadas de não navegadores (sem o cabeçalho Origin) são permitidas, que é o caminho usado por agentes. Referência completa: docs.ophis.fi/intent-api.

Agentes e SDK

O Ophis foi feito para ser negociado por agentes autônomos, não apenas por pessoas. Escolha sua profundidade de integração, tudo sem custódia e sem chaves:

Servidor MCP (recomendado)

Aponte qualquer cliente MCP (Claude, Cursor, um agente personalizado) para o servidor hospedado do Model Context Protocol:

https://mcp.ophis.fi/mcp

Ele fala Streamable-HTTP MCP e expõe 14 ferramentas: parsing de intenção, resolução canônica de tokens, descoberta de redes, cotação, construção/validação e envio de ordens limitadas, consultas de reembolsos e integradores, saldos, portfólios, gas, gráficos e comparação de excedente esperado. O servidor não detém chaves e nunca assina. build_order retorna uma ordem EIP-712 limitada e pronta para assinar, com o receptor fixado no proprietário; o agente assina localmente com sua própria chave e envia. Veja a referência completa de ferramentas. (Uma solicitação simples sem o cabeçalho Accept: text/event-stream retorna HTTP 406; isso é a negociação do transporte, não uma interrupção.)

@ophis/sdk

Para agentes que constroem e assinam ordens CoW diretamente:

npm install @ophis/sdk

O SDK codifica quatro detalhes do fork que falham silenciosamente se você os adivinhar:

  • getOphisOrderbookUrl(chainId) escolhe o host correto. A Optimism hospeda seu próprio orderbook (não api.cow.fi); o host errado ignora o solver do Ophis e zera a taxa.
  • getOphisOrderDomain(chainId) fornece o domínio EIP-712 com o verifyingContract correto. A liquidação na OP não é canônica, então o padrão do cow-sdk é rejeitado on-chain.
  • buildOphisAppDataPartnerFee(chainId) constrói o fragmento exato de taxa de volume CIP-75 { volumeBps, recipient }, não o formato de melhoria de preço.
  • assertReceiverIsOwner(owner, receiver) fixa o receptor da ordem. Um receptor não fixado é o principal vetor de dreno para um assinante automatizado.

Descoberta e o limite de confiança

O Ophis publica manifestos legíveis por máquina para descoberta de agentes em https://ophis.fi/.well-known/: mcp.json, ai-plugin.json, agent-skills/, e api-catalog (RFC 9727), além dos servidos na raiz auth.md, llms.txt e openapi.json.

Esses auxiliares off-chain tornam o caminho seguro o caminho fácil, mas são guardas, não um limite de autorização: um agente com injeção de prompt pode ignorá-los. Para um agente que assina sem um humano no loop, aplique a política onde o agente não pode alcançá-la: fundos em uma conta Safe, um gate de política determinístico (tokens na allowlist, receptor e appData fixados, preço limite limitado por oráculo, limites de gasto), uma chave de guardião e a mesma política verificada novamente na ingestão do orderbook. Guia completo: docs.ophis.fi/ai-agents.

Status

O Ophis liquida em dois tipos de redes.

Operado pelo Ophis (orderbook, solver e liquidação auto-hospedados; o Ophis mantém a taxa integral):

RedeID da redeStatus
Optimism10Ativo: liquidação, solver, taxa de parceiro
Unichain130Ativo: liquidação, solver, taxa de parceiro
Robinhood Chain4663Ativo: liquidação, solver, taxa de parceiro

Hospedado pelo CoW (ordens roteadas pela rede de liquidação e solver do CoW Protocol, com a taxa de parceiro distribuída pelo CoW): Ethereum, Base, Arbitrum, Polygon, BNB, Gnosis, Avalanche, Linea e outras redes suportadas pelo CoW, todas ativas.

Na BNB Smart Chain (BSC, chain ID 56), o Ophis está ativo: ordens colocadas pelo Ophis (SupportedChainId.BNB em cowSdk.ts, mapeadas do slug bnb em chainMap.ts) liquidam on-chain pelo GPv2Settlement do CoW Protocol em 0x9008D19f58AAbD9eD0D60971565AA8510560ab41 na BSC, oferecendo swaps sem gas e protegidos contra MEV, sem custódia do lado do Ophis. O Ophis não implanta sua própria liquidação na BSC; negociações de BNB usam a implantação canônica da BSC do CoW Protocol.

Os dois têm contratos de liquidação e hosts de orderbook diferentes, então resolva-os por rede via @ophis/sdk ou a ferramenta list_chains do MCP, em vez de assumir. Status completo ao vivo: docs.ophis.fi/status. Destinos cross-chain (Solana, Bitcoin) são exibidos via NEAR Intents. Endereços canônicos de contratos e a política de divulgação estão em SECURITY.md.

Arquitetura

CaminhoOrigemPropósito
apps/frontend/cowprotocol/cowswap (subtree)Monorepo Vite/Nx que contém várias superfícies: apps/cowswap-frontend é a interface de swap (código do Ophis em src/ophis/ e src/modules/mevReceipt/), apps/explorer é o explorador de ordens, apps/ophis-landing é o site de destino ophis.fi. Workspace pnpm autocontido (lockfile próprio, excluído da raiz).
apps/backend/cowprotocol/services (subtree)Orderbook Rust, autopilot, driver, solver de linha de base. As adições do Ophis vivem em crates dedicados e caminhos de módulo ophis::.
apps/mcp-server/Novo@ophis/mcp-server: servidor MCP voltado para agentes (Streamable-HTTP) implantado como um Cloudflare Worker em mcp.ophis.fi/mcp. Não detém chaves e nunca assina.
apps/rebate-indexer/Novo@ophis/rebate-indexer: indexador off-chain de faixas de volume e reembolsos WETH, além de proponente de lotes Safe (rebates.ophis.fi).
apps/docs-ophis/NovoPortal de documentação Docusaurus (docs.ophis.fi). App autocontido (lockfile próprio, excluído da raiz, como apps/frontend).
packages/sdk/Novo@ophis/sdk: auxiliares sem dependências para o host do orderbook por rede, domínio de ordem EIP-712, appData de taxa de parceiro CIP-75, guardas de fixação de receptor, atribuição de faixas e o registro de redes suportadas.
contracts/cowprotocol/contracts (subtree)GPv2Settlement, GPv2VaultRelayer, GPv2AllowListAuthentication, implantados sob uma allowlist de solvers controlada pelo Ophis. Artefatos por rede em contracts/deployments/.
functions/NovoCloudflare Pages Functions: api/intent.ts (o parser de linguagem natural, compartilhado por swap e landing), _middleware.ts (roteamento de host).
infra/NovoStacks de runtime por rede (optimism-mainnet/, unichain-mainnet/, robinhood-mainnet/, local/), além de rpc/ (eRPC) e configuração cloudflare/.

Subtrees upstream são vendidas como estão; as mudanças do Ophis são catalogadas em apps/frontend/.ophis-divergences.md e apps/backend/.ophis-divergences.md, para que git subtree pull permaneça gerenciável.

Mapa do repositório

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, middleware)
├── infra/               per-chain runtime stacks + rpc + cloudflare config
├── scripts/             repo utility scripts
└── docs/                specs, plans, audits, operations runbooks

Build

Workspace raiz (pnpm 9, Node 20.19+ ou 22.12+, turborepo):

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

Apenas packages/sdk tem uma etapa de build hoje. apps/rebate-indexer, apps/mcp-server e infra/rpc rodam diretamente (sem script build) e são validadas por pnpm typecheck e pnpm test. O backend Rust (apps/backend) é um workspace Cargo, não um pacote pnpm, então compile e teste com Cargo:

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

apps/frontend e apps/docs-ophis são workspaces pnpm autocontidos com seus próprios lockfiles, deliberadamente excluídos da raiz. Compile-os de dentro do próprio diretório (veja o README de cada app):

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

Os contratos usam Foundry (forge build); forge-std é um submódulo git, então execute git submodule update --init primeiro.

Deploy

Cada superfície é implantada independentemente de main:

  • App de Swap e Explorador cloudflare-deploy.yml: dois deploys sequenciais do Cloudflare Pages (swap.ophis.fi / ophis.fi, depois explorer.ophis.fi).
  • Landing landing-deploy.yml: build filtrado por caminho com um gate de orçamento Playwright e Lighthouse, para o Cloudflare Pages.
  • Docs docs-deploy.yml: o site Docusaurus para seu próprio projeto Cloudflare Pages.
  • Servidor MCP mcp-deploy.yml: para o Cloudflare Workers (domínio personalizado mcp.ophis.fi) com um token Workers de privilégio mínimo; mcp-registry-release.yml publica metadados versionados correspondentes no Registro MCP oficial a partir de tags protegidas mcp-v*.
  • Indexador de reembolsos rebate-indexer-deploy.yml: para infraestrutura auto-hospedada em uma rede privada.
  • Backends de redes operadas: os orderbooks, autopilots, drivers e lanes de solver da Optimism, Unichain e Robinhood Chain rodam na infraestrutura do Ophis a partir de infra/optimism-mainnet/, infra/unichain-mainnet/ e infra/robinhood-mainnet/. Eles não são implantados por um workflow do GitHub.

Gates de qualidade: ci.yml (lint, typecheck, testes), codeql.yml, security.yml (varreduras de dependências e cadeia de fornecimento) e echidna.yml (fuzzing de contratos). sdk-release.yml publica @ophis/sdk no npm. Todos os controles de publicação de pacotes e MCP estão documentados no runbook de lançamento.

Taxas e reembolsos

Em todas as chains suportadas, a Ophis cobra uma taxa base de 0,01% (1 bp) mais uma parcela limitada da melhoria da cotação de referência: 80% limitada a 99 bps para pares voláteis e 50% limitada a 20 bps para pares estáveis. Os backends das chains operadas aplicam a política de melhoria; os pedidos hospedados a codificam no appData CIP-75 e pagam separadamente as taxas upstream do CoW Protocol.

Parte da taxa retorna aos traders:

  • Rebates por nível de volume. A cada mês, uma parcela das taxas WETH coletadas é paga de volta, dividida entre carteiras ativas por volume de 30 dias e nível (Bronze a Platinum). O indexador de rebates calcula as parcelas e um proponente de lote Safe faz o pagamento.
  • Indicações. Gere um código, compartilhe https://swap.ophis.fi/?ref=YOURCODE e ganhe 8% da taxa base verificada que a Ophis mantém em negociações feitas por suas indicações, paga mensalmente em WETH.

Números completos e a escada de níveis: docs.ophis.fi/fees e docs.ophis.fi/affiliate.

Segurança

Consulte SECURITY.md para a política de divulgação, endereços canônicos de contratos, o destinatário da taxa de parceiro e o modelo de governança, componentes no escopo e histórico de auditoria.

Licença

GPL-3.0, herdada do CoW Protocol upstream.