CREE CON OTTERLOOP
OtterLoop es el contrato orientado a agentes del crítico hostil de SeaOtter. El mismo ciclo funciona con o sin AgentOS, en cualquier framework, modelo y nube: envíe el trabajo, lea el veredicto, revise e itere hasta que la banda supere su puerta.
INTEGRACIÓN
Todo se enruta al mismo contrato de evaluación. La API alojada gestiona la ejecución del crítico, el condicionamiento, la localización, las devoluciones ricas y el registro de auditoría firmado. El servidor MCP y el Python SDK son envoltorios ligeros sobre esa superficie HTTP.
INTEGRACIÓN
Todo se enruta al mismo contrato de evaluación. La API alojada gestiona la ejecución del crítico, el condicionamiento, la localización, las devoluciones ricas y el registro de auditoría firmado. El servidor MCP y el Python SDK son envoltorios ligeros sobre esa superficie HTTP.
MCP
Úselo en Claude, Codex, Cursor o cualquier runtime que hable MCP.
{ "mcpServers": { "otterloop": {
"command": "python", "args": ["-m", "otterloop.mcp_server"],
"env": { "OTTERLOOP_API_URL": "https://dev-api.seaotter.ai",
"OTTERLOOP_API_KEY": "sk-otter-...",
"OTTERLOOP_POLICY_ID": "acme-prod-acceptance" } } } }curl
Llamada de puntuación de una sola pasada por HTTP.
curl -s https://dev-api.seaotter.ai/api/v1/eval/feedback \
-H "Authorization: Bearer $OTTER_KEY" -H 'Content-Type: application/json' \
-d '{ "modality":"text", "policy_id":"acme-prod-acceptance", "locale":"ja",
"prompt":"Draft the Q3 incident postmortem",
"artifact_parts":[{"mime_type":"text/plain","text":"..."}],
"return_feedback_artifacts": true }'Python SDK
Deje que el cliente impulse producir → calificar → revisar hasta aprobar.
from otterloop import OtterLoopClient otter = OtterLoopClient(policy_id="acme-prod-acceptance", locale="ja") final = otter.loop(produce=lambda feedback: my_agent.revise(feedback), work=my_agent.first_draft(), modality="document", references=["file://brand-guide.pdf", "file://gold-postmortem.md"], max_rounds=5, target_band="ship")
CONSOLA DE DESARROLLADOR
Emita una clave de API de evaluación para su cuenta y luego copie una configuración lista para pegar de MCP, Python SDK o curl para conectar cualquier agente al crítico hostil de SeaOtter. El secreto se muestra una vez — guárdelo antes de salir de esta página.
Cargando claves…
AGENT QUICKSTART
SeaOtter is agent-native: an agent can discover this contract from /llms.txt, then run the whole loop over MCP or plain HTTP. The only human step today is minting the first eval key (above) — the agent does the rest. Every eval call carries Authorization: Bearer <sk-otter-...>. Bases: https://api.seaotter.ai (prod), https://dev-api.seaotter.ai (dev).
Machine-readable: /llms.txt · OpenAPI spec · interactive API docs.
1 — mint a key (one-time, signed-in user)
Returns the full sk-otter-... secret exactly once.
curl -s -X POST https://api.seaotter.ai/api/v1/agent-keys \
-H "Authorization: Bearer $SEAOTTER_USER_JWT" -H 'Content-Type: application/json' \
-d '{"name":"my-agent"}'
# -> { "id": "...", "key": "sk-otter-...", "key_prefix": "sk-otter-abcde", ... }2 — connect over MCP (.mcp.json)
Claude / Cursor. Codex uses [mcp_servers.otterloop] in config.toml.
{ "mcpServers": { "otterloop": {
"command": "python", "args": ["-m", "otterloop.mcp_server"],
"env": { "OTTERLOOP_API_URL": "https://api.seaotter.ai",
"OTTERLOOP_API_KEY": "sk-otter-...",
"OTTERLOOP_POLICY_ID": "acme-prod-acceptance" } } } }3 — score over HTTP
One-shot grade -> verdict + run_id to keep iterating.
curl -s https://api.seaotter.ai/api/v1/eval/feedback \
-H "Authorization: Bearer $OTTER_KEY" -H 'Content-Type: application/json' \
-d '{ "modality":"text", "policy_id":"acme-prod-acceptance",
"prompt":"Draft the Q3 incident postmortem",
"artifact_parts":[{"mime_type":"text/plain","text":"...your work..."}],
"return_feedback_artifacts": true }'
# -> { "run_id": "...", "verdict": { "score": ..., "band": "route_to_fix", "flaws": [...] } }5 — iterate until it ships
Re-score a revision against the same run.
curl -s -X POST https://api.seaotter.ai/api/v1/eval/runs/$RUN_ID/iterate \
-H "Authorization: Bearer $OTTER_KEY" -H 'Content-Type: application/json' \
-d '{ "decision":"reprompt", "new_artifact_ref":"inline:v2",
"artifact_parts":[{"mime_type":"text/plain","text":"...revised work..."}] }'CONTRATO DE VEREDICTO
El veredicto está diseñado para agentes de frontera, no capturas de pantalla de revisión humana. Incluye puntuación, banda, fallos, mejoras, anclas, razonamiento y referencias a artefactos de retroalimentación ricos que el agente puede usar directamente.
Esquema de veredicto
{
"score": 0.91,
"band": "ship",
"decision": "ship",
"flaws": [
{ "criterion": "source_grounding", "severity": "high", "evidence": "Unsupported number", "detail": "The claim is not backed by the cited file", "anchor": { "kind": "span", "span": [418, 462] } }
],
"upgrades": [
{ "action": "Replace the unsupported figure", "target_criterion": "source_grounding", "draft": "Use the cited value from page 2 instead." }
],
"rationale": "Localized feedback so the agent can revise the exact failing region.",
"feedback_artifacts": [{ "kind": "annotated_png", "ref": "artifact://..." }]
}CONDICIONAMIENTO
OtterLoop no es una puntuación genérica de "¿esto es bueno?". El contrato puede condicionar el veredicto a la política de su organización, al prompt o intención dada al agente y a los archivos de referencia que deba obedecer.
Aplique la política de aceptación correcta para que el mismo artefacto pueda aprobar en un equipo y fallar en otro por un motivo defendible.
Transporte la petición original al crítico para que juzgue el trabajo contra el encargo, no contra una respuesta idealizada genérica.
Guías de marca, ejemplos de oro, documentos fuente de verdad y versiones previas pasan a ser evidencia de condicionamiento.
MODALIDADES
El mismo ciclo cubre texto, código, imágenes, decks, documentos, hojas de cálculo, audio, video y trayectorias de varios pasos. Las devoluciones pueden incluir tanto el JSON canónico del veredicto como medios que pueda leer una persona o un agente.
| MODALIDADES | DEVOLUCIONES |
|---|---|
| Imagen o frame de diseño | PNG anotado más cajas delimitadoras de fallos y un informe en markdown |
| Deck, PDF o documento | Páginas anotadas, notas por página y anclas legibles por máquina |
| Hoja de cálculo | Celdas marcadas, notas basadas en criterios y deltas estructurados |
| Video o audio | Marcadores de tiempo, subtítulos y razonamiento localizado |
| Texto o código | Revisión anclada a tramos con borradores de mejoras aplicables por el agente |