Skip to main content
Authenticate to the SEAOTTER control plane with Authorization: Bearer <token>. Scripts, MCP, and CI use a SEAOTTER access key (so_…). The signed-in dashboard uses a Clerk session JWT. Hermes runtime credentials on each agent are a separate secret — do not put api_server_key in MCP config. Every authenticated control-plane request uses:
SEAOTTER accepts two bearer types on the same header.

SEAOTTER access keys (so_…)

Use for: scripts, CI, SDKs, MCP (SEAOTTER_API_KEY), and the interactive playground on this docs site.
Do not put API keys in frontend JavaScript or public repos.

Use with MCP

The @ryanseaotter/mcp-server package reads the key from the MCP server environment:
See Connect from chat for Claude, Cursor, and Codex config snippets. Never commit the key into .cursor/mcp.json in a shared repo — use a local or user-level config.

Clerk session JWT

Use for: the SEAOTTER web app at seaotter.dev only. Clerk cookies and short-lived session tokens are not for scripts or the docs playground. Generate an API key instead.

What not to mix up

Errors

Missing or invalid bearer → 401 with {"detail":"…"}. See Errors.