Skip to content
Talk to an Engineer Dashboard

Connect to Granola MCP using OAuth 2.1 with MCP discovery and dynamic client registration.

Granola MCP logo

Supports authentication: OAuth 2.0

Connect a user’s Granola account and query Granola’s official MCP server through Scalekit. Scalekit handles the OAuth flow, token storage, and tool execution automatically.

Granola MCP is primarily used through Scalekit tools. Use scalekit_client.actions.execute_tool() to search meeting notes, list meetings, fetch meeting details, and retrieve transcripts without calling the upstream MCP server directly.

Tool Calling

Use this connector when you want an agent to work with Granola meeting content, including summaries, notes, attendees, and transcripts.

  • Use granolamcp_query_granola_meetings for natural-language questions such as decisions, action items, or follow-ups from past meetings.
  • Use granolamcp_list_meetings to find meetings in a time window before drilling into specific meeting IDs.
  • Use granolamcp_get_meetings when you already know the Granola meeting IDs and need richer metadata or notes.
  • Use granolamcp_get_meeting_transcript when exact wording matters and you need the verbatim transcript instead of summarized notes.
examples/granolamcp_query_meetings.py
import os
from scalekit.client import ScalekitClient
scalekit_client = ScalekitClient(
client_id=os.environ["SCALEKIT_CLIENT_ID"],
client_secret=os.environ["SCALEKIT_CLIENT_SECRET"],
env_url=os.environ["SCALEKIT_ENV_URL"],
)
auth_link = scalekit_client.actions.get_authorization_link(
connection_name="granolamcp",
identifier="user_123",
)
print("Authorize Granola MCP:", auth_link.link)
input("Press Enter after authorizing...")
connected_account = scalekit_client.actions.get_or_create_connected_account(
connection_name="granolamcp",
identifier="user_123",
)
tool_response = scalekit_client.actions.execute_tool(
tool_name="granolamcp_query_granola_meetings",
connected_account_id=connected_account.connected_account.id,
tool_input={
"query": "What decisions and follow-ups came out of last week's customer calls?"
},
)
print("Granola response:", tool_response)

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.

NameTypeRequiredDescription
meeting_idstringYesMeeting UUID
schema_versionstringNoOptional schema version to use for tool execution
tool_versionstringNoOptional tool version to use for tool execution

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.

NameTypeRequiredDescription
meeting_idsarray<string>YesArray of meeting UUIDs (max 10)
schema_versionstringNoOptional schema version to use for tool execution
tool_versionstringNoOptional tool version to use for tool execution

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.

NameTypeRequiredDescription
custom_endstringNoISO date for custom range end (required if time_range is ‘custom’)
custom_startstringNoISO date for custom range start (required if time_range is ‘custom’)
schema_versionstringNoOptional schema version to use for tool execution
time_rangestringNoTime range to query meetings from
tool_versionstringNoOptional tool version to use for tool execution

Query Granola about the user’s meetings using natural language. Returns a tailored response with inline citation links in markdown (e.g. [[0]](url)) 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.

NameTypeRequiredDescription
document_idsarray<string>NoOptional list of specific meeting IDs to limit context to
querystringYesThe query to run on Granola meeting notes
schema_versionstringNoOptional schema version to use for tool execution
tool_versionstringNoOptional tool version to use for tool execution