Endpoint
Authentication
The OtterlyAI MCP server authenticates with OAuth 2.0. You do not pass an API key. When you add the server to a compatible client, the client walks you through a standard browser sign-in to OtterlyAI and obtains an access token on your behalf. Permissions and workspace scoping match your OtterlyAI account.The
oai_live_ API keys documented under
Authentication are for the REST Public API only. The
MCP server does not accept them — it is OAuth-only.401 with a
WWW-Authenticate header pointing at the protected-resource metadata, which is
the client’s cue to start the OAuth flow.
Quick sanity check
You don’t need a token to confirm the server is up and correctly OAuth-gated. An unauthenticated request returns401 with a WWW-Authenticate header:
HTTP/1.1 401 and a header of the form
WWW-Authenticate: Bearer error="invalid_token", resource_metadata="https://data.otterly.ai/.well-known/oauth-protected-resource/mcp".
Fetching that metadata document returns the resource and its authorization
server:
Claude.ai
In Customize → Connectors, choose Add connector / ”+” sign, search for OtterlyAI, and click Connect:Claude Code
claude mcp list — you should see
otterly: ... - ✓ Connected. Tools are then available as
mcp__otterly__<tool_name>.
Claude Desktop
Add a remote connector pointing at the endpoint; Claude Desktop runs the OAuth flow in your browser on first connect. If your version launches stdio servers only, use themcp-remote bridge — it
performs the OAuth handshake for you, so no static Authorization header is
needed. Add the following to
~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
Cursor
In Cursor → Settings → MCP, add a new server using the samemcp-remote
bridge (the OAuth flow opens in your browser on first use):
Available tools
Every tool maps 1:1 to an endpoint in the Public API OpenAPI spec. Required arguments match the API; optional arguments are listed below the table.Workspaces & engines
Brand reports
GEO audits
Query fan-outs
Write tools (write permission only)
These tools are only registered when your account has
write permission; with
read-only access they are not advertised by the server.
Common arguments
- Dates:
startDateandendDateare inclusive. AcceptYYYY-MM-DDor a full ISO timestamp; only the date portion is used. - Country:
countryis a lowercase ISO 3166-1 alpha-2 code (e.g.us,de). Useukfor the United Kingdom. - Engines:
engines(multi-value) andengine(single-value) acceptchatgpt,google,perplexity,copilot,google_ai_mode,gemini. Calllist_enginesto see which engines are available in which countries. - Pagination: list tools accept
page(default1) andpageSize(default50, max100). - Extra filters on
list_brand_report_promptsandlist_brand_report_citations:engines,tagId,search,sortBy,sortOrder.
Typical conversation flow
list_workspaces→ pick aworkspaceId(optional).list_brand_reports→ pick areportId.list_brand_report_promptsorlist_brand_report_citationswithreportId, a date range, and a country code (e.g.us,gb,de).- Drill into
get_brand_report_stats,get_brand_report_citation_stats,list_brand_report_recommendations, or the GEO audit tools as needed.
Things to know
- Most tools are read-only. Write tools (
create_crawlability_check,create_content_check,create_query_fan_out) are only available to accounts with thewritepermission. - Workspace scoping matches your OtterlyAI account. A
401from a tool call means the OAuth token is missing or expired (reconnect to refresh it); a403means your account lacks permission for the requested workspace. - The OpenAPI spec at
https://data.otterly.ai/v1/openapi.jsonis the source of truth for the underlying data shapes returned by each tool.