
List accessible folders alphabetically with cursor pagination. Returns folder IDs, names, and parent folder IDs. Use a folder ID with listnotes' folderid filter to list the notes in a folder and its child folders.
List meeting notes with cursor pagination. Filter server-side by createdbefore/createdafter/updatedafter (ISO 8601) or folderid (use listfolders to find folder IDs). Only notes with a generated AI summary appear. Returns lean summaries with note IDs; use getnote for summary text, attendees, and transcript.
Get a meeting note by ID: AI summary (plain text and markdown), attendees, calendar event, folder membership, and web URL. Set includetranscript=true to also return the whole transcript inline — for long meetings use getnotetranscript instead, which pages it. Use listnotes to find note IDs.
Get a note's timestamped transcript one page at a time, with speaker labels and attribution. Use this instead of getnote(includetranscript=true) for long meetings — that returns every segment in one response. Use list_notes to find note IDs.
Validate the Granola API key by making a lightweight list-notes call (page_size=1).
Register an HTTPS URL to receive note events (note.generated, note.edited, note.accessgranted). Requires url and scopes: 'personal' and/or 'public', or exactly ['workspace'] with a Workspace API key. Omit events to subscribe to all; set folderids (from listfolders) to restrict delivery. Returns the endpoint ID and a signingsecret shown only once. Use updatewebhookendpoint to change it.
List all configured webhook endpoints with their IDs, URLs, subscribed events, scopes, folder filters, and enabled state. Returns not-found if the webhooks API is unavailable for the workspace. Use updatewebhookendpoint to change one or deletewebhookendpoint to remove one.
Delete a webhook endpoint by ID; deliveries stop immediately. Use listwebhookendpoints to find endpoint IDs (format whe_...).
Update a webhook endpoint in place: change its url, scopes, events, or folderids, or set enabled=false to pause deliveries and true to resume. Every field is optional and omitted fields are left unchanged; scopes, events, and folderids each REPLACE the current value rather than adding to it. The signing secret survives. Use listwebhookendpoints to find endpoint IDs (format whe_...).

In an mcp.json file, add the configuration below, and restart Cursor.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "url": "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
5 "headers": {
6 "Authorization": "Bearer yMt*****"
7 }
8 }
9 }
10}
11Open your Claude Desktop configuration file and add the server configuration below. You'll also need to restart the application for the changes to take effect.
Make sure Claude is using the Node v20+.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "mcp-remote@latest",
8 "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
9 "--header",
10 "Authorization: Bearer ${AUTH_TOKEN}"
11 ],
12 "env": {
13 "AUTH_TOKEN": "yMt*****"
14 }
15 }
16 }
17}Open your Windsurf MCP configuration file and add the server configuration below.
Click on the refresh button in the top right of the Manage MCP server page or in the top right of the chat box in the box icon.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "mcp-remote@latest",
8 "https://ah-api.merge.dev/api/v1/tool-packs/<tool-pack-id>/registered-users/<registered-user-id>/mcp",
9 "--header",
10 "Authorization: Bearer ${AUTH_TOKEN}"
11 ],
12 "env": {
13 "AUTH_TOKEN": "<ah-production-access-key>"
14 }
15 }
16 }
17 }In Command Palette (Cmd+Shift+P on macOS, Ctrl+Shift+P on Windows), run "MCP: Open User Configuration".
You can then add the configuration below and press "start" right under servers. Enter the auth token when prompted.
Learn more in the official documentation ↗
1{
2 "inputs": [
3 {
4 "type": "promptString",
5 "id": "agent-handler-auth",
6 "description": "Agent Handler AUTH_TOKEN", // "yMt*****" when prompt
7 "password": true
8 }
9 ],
10 "servers": {
11 "agent-handler": {
12 "type": "stdio",
13 "command": "npx",
14 "args": [
15 "-y",
16 "mcp-remote@latest",
17 "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
18 "--header",
19 "Authorization: Bearer ${input:agent-handler-auth}"
20 ]
21 }
22 }
23}It's an MCP server that lets your agents access data and functionality from Granola via tools. Your agents can invoke these tools to pull a meeting's structured notes, list notes from a specific folder, retrieve attendee and summary details from a call, register a webhook for new note events, and more.
Granola offers an official MCP server, but you can also use one from a third-party platform, like Merge Agent Handler.
The use cases naturally depend on the agent you've built, but here are a few common ones:
Here are some of the most commonly used tools:
list_folders: lists the folders an authenticated user can access, alphabetically with cursor pagination. Useful for agents that need to scope a search to a specific team or project folder before pulling noteslist_notes: returns meeting notes filtered by date range or folder, with cursor pagination. Use this when an agent needs to survey recent meetings before deciding which ones to act onget_note: retrieves a single note's summary, attendees, and optionally its full transcript. Call this when an agent needs complete context on one specific meetingcreate_webhook_endpoint: registers an HTTPS URL to receive events when new notes are created. Good for workflows that need to react to a meeting the moment it's processed, rather than pollinglist_webhook_endpoints: displays the webhook endpoints currently configured along with their settings. Helpful when an agent needs to confirm a workflow is still wired up correctlydelete_webhook_endpoint: removes a webhook endpoint by ID. Useful for agents that manage their own event subscriptions and need to clean up ones no longer in useThere are several reasons to run Granola through Merge Agent Handler instead of a standalone or self-built MCP server:
You can take the following steps:
1. Create or log into your Merge Agent Handler account.
2. Install the Merge CLI by running pipx install merge-api, then run merge configure to link the CLI to your Merge account and merge login to authenticate your session.
3. Register the Agent Handler MCP server with Claude Code by running claude mcp add --transport http agent-handler https://ah-api.merge.dev/mcp, then open Claude Code and run /mcp to confirm agent-handler appears with a connected status.
4. Select agent-handler from the MCP list. This opens a browser window where you select which integrations to authenticate. Choose Granola and complete the auth flow. Merge stores and manages the credentials going forward.
5. Open a Claude Code session and start querying Granola data directly. The first time you use a Granola tool, a Magic Link may appear to complete connector authentication.
If you want to connect Merge Agent Handler's Granola MCP with internal or customer-facing agentic products, you can follow the steps in our docs.
Yes, Merge for Workforce lets your employees connect Claude, ChatGPT, Microsoft Copilot, Cursor, and other MCP-compatible AI tools to Granola without bypassing IT governance.
Instead of setting up direct connections with personal credentials that IT can't monitor or revoke, each employee authenticates through Merge and gets individual credentials tied to their identity. An employee can ask Claude to pull up notes from last week's customer call, summarize action items from a meeting, or search past calls for a specific topic, all within IT-defined permissions.
Every tool call an employee's AI makes to Granola is also inspected against your DLP rules and logged to a searchable audit trail, giving security teams full visibility into what data was accessed and by whom.
Whether you're an engineer experimenting with agents or a product manager looking to add tools, you can get started for free now