Ophis
Servidor MCP para el agregador DEX basado en intenciones Ophis: cotizaciones y órdenes de intercambio sin gas y protegidas contra MEV en 11 cadenas.
Documentación
Ophis
Describe una operación en inglés sencillo. Ophis se encarga del resto.
Un agregador de DEX basado en intenciones con una capa de lenguaje natural, construido para humanos y agentes por igual.
App de intercambio · Documentación · Explorador · Agentes · SDK · Seguridad
Di swap 100 USDC for ETH on Base y Ophis resuelve los tokens, la cadena y el
monto, luego completa la orden mediante una subasta competitiva de solvers que se
liquida en cadena. Es un fork de CoW Protocol (libro de órdenes, autopilot,
driver y solver de referencia) con una capa de intenciones en lenguaje natural sobre una
interfaz de CoW Swap renombrada. En Optimism, Ophis ejecuta toda la pila bajo sus propios
contratos de liquidación y conserva la tarifa completa; en las demás cadenas compatibles
(Ethereum, Base, Arbitrum y más) enruta a través de la red alojada de CoW Protocol.
Lo que eso te aporta en cada operación:
- Sin gas, protegido contra MEV. Las órdenes se liquidan en una subasta por lotes donde cada operación se ejecuta a un precio uniforme, por lo que los sandwiches y el front-running están estructuralmente ausentes, no son un esfuerzo de mejor esfuerzo.
- Precios alineados con el solver. En cada cadena compatible, la tarifa base es de 1 pb y Ophis gana principalmente cuando la ejecución supera su cotización de referencia: 80% de la mejora en pares volátiles (tope de 99 pb), o 50% en pares estables (tope de 20 pb). Las cadenas alojadas codifican esa política en appData CIP-75 y pagan por separado las tarifas upstream de CoW Protocol.
- Sin custodia, sin cuenta, sin autenticación. Cada orden se firma en tu propia billetera (EIP-712 o ERC-1271). Ophis nunca posee claves ni fondos y no puede moverlos, congelarlos ni recuperarlos. La firma es el único límite de confianza.
- Tarifas transparentes y con tope. Una base de 0.01% (1 pb) más la política de mejora con tope anterior, con una parte devuelta mensualmente como reembolsos en WETH más un 8% de referencia sobre las operaciones que traigas.
Activo en 13 cadenas EVM, con liquidación operada por Ophis en Optimism (cadena 10), Unichain (130) y Robinhood Chain (4663), además de liquidación alojada por CoW en las demás cadenas compatibles.
Inicio rápido: la API de intenciones
La API exclusiva de Ophis convierte el lenguaje natural en una orden estructurada. Sin clave, sin cuenta, solo envía tu solicitud por 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 }
]
}
}
Mapea el slug de la cadena a un ID de cadena y entrega al usuario un enlace profundo de intercambio para revisar y
firmar. El endpoint solo normaliza texto, nunca coloca, firma ni ejecuta una
operación. Está limitado a 30 solicitudes por minuto por IP; los llamadores que no son navegadores
(sin encabezado Origin) están permitidos, que es la ruta que usan los agentes. Referencia completa:
docs.ophis.fi/intent-api.
Agentes y SDK
Ophis está diseñado para ser operado por agentes autónomos, no solo por personas. Elige tu nivel de integración, todo sin custodia y sin claves:
Servidor MCP (recomendado)
Apunta cualquier cliente MCP (Claude, Cursor, un agente personalizado) al servidor alojado de Model Context Protocol:
https://mcp.ophis.fi/mcp
Habla MCP Streamable-HTTP y expone 14 herramientas: análisis de intenciones, resolución
canónica de tokens, descubrimiento de cadenas, cotización, construcción/validación y envío de órdenes
acotadas, consultas de reembolsos e integradores, saldos, carteras, gas, gráficos
y comparación de superávit esperado. El servidor no posee claves y nunca firma.
build_order devuelve una orden EIP-712 acotada y lista para firmar con el receptor
fijado al propietario; el agente firma localmente con su propia clave y la envía. Consulta la
referencia completa de herramientas. (Una solicitud simple
sin encabezado Accept: text/event-stream devuelve HTTP 406, eso es la
negociación del transporte, no una interrupción.)
@ophis/sdk
Para agentes que construyen y firman órdenes de CoW directamente:
npm install @ophis/sdk
El SDK codifica cuatro detalles del fork que fallan silenciosamente si los adivinas:
getOphisOrderbookUrl(chainId)elige el host correcto. Optimism aloja su propio libro de órdenes (noapi.cow.fi); el host incorrecto omite el solver de Ophis y anula la tarifa.getOphisOrderDomain(chainId)proporciona el dominio EIP-712 con elverifyingContractcorrecto. La liquidación en OP no es canónica, por lo que el valor predeterminado de cow-sdk se rechaza en cadena.buildOphisAppDataPartnerFee(chainId)construye el fragmento exacto de tarifa por volumen CIP-75{ volumeBps, recipient }, no la forma de mejora de precio.assertReceiverIsOwner(owner, receiver)fija el receptor de la orden. Un receptor no fijado es el principal vector de drenaje para un firmante automatizado.
Descubrimiento y el límite de confianza
Ophis publica manifiestos legibles por máquina para el descubrimiento de agentes bajo
https://ophis.fi/.well-known/: mcp.json, ai-plugin.json, agent-skills/,
y api-catalog (RFC 9727), además de los servidos desde la raíz auth.md, llms.txt y
openapi.json.
Estos ayudantes fuera de cadena hacen que el camino seguro sea el camino fácil, pero son guardias, no un límite de autorización: un agente con inyección de prompts puede ignorarlos. Para un agente que firma sin un humano en el circuito, aplica la política donde el agente no pueda alcanzarla: fondos en una cuenta inteligente Safe, una puerta de política determinista (tokens en lista blanca, receptor y appData fijados, un precio límite acotado por oráculo, límites de gasto), una clave de guardián, y la misma política verificada nuevamente en la ingesta del libro de órdenes. Guía completa: docs.ophis.fi/ai-agents.
Estado
Ophis liquida en dos tipos de cadenas.
Operadas por Ophis (libro de órdenes, solver y liquidación autoalojados; Ophis conserva la tarifa completa):
| Cadena | ID de cadena | Estado |
|---|---|---|
| Optimism | 10 | Activo: liquidación, solver, tarifa de socio |
| Unichain | 130 | Activo: liquidación, solver, tarifa de socio |
| Robinhood Chain | 4663 | Activo: liquidación, solver, tarifa de socio |
Alojadas por CoW (las órdenes se enrutan a través de la red de liquidación y solver de CoW Protocol, con la tarifa de socio distribuida por CoW): Ethereum, Base, Arbitrum, Polygon, BNB, Gnosis, Avalanche, Linea y las demás cadenas compatibles con CoW, todas activas.
En BNB Smart Chain (BSC, ID de cadena 56) Ophis está activo: las órdenes colocadas a través de Ophis
(SupportedChainId.BNB en cowSdk.ts,
mapeadas desde el slug bnb en chainMap.ts)
se liquidan en cadena a través de GPv2Settlement de CoW Protocol en
0x9008D19f58AAbD9eD0D60971565AA8510560ab41 en BSC, ofreciendo intercambios sin gas y protegidos contra MEV
sin custodia por parte de Ophis. Ophis no despliega su propia liquidación en BSC;
las operaciones en BNB usan el despliegue canónico de BSC de CoW Protocol.
Los dos tienen contratos de liquidación y hosts de libro de órdenes diferentes, así que resuélvelos
por cadena a través de @ophis/sdk o la herramienta MCP list_chains en lugar de asumir.
Estado completo en vivo: docs.ophis.fi/status.
Los destinos entre cadenas (Solana, Bitcoin) se muestran a través de NEAR Intents.
Las direcciones de contratos canónicos y la política de divulgación viven en
SECURITY.md.
Arquitectura
| Ruta | Origen | Propósito |
|---|---|---|
apps/frontend/ | cowprotocol/cowswap (subárbol) | Monorepo Vite/Nx que contiene varias superficies: apps/cowswap-frontend es la interfaz de intercambio (código de Ophis bajo src/ophis/ y src/modules/mevReceipt/), apps/explorer es el explorador de órdenes, apps/ophis-landing es el sitio de aterrizaje de ophis.fi. Workspace pnpm autocontenido (lockfile propio, excluido de la raíz). |
apps/backend/ | cowprotocol/services (subárbol) | Libro de órdenes en Rust, autopilot, driver, solver de referencia. Las adiciones de Ophis viven en crates dedicados y rutas de módulo ophis::. |
apps/mcp-server/ | Nuevo | @ophis/mcp-server: servidor MCP orientado a agentes (Streamable-HTTP) desplegado como Cloudflare Worker en mcp.ophis.fi/mcp. No posee claves y nunca firma. |
apps/rebate-indexer/ | Nuevo | @ophis/rebate-indexer: indexador de niveles de volumen y reembolsos WETH fuera de cadena más proponente de lotes Safe (rebates.ophis.fi). |
apps/docs-ophis/ | Nuevo | Portal de documentación Docusaurus (docs.ophis.fi). App autocontenida (lockfile propio, excluida de la raíz, como apps/frontend). |
packages/sdk/ | Nuevo | @ophis/sdk: ayudantes sin dependencias para el host del libro de órdenes por cadena, dominio de órdenes EIP-712, tarifa de socio CIP-75 appData, guardias de fijación de receptor, asignación de niveles y el registro de cadenas compatibles. |
contracts/ | cowprotocol/contracts (subárbol) | GPv2Settlement, GPv2VaultRelayer, GPv2AllowListAuthentication, desplegados bajo una lista de permitidos de solvers controlada por Ophis. Artefactos por red en contracts/deployments/. |
functions/ | Nuevo | Cloudflare Pages Functions: api/intent.ts (el analizador de lenguaje natural, compartido por intercambio y aterrizaje), _middleware.ts (enrutamiento de hosts). |
infra/ | Nuevo | Pilas de ejecución por cadena (optimism-mainnet/, unichain-mainnet/, robinhood-mainnet/, local/), más rpc/ (eRPC) y configuración cloudflare/. |
Los subárboles upstream se venden tal cual; los cambios de Ophis se catalogan en
apps/frontend/.ophis-divergences.md y apps/backend/.ophis-divergences.md
para que git subtree pull siga siendo manejable.
Mapa del repositorio
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
Compilación
Workspace raíz (pnpm 9, Node 20.19+ o 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
Solo packages/sdk tiene un paso de compilación hoy. apps/rebate-indexer,
apps/mcp-server y infra/rpc se ejecutan directamente (sin script build) y se
validan mediante pnpm typecheck y pnpm test. El backend en Rust (apps/backend)
es un workspace de Cargo, no un paquete pnpm, así que compílalo y pruébalo con Cargo:
cd apps/backend && cargo build && cargo test
apps/frontend y apps/docs-ophis son workspaces pnpm autocontenidos con
sus propios lockfiles, deliberadamente excluidos de la raíz. Compílalos desde dentro de
su propio directorio (consulta el 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
Los contratos usan Foundry (forge build); forge-std es un submódulo de git, así que ejecuta
git submodule update --init primero.
Despliegue
Cada superficie se despliega de forma independiente desde main:
- App de intercambio y Explorador
cloudflare-deploy.yml: dos despliegues secuenciales de Cloudflare Pages (swap.ophis.fi / ophis.fi, luego explorer.ophis.fi). - Aterrizaje
landing-deploy.yml: compilación filtrada por ruta con una puerta de presupuesto de Playwright y Lighthouse, a Cloudflare Pages. - Documentación
docs-deploy.yml: el sitio Docusaurus a su propio proyecto de Cloudflare Pages. - Servidor MCP
mcp-deploy.yml: a Cloudflare Workers (dominio personalizadomcp.ophis.fi) con un token de Workers de privilegio mínimo;mcp-registry-release.ymlpublica metadatos versionados coincidentes al Registro MCP oficial desde etiquetas protegidasmcp-v*. - Indexador de reembolsos
rebate-indexer-deploy.yml: a infraestructura autoalojada a través de una red privada. - Backends de cadenas operadas: los libros de órdenes, autopilots, drivers y carriles de solvers de Optimism, Unichain y Robinhood Chain
se ejecutan en infraestructura de Ophis desde
infra/optimism-mainnet/,infra/unichain-mainnet/yinfra/robinhood-mainnet/. No se despliegan mediante un flujo de trabajo de GitHub.
Puertas de calidad: ci.yml (lint, typecheck, pruebas),
codeql.yml,
security.yml (escaneos de dependencias y cadena de
suministro), y echidna.yml (fuzzing de contratos).
sdk-release.yml publica @ophis/sdk a npm.
Todos los controles de publicación de paquetes y MCP están documentados en el
runbook de lanzamiento.
Tarifas y reembolsos
En cada cadena compatible, Ophis cobra una base del 0,01 % (1 pb) más una parte limitada de la mejora de la cotización de referencia: 80 % con un tope de 99 pb para pares volátiles y 50 % con un tope de 20 pb para pares estables. Los backends de las cadenas operadas aplican la política de mejora; las órdenes alojadas la codifican en los appData de CIP-75 y pagan por separado las tarifas upstream de CoW Protocol.
Parte de la tarifa regresa a los traders:
- Reembolsos por nivel de volumen. Cada mes se devuelve una parte de las tarifas WETH recaudadas, distribuida entre las billeteras activas según el volumen de 30 días y el nivel (Bronce a Platino). El indexador de reembolsos calcula las participaciones y un proponente de lotes Safe realiza el pago.
- Referidos. Genera un código, comparte
https://swap.ophis.fi/?ref=YOURCODEy gana el 8 % de la tarifa base verificada que Ophis retiene en las operaciones de tus referidos, pagada mensualmente en WETH.
Los números completos y la escalera de niveles: docs.ophis.fi/fees y docs.ophis.fi/affiliate.
Seguridad
Consulta SECURITY.md para la política de divulgación, las direcciones
canónicas de los contratos, el destinatario de la tarifa de socio y el modelo de gobernanza, los componentes
dentro del alcance y el historial de auditorías.
Licencia
GPL-3.0, heredada del CoW Protocol upstream.