Skip to main content
Skip to main content
SeaOtter
See demoPrivacyDownload for macOS

← All developer docs

DEVELOPERS — INSTALL IT WHERE YOU WORK

One line in your harness. One driver on your desk.

The hosted connector wires both verbs — Ocean predicts, OtterScore decides — into the tools you already use, by URL, no package install. The native driver is the same contract with a body: signed, verifiable, discoverable.

On this pageWire the connectorNative driver

Use it where you already work

Wire the connector — both verbs, one URL

SeaOtter is a hosted MCP server — connect by URL, no install. Ocean predicts where your agent's work goes next (ocean_register, ocean_predict, ocean_select); its Critic decides whether it counts (otter_grade). Your agent asks Ocean before a risky step, checks what it made, iterates until it clears the bar, and every verdict lands as a durable receipt on a tamper-evident audit trail. Get a free key first (or sign in with Google on the consent screen):

Get a free key →

Connect media QC when you need it

Connect the hosted otter_score tool, then invoke it when a user explicitly asks to inspect generated media. The installer does not add an end-of-task or pre-push gate. One command, no package install:

On a Mac, no terminal needed — ↓ download the SeaOtter app (signed & Apple-notarized): double-click and it wires your tools, then lives in the menu bar. Prefer the terminal? Use the command below.

On macOS or Linux (terminal), run the line for your harness:

curl -fsSL https://seaotter.ai/install.sh | sh -s -- claude
curl -fsSL https://seaotter.ai/install.sh | sh -s -- codex
curl -fsSL https://seaotter.ai/install.sh | sh -s -- openclaw
curl -fsSL https://seaotter.ai/install.sh | sh -s -- cursor
curl -fsSL https://seaotter.ai/install.sh | sh -s -- hermes
curl -fsSL https://seaotter.ai/install.sh | sh -s -- git
How it works →

Wires the MCP otter_score tool only. Existing automatic validation hooks and standing completion mandates are removed. Stdlib-only, idempotent.

On Windows, use PowerShell instead (swap claude for codex · openclaw · cursor · hermes · git):

