granola
granola.
Meeting content — notes, transcripts, and folders.
setup & usage
⚠ granola api key
create an API key in Granola (desktop app → Settings → Connectors → API keys → Create new key — see the integration doc), then paste it into oto.
▸ meeting notes, transcripts, folders, webhooks
granola gives access to the meeting notes, transcripts and AI summaries of the connected workspace, through two tools:
granola_content(op="list_notes", created_after="2026-08-01")granola_content(op="get_note", note_id="not_...")granola_content(op="get_transcript", note_id="not_...") (dedicated pagination, handles TRANSCRIPT_TOO_LARGE)granola_content(op="list_folders")granola_webhook_endpoint(op="create", url="https://...", scopes=["workspace"]) (["personal"]/["public"] with a personal key — a workspace key MUST pass exactly ["workspace"], confirmed live)granola_webhook_endpoint(op="list"|"update"|"delete", ...)· pagination, `signing_secret`, and `scopes` reach
cursor (returned in hasMore/cursor of each response, never a page number); page_size bounds: notes/folders 1-30 (default 10), transcript 1-100 (default 50)granola_webhook_endpoint(op="create") returns a signing_secret (HMAC-SHA256, Standard Webhooks format) only once, in this response — to be stored on the receiver side to verify deliveries; it is never reissuedscopes determines WHICH notes trigger events for an endpoint: personal (notes owned or directly shared), public (notes visible to the whole workspace) — a workspace key must pass exactly ["workspace"]429docs.granola.ai/api-reference/openapi.json), not against a doc page summary — and tested live on 2026-08-20 against a real workspace (workspace key): notes/transcript/folders + the full create→update→delete cycle of a webhook endpoint work as coded, 400 errors includedGET /v1/audit (audit log); tested live, it returned 404 NOT_FOUND on this key (probably a plan feature not enabled for this workspace) — removed from the connector rather than exposing a tool that nobody can currently use⚙ multiple comptes
this connector accepts multiple comptes: each stored credential becomes a named account (one name per compte), at your level, your team's or your org's.
_account="<name>" on the tool; list them: oto_identity(op='list', connector='granola') (scope='org' or scope='group' for the org's or team's)oto_identity(op='set', connector='granola', identity_id='<name>'); rename: op='rename' with new_name_account) and adding upoutils
chargement…
utilisation
claude code — installe le plugin oto —
claude plugin marketplace add otomata-tech/oto-plugin — mcp + skill configurés.cli —
pipx install oto-cli puis oto granola …