CONSTRUIRE AVEC OTTERLOOP
OtterLoop est le contrat orienté agent du critique hostile de SeaOtter. La même boucle fonctionne avec ou sans AgentOS, sur tout framework, modèle et cloud : soumettez le travail, lisez le verdict, révisez et itérez jusqu’à franchir la bande.
INTÉGRATION
Tout converge vers le même contrat d’évaluation. L’API hébergée gère l’exécution du critique, le conditionnement, la localisation, les retours riches et l’enregistrement d’audit signé. Le serveur MCP et le Python SDK sont de minces wrappers sur cette surface HTTP.
INTÉGRATION
Tout converge vers le même contrat d’évaluation. L’API hébergée gère l’exécution du critique, le conditionnement, la localisation, les retours riches et l’enregistrement d’audit signé. Le serveur MCP et le Python SDK sont de minces wrappers sur cette surface HTTP.
MCP
Utilisez-le avec Claude, Codex, Cursor ou tout runtime compatible 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
Appel de notation one-shot via 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
Laissez le client piloter produire → noter → réviser jusqu’à l’expédition.
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")
CONSOLE DÉVELOPPEUR
Frappez une clé d’API d’évaluation pour votre compte, puis copiez une configuration MCP, Python SDK ou curl prête à coller pour relier tout agent au critique hostile de SeaOtter. Le secret est affiché une seule fois — stockez-le avant de quitter cette page.
Chargement des clés…
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..."}] }'CONTRAT DE VERDICT
Le verdict est conçu pour des agents de pointe, pas des captures d’écran de relecture humaine. Il porte score, bande, défauts, améliorations, repères, raisonnement et références d’artefacts de feedback riches utilisables directement par l’agent.
Schéma de verdict
{
"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://..." }]
}CONDITIONNEMENT
OtterLoop n’est pas un score générique "est-ce bon". Le contrat peut conditionner le verdict sur la politique de votre organisation, le prompt ou l’intention donnés à l’agent, et les fichiers de référence à respecter.
Appliquez la bonne politique d’acceptation pour que le même artefact passe dans une équipe et échoue dans une autre, pour une raison défendable.
Portez la demande initiale au sein du critique afin qu’il juge le travail par rapport à l’assignation, pas à une réponse idéale générique.
Guides de marque, exemples gold, documents de source de vérité et itérations précédentes deviennent des preuves de conditionnement.
MODALITÉS
La même boucle couvre texte, code, images, diaporamas, documents, feuilles de calcul, audio, vidéo et trajectoires multi-étapes. Les retours peuvent inclure le JSON de verdict canonique et des médias lisibles par humain ou agent.
| MODALITÉS | RETOURS |
|---|---|
| Image ou frame de design | PNG annoté plus boîtes englobantes des défauts et rapport markdown |
| Diaporama, PDF ou document | Pages annotées, notes par page et repères lisibles par machine |
| Feuille de calcul | Cellules signalées, notes ancrées sur les critères et deltas structurés |
| Vidéo ou audio | Marqueurs temporels, sous-titres et raisonnement localisé |
| Texte ou code | Revue ancrée sur plage avec brouillons d’amélioration applicables par l’agent |