over:heard API referenceMCP server

MCP server

over:heard exposes a standard MCP (Model Context Protocol) server: your AI assistant reads brands and stories, works with advisories (paywall respected), dispatches and validates crisis actions, adds context and creates share links — as the signed-in user, within their permissions.

Endpoint  https://overheard.co/mcp  ·  Streamable HTTP (JSON-RPC 2.0)  ·  Auth: OAuth 2.1 + PKCE (dynamic client registration, discovery at /.well-known/oauth-authorization-server) — you sign in, no secret is ever pasted.

Connect a client

Claude / ChatGPT (remote connectors): add a custom connector with the URL https://overheard.co/mcp. Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "overheard": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://overheard.co/mcp"
      ]
    }
  }
}

Clients with native remote-MCP support:

{
  "mcpServers": {
    "overheard": {
      "type": "http",
      "url": "https://overheard.co/mcp"
    }
  }
}

Tools

This list is generated from the server's live tool registry — exactly what tools/list answers.

list_brands

List the monitored brands (workspaces) in the account.

No arguments.

list_stories

List stories for a brand (or all brands), newest first.

argumenttype
brand_idstringBrand id from list_brands; omit for all.
statusstringOne of: new, assigned, in_progress, closed.

get_story

Full story detail incl. the advisory. If the advisory is locked, only the free teaser (assessment, severity, urgency, executive summary) is returned with an 'unlocked': false flag — call unlock_advisory to reveal the rest.

argumenttype
brand_id requiredstring
event_uri requiredstring

unlock_advisory

Unlock the full advisory of a story. Uses an included monthly unlock if available; otherwise returns a checkout_url to buy one (15 EUR). Never charges silently.

argumenttype
brand_id requiredstring
event_uri requiredstring

assign_action

Assign a phase's action to a teammate by email. An unknown email is invited into the workspace and emailed the action with full context.

argumenttype
brand_id requiredstring
event_uri requiredstring
phase requiredinteger
assignee requiredstringTeammate email address.

validate_action

Mark a phase action done (only its assignee may). Optional comment for the audit trail.

argumenttype
brand_id requiredstring
event_uri requiredstring
phase requiredinteger
commentstring

add_context

Provide authoritative facts about a story: proposes an UPDATED advisory as a pending version with a change diff (phases where work started are preserved verbatim). Nothing is applied until apply_advisory_update — the live advisory never changes silently.

argumenttype
brand_id requiredstring
event_uri requiredstring
context requiredstring

apply_advisory_update

Apply the pending advisory update of a story (assigned/completed phases stay verbatim and keep their assignees). Owner only.

argumenttype
brand_id requiredstring
event_uri requiredstring

create_share

Create a share link for a story briefing. access 'public' is anonymous and tops out at mode 'briefing' (the response doctrine never reaches an anonymous audience); ask for access 'guests' to share the full advisory.

argumenttype
brand_id requiredstring
event_uri requiredstring
accessstringOne of: public, guests. Default: public.
listedbooleanPublic shares only: list the page in the public index. Default: False.
modestringOne of: compact, briefing, full. Default: briefing.

Partner API tools

On the Partner plan the REST API's operations are additionally exposed as MCP tools, generated from the same registry as the OpenAPI reference — same auth model, same scopes, same answers.

v1_list_stories Partner

[GET /v1/stories] List stories (mentions) of one scoped brand.

argumenttype
brand requiredstringbrand host, e.g. danone.com

v1_get_story Partner

[GET /v1/story] Read one story of a scoped brand (advisory fields follow the same paywall as the UI).

argumenttype
brand requiredstringbrand host
event_uri requiredstringstory id

v1_post_brand_note Partner

[POST /v1/brand-note] Publish the official Brand Note on a story — gated: verified or delegated brands only. Never deletes: an empty or missing text is refused (use delete_brand_note).

argumenttype
brand requiredstringbrand host
event_uri requiredstringstory id
text requiredstringnote (600 chars max)

v1_delete_brand_note Partner

[DELETE /v1/brand-note] Remove the official Brand Note from a story — the ONLY way to delete it, and an explicit intent. Same gate as publishing.

argumenttype
brand requiredstringbrand host
event_uri requiredstringstory id

v1_trigger_advisory Partner

[POST /v1/advisory] Request the full advisory for a story. Consumes the same per-brand quota and bills exactly like the UI (15 EUR beyond the included).

argumenttype
brand requiredstringbrand host
event_uri requiredstringstory id

v1_list_delegations Partner

[GET /v1/delegations] Delegation state of the brands in this key's scope.

No arguments.

v1_create_api_key Partner

[POST /v1/api-keys] Always 403: API keys are managed by Owners/Admins in the app — a key can never mint keys.

No arguments.

v1_grant_delegation Partner

[POST /v1/delegations] Always 403: delegation is an explicit client-side act — a key can never self-delegate.

No arguments.