Pocket
ApiOrganization

Organization MCP

Use the Pocket MCP server with organization-scoped tools when you authenticate as an org member or with an organization API key

The Pocket MCP server (/mcp) automatically exposes organization-scoped tools alongside your personal conversation tools whenever the request is authenticated against an organization.

There is no separate /org/mcp endpoint — same URL, more tools when org context is available.

Endpoint

https://public.heypocketai.com/mcp

The endpoint speaks the MCP Streamable HTTP transport.

How org context is resolved

Auth methodWhat appears in tool list
OAuth bearer (Firebase user)The 4 personal *_pocket_* tools, plus the 12 org tools if you are an active member of at least one organization.
User API key (Authorization: Bearer pk_user...)Same as OAuth.
Organization API key (Authorization: Bearer pk_org...)Only the 12 org tools. No personal conversation tools (the key is not tied to a user).

When you authenticate as a user that belongs to multiple organizations, your oldest active membership is selected automatically. There is no per-request org-switching today.

Permission model

Different gates depending on how you signed in:

User identity (OAuth or user API key)

The tool is available based on your role in the organization:

RoleRead toolsWrite tools
vieweryesno
memberyesno
adminyesyes
owneryesyes

Organization API key

Gated by the scopes assigned to the key when it was created (see API Keys):

ToolScope
list_org_recordings, get_org_recording, get_org_recording_audio_url, search_org_recordings, list_org_tags, get_org_analyticsrecordings:read
list_org_templates, get_org_templatetemplates:read
create_org_template, update_org_template, delete_org_templatetemplates:write

Calling a tool without the required scope returns insufficient scope: <scope> from the tool, not from the transport.

Tools

Recordings

  • list_org_recordings — Paginated list of recordings owned by org members. Supports start_date, end_date (YYYY-MM-DD, filtered on created_at), tag_ids, page, limit.
  • get_org_recording — Fetch a single recording by recording_id with decrypted transcripts and summarizations.
  • get_org_recording_audio_url — Generate a pre-signed S3 URL for audio download (expires_in 60–86400 seconds, default 3600).
  • search_org_recordings — Semantic search across all active organization member recordings (transcripts, meeting sections, action items). Required: query. Optional: limit (1–20, default 8), dateFrom, dateTo, recordingIds, tagIds, folderIds. Backed by the per-org Turbopuffer namespaces; new members are dual-written into the org index automatically and a backfill task seeds existing data.

Tags

  • list_org_tags — All tags belonging to org members, with usage counts.

Templates

  • list_org_templates / get_org_template — Read the org's shared templates.
  • create_org_template — Create a new template. Required: name, sections. Optional: description, icon, meeting_context, generate_action_items, generate_mind_map, category, routing_instructions. When called by a real user, the user is recorded as the template creator.
  • update_org_template — Patch fields on an existing template (only provided fields are changed).
  • delete_org_template — Soft-delete a template by id.

Analytics

  • get_org_analytics — Aggregated recording statistics for the organization, broken down by member, for an inclusive date range (filtered on created_at, matching list_org_recordings). Defaults to the last 30 days (UTC). Returns period, totals (recordings / total_duration_seconds / summarizations), and per-member rows.

Client configuration

Claude Desktop / Cursor

Add to your MCP client config (e.g. claude_desktop_config.json):

{
  "mcpServers": {
    "pocket": {
      "url": "https://public.heypocketai.com/mcp",
      "headers": {
        "Authorization": "Bearer pk_your_key_here"
      }
    }
  }
}

For OAuth-capable clients, point them at the same URL and complete the OAuth flow when prompted; the org tools become visible automatically if your account is in an organization.

Manual test

curl -X POST https://public.heypocketai.com/mcp \
  -H "Authorization: Bearer pk_xxx" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Errors

Status / Tool errorMeaning
401 unauthorizedMissing, malformed, or invalid auth header (no API key or OAuth token recognized).
429Per-key rate limit hit (see X-RateLimit-* response headers).
this tool requires user authenticationAn org pk_ key tried to call a personal *_pocket_* tool.
this tool requires organization contextA user API key / OAuth token has no active org membership.
user is not an active member of this organizationMembership row was deactivated between auth and tool call.
write access requires the admin or owner roleA member or viewer tried to call a template write tool.
insufficient scope: <scope>Org pk_ key lacks the scope required by the tool.
recording not found / template not foundThe resource isn't owned by this org or has been deleted.

On this page