> **Building with AI coding agents?** If you're using an AI coding agent, install the official Scalekit plugin. It gives your agent full awareness of the Scalekit API — reducing hallucinations and enabling faster, more accurate code generation.
>
> - **Claude Code**: `/plugin marketplace add scalekit-inc/claude-code-authstack` then `/plugin install <auth-type>@scalekit-auth-stack`
> - **GitHub Copilot CLI**: `copilot plugin marketplace add scalekit-inc/github-copilot-authstack` then `copilot plugin install <auth-type>@scalekit-auth-stack`
> - **Codex**: run the bash installer, restart, then open Plugin Directory and enable `<auth-type>`
> - **Skills CLI** (Windsurf, Cline, 40+ agents): `npx skills add scalekit-inc/skills --list` then `--skill <skill-name>`
>
> `<auth-type>` / `<skill-name>`: `agent-auth`, `full-stack-auth`, `mcp-auth`, `modular-sso`, `modular-scim` — [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Granola MCP

<div class="grid grid-cols-5 gap-4 items-center">
 <div class="col-span-4">
  Connect to Granola MCP using OAuth 2.1 with MCP discovery and dynamic client registration.
 </div>
 <div class="flex justify-center">
  <img src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/granola.svg" width="64" height="64" alt="Granola MCP logo" />
 </div>
</div>

Supports authentication: OAuth 2.0

## Usage

<UsageGranolamcpSection />

## Tool list

## `granolamcp_get_meeting_transcript`

Get the full transcript for a specific Granola meeting by ID. Returns only the verbatim transcript content, not summaries or notes.
Use this when the user needs exact quotes, specific wording, or wants to review what was literally said in a meeting. For summarized content or action items, use query_granola_meetings or list_meetings/get_meetings instead.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `meeting_id` | string | Yes | Meeting UUID |
| `schema_version` | string | No | Optional schema version to use for tool execution |
| `tool_version` | string | No | Optional tool version to use for tool execution |

## `granolamcp_get_meetings`

Get detailed meeting information for one or more Granola meetings by ID. Returns private notes, AI-generated summary, attendees, and metadata.
Use this when you already have specific meeting IDs (e.g. from list_meetings results). For open-ended questions about meeting content, use query_granola_meetings instead.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `meeting_ids` | `array<string>` | Yes | Array of meeting UUIDs (max 10) |
| `schema_version` | string | No | Optional schema version to use for tool execution |
| `tool_version` | string | No | Optional tool version to use for tool execution |

## `granolamcp_list_meetings`

List the user's Granola meeting notes within a time range. Returns meeting titles and metadata.

IMPORTANT: For short-term questions about recent meeting details, prefer using query_granola_meetings instead.

When to use:

- User asks to list their meetings
- User asks about action items, decisions, or summaries from meetings over a longer or specific date range
- User asks about content from their meeting transcripts
- User references 'Granola notes' or 'meeting notes' or 'transcripts'

When NOT to use:

- User is asking about upcoming calendar events or scheduling
- User wants to create/modify calendar invites

Use get_meetings to retrieve detailed meeting content after identifying relevant meetings.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `custom_end` | string | No | ISO date for custom range end (required if time_range is 'custom') |
| `custom_start` | string | No | ISO date for custom range start (required if time_range is 'custom') |
| `schema_version` | string | No | Optional schema version to use for tool execution |
| `time_range` | string | No | Time range to query meetings from |
| `tool_version` | string | No | Optional tool version to use for tool execution |

## `granolamcp_query_granola_meetings`

Query Granola about the user's meetings using natural language. Returns a tailored response with inline citations that reference source meeting notes.

IMPORTANT: The response includes numbered citation links to specific Granola meeting notes. These citations MUST be preserved in your response to the user — they provide transparency and allow the user to verify information by clicking through to the original notes.

When to use:

- User asks about what was discussed, decided, or action-items from meetings
- User asks about follow-ups, todos, or commitments from recent meetings
- User references 'Granola notes' or 'meeting notes'

When NOT to use:

- User is asking about calendar scheduling or upcoming events
- User explicitly asks for a specific meeting by ID (use get_meetings instead)

Prioritize using query_granola_meetings over list_meetings/get_meetings for open-ended or natural language queries about meeting content.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `document_ids` | `array<string>` | No | Optional list of specific meeting IDs to limit context to |
| `query` | string | Yes | The query to run on Granola meeting notes |
| `schema_version` | string | No | Optional schema version to use for tool execution |
| `tool_version` | string | No | Optional tool version to use for tool execution |

---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