& ([scriptblock]::Create((irm https://seaotter.ai/install.ps1))) claude

Already set up? On a Mac, click the menu-bar otter for status + uninstall. Anywhere: python3 ~/.otter/otter_install.py status, or remove it with curl -fsSL https://seaotter.ai/uninstall.sh | sh.

Fastest setup — one click, opens the app

Open in Claude Open in ChatGPT Add to Cursor Add to VS Code

Each button opens the app directly. Open in ChatGPT opens the OtterScore GPT — already wired, ready to check your work. Cursor and VS Code install the hosted MCP server in one confirm (VS Code Insiders). Open in Claude loads the setup prompt in the Claude desktop app and walks you through the one connector step — or use Open in Claude Code below, which runs claude mcp add itself.

Download the Claude skill ↓

No app handler installed? Paste the setup prompt into Claude Code, Cursor, or any agent that can run a command and it wires itself up + checks your work from then on (in a plain Claude or ChatGPT chat it walks you through the one connector step) — or drop the skill into .claude/skills/otterscore-grade/ (with grade.py).

Claude

Add to Claude

Open in Claude Open in Claude Code

Open in Claude loads the setup prompt in the desktop app and walks you through adding the connector; Open in Claude Code wires it in automatically. Doing it by hand on claude.ai (Pro/Max/Team/Enterprise)? Settings → Connectors → Add custom connector → paste the URL → sign in with Google. Open connector settings →

{
  "mcpServers": {
    "seaotter": {
      "url": "https://mcp.seaotter.ai/mcp",
      "headers": {
        "Authorization": "Bearer sk-otter-..."
      }
    }
  }
}

Claude Code — Open in Claude Code above runs this for you, or copy it (authenticates on first use: OAuth sign-in auto-mints a free key, or set OTTER_API_KEY):

claude mcp add --transport http seaotter https://mcp.seaotter.ai/mcp

One-click Add inside Claude arrives with our Connector Directory listing.

ChatGPT

Add OtterScore to ChatGPT (MCP connector)

ChatGPT connects to remote MCP servers via developer mode — the full otter_* toolset in your own chats, not just a GPT. There is no add-by-URL deeplink in ChatGPT today, so this is a copy-paste flow (honest, ~60 seconds):

  1. Copy the server URL: https://mcp.seaotter.ai/mcp
  2. In ChatGPT (web): Settings → Apps & Connectors → Advanced settings → enable Developer mode (Plus/Pro/Business/Enterprise/Edu).
  3. Back in Apps & Connectors, click Create: name it “SeaOtter”, add a short description (“Ocean predicts where the work goes next; the Critic decides whether it counts”), paste the URL as the MCP server URL, and pick OAuth (a free key is auto-minted on first connect).
  4. Create — ChatGPT validates the server and lists the ocean_* + otter_* tools. In any chat, enable the SeaOtter connector, ask Ocean where a step leads, and ask OtterScore to check your work.
https://mcp.seaotter.ai/mcp
Open ChatGPT connector settings

No developer mode? Two lighter paths:

Open the OtterScore GPTOpen ChatGPT with the setup prompt

The published GPT is already wired to check your work; the setup prompt opens a plain chat prefilled — press send and it walks you through the rest.

One-click Add to ChatGPT arrives with our listing in the reviewed ChatGPT apps directory (submission pending — until then, the steps above are the real path).

Agents & other MCP clients

Already on the official MCP registry as ai.seaotter/otterscore. Self-onboard with no human: mint a key with the generated signup call below (the placeholder bearer is ignored on this keyless door), ask Ocean where each step leads, check what you made, iterate on the flaws, and keep the tamper-evident receipts as proof the work was checked. The tool list is generated from the API contract — otter_projection returns the whole map:

curl -X POST 'https://api.seaotter.ai/api/v1/agent-keys/signup' \
  -H 'Authorization: Bearer sk-otter-...' \
  -H 'Content-Type: application/json' \
  -d '{"email": "..."}'

Full machine-readable contract: /llms.txt.

NATIVE DRIVER

Give the gate a body on the desktop

OtterScore checks web work over the API with nothing to install. To check and drive REAL desktop apps — click, type, and assert against a native UI under a leased GUI seat — install the SeaOtter Driver Agent: a signed, notarized macOS executor that AgentOS resolves as a native_gui driver. It is observation/test infrastructure, human-overseen, not a product UI. Every action is fail-closed: it injects input only when the target app is verified frontmost, and a verifier — not the injector — writes the terminal verdict.

Signed & notarizedmacOS 14+Human kill-switchStructural metadata only

What you install

SeaOtter Driver Agent

The headless executor. Drives the app under test via the Accessibility API + synthetic input and emits a native_app_runtime_receipt per action. Needs the Accessibility grant.

SeaOtter Driver Menu Bar

The human oversight surface: a menu-bar item showing who holds the seat, a Stop / Release-seat kill switch, permission status, and the recent verdict. Required — macOS needs a visible signed app to attach grants to.

Download · macOS 14+ · free

No key, no sign-in. The build is Developer-ID signed + Apple-notarized; the safety gates are local — the Accessibility grant you approve, the single-holder GUI-seat lease, and the menu-bar kill switch. (An eval key is only needed later, when the driver sends checked work to the eval API.)

# no auth header needed — public download
curl -fsSL 'https://api.seaotter.ai/api/v1/app-drivers/native/download?asset=SeaOtterDriverAgent' -o SeaOtterDriverAgent.zip
curl -fsSL 'https://api.seaotter.ai/api/v1/app-drivers/native/download?asset=SeaOtterDriverMenuBar' -o SeaOtterDriverMenuBar.zip
unzip -o SeaOtterDriverAgent.zip -d /Applications

shasum -a 256 SeaOtterDriverAgent.zip # compare to distribution[].sha256 in the manifest

Download for macOSInstall manifest (JSON)

Grant permissions (one time)

1 · Accessibility — required

Gates input + AX inspection. The driver is not healthy without it.

  1. Open SeaOtter Driver Agent once (right-click → Open the first time).
  2. System Settings → Privacy & Security → Accessibility.
  3. Toggle SeaOtter Driver Agent on.

2 · Screen Recording — optional

Only enables screenshot evidence. NOT required for health.

  1. System Settings → Privacy & Security → Screen Recording.
  2. Toggle SeaOtter Driver Agent on if you want screenshot artifacts.

Verify it works

$ SeaOtterDriverAgent self-check
{
  "accessibilityTrusted": true,
  "screenRecordingGranted": false,
  "healthy": true
}

Re-run until healthy:true. accessibilityTrusted is the gate; screen recording only adds screenshots.

How it checks

  1. register — AgentOS mints a native_gui DriverInstance (requiresLease=true) from `SeaOtterDriverAgent register`.
  2. lease — ResolveDriver → BindDriver acquires an exclusive GUI-seat lease — one holder at a time.
  3. drive — The driver runs your DriverRequest batch and emits a native_app_runtime_receipt per action (binary sha + frontmost-match).
  4. verify — The verifier — not the injector — writes the terminal OtterScore verdict. A write with no frontmost-match never passes.

Wire protocol →

Use it with your harness

The driver is harness-agnostic — it's the hands, not the brain. Bring your own harness (Claude Code, Cursor, Codex, or your own). We deliberately don't bundle one: that would bloat the download and break neutral-across-providers. One contract (agentos.driver_broker.v1) serves web and native.

Any harness or script

exec `SeaOtterDriverAgent run` — pipe a DriverRequest JSON to stdin, read a DriverResponse from stdout (exit 0 ok / 2 some-failed / 3 bad-input). No SDK, no language lock-in.

AgentOS-managed

agentosd resolves it as a native_gui driver and drives it under a single-holder GUI-seat lease + verifier — the enforce / managed path.

MCP harnesses (planned)

a local MCP — native_macos_app_state (look) + execute_native_macos_actions (act) — wired into your harness via install.sh, mirroring the hosted OtterScore MCP.

For agents

No human needed after the first key. Discover the manifest, download + verify the sha256, grant TCC once, then register + self-check + drive. One contract (agentos.driver_broker.v1) serves web and native.

# 1. discover
curl -fsSL https://seaotter.ai/.well-known/seaotter-driver-agent.json
# 2. download (per distribution[].download_url) — public, then
#    verify shasum -a 256 == distribution[].sha256
# 3. grant Accessibility once → SeaOtterDriverAgent self-check  # until healthy:true
# 4. SeaOtterDriverAgent register   # → create the native_gui DriverInstance
# 5. drive: stdin DriverRequest JSON → stdout DriverResponse JSON (exit 0 ok / 2 failed / 3 bad-input)

Discover: /.well-known/seaotter-driver-agent.json

SeaOtterSeaOtter checks your AI agents' work before you trust it.

Product

  • Download for macOS
  • Live demo
  • Pricing
  • Sign in

Developers

  • Docs and the API
  • Agent-native quickstart
  • llms.txt — for agents

Company

  • SeaOtter for enterprise
  • Investors
  • Contact

© 2026 SeaOtter.

PrivacyTerms