name: "granola"
description: "Search and read Granola meeting notes and transcripts through Granola's OAuth-backed MCP server."
icon: "granola"
metadata: { "includeInPrompt": false }
Granola / Granola
Purpose / 用途
Search Granola meeting notes, summaries, and transcripts through the hosted
Granola MCP server (https://mcp.granola.ai/mcp).
通过托管的 Granola MCP 服务器(https://mcp.granola.ai/mcp)搜索 Granola 会议笔记、摘要和转录文本。
Tooling / 工具
Use exec to run:
使用 exec 运行:
granola-cli <subcommand> [options]
Connection management / 连接管理
granola-cli status
granola-cli authorize-url
granola-cli exchange-code --code <code> [--redirect-uri <url>]
granola-cli refresh
granola-cli disconnect
MCP operations / MCP 操作
granola-cli list-tools
granola-cli call-tool --name <tool> --arguments-json '<json-object>'
--arguments-json must be a JSON object; arrays or scalars are rejected. Uselist-tools first to discover the tool catalogue and each tool'sinput_schema.
--arguments-json 必须是 JSON 对象;数组或标量会被拒绝。先用 list-tools 发现工具目录及每个工具的 input_schema。
Auth / 认证
OAuth is handled by authd via Dynamic Client Registration + PKCE (S256). The
credential stays behind authd; do not read or edit connector auth files.
OAuth 由 authd 通过动态客户端注册 + PKCE(S256)处理。凭据保存在 authd 之后;不要读取或编辑连接器的认证文件。
First-use setup flow / 首次使用设置流程
- Run
granola-cli status.- 运行
granola-cli status。
- 运行
- If status is
not_connected, rungranola-cli authorize-url. Whenconnect_urlis present, replace<connect_url>with the returned URL
and share exactly this Markdown link:[Connect Granola](<connect_url>); do not paste the raw
URL separately. Wait for the user to complete authorization.- 如果状态为
not_connected,运行granola-cli authorize-url。当返回connect_url时,用返回的 URL 替换<connect_url>,并原样分享这个 Markdown 链接:[Connect Granola](<connect_url>);不要单独粘贴原始 URL。等待用户完成授权。
- 如果状态为
- After the user authorizes, the browser is redirected via the Muse relay
back to this VM, and authd completes the code exchange automatically. The
agent resumes once the token lands.- 用户授权后,浏览器经 Muse 中继重定向回本 VM,authd 自动完成授权码交换。令牌落地后代理即恢复工作。
- Re-run
granola-cli status. When status flips toconnectedthe output also
includes the discovered MCP tool catalogue.- 重新运行
granola-cli status。当状态变为connected时,输出还会包含发现到的 MCP 工具目录。
- 重新运行
For manual environments where the relay is not wired up, callgranola-cli exchange-code --code <auth-code> after receiving the code.
在中继未接通的手动环境中,收到授权码后调用 granola-cli exchange-code --code <auth-code>。
Operating Rules / 操作规则
- Run
granola-cli statusbefore any MCP work. If notconnected, complete
the setup flow first.- 任何 MCP 工作之前先运行
granola-cli status。如果不是connected,先完成设置流程。
- 任何 MCP 工作之前先运行
- Call
list-toolsbeforecall-toolunless you already know the tool name
and its argument shape. Never guess tool names.- 除非已知工具名称及其参数形态,否则在
call-tool之前先调用list-tools。绝不猜测工具名称。
- 除非已知工具名称及其参数形态,否则在
arguments-jsonmust be a JSON object; wrap every argument appropriately.arguments-json必须是 JSON 对象;对每个参数进行恰当的包装。
- Prefer
query_granola_meetingsfor natural-language questions,list_meetingsfor metadata,get_meetingsfor known meeting IDs, andget_meeting_transcriptonly when the user needs verbatim detail. Useget_account_infoto answer which account/workspace is connected and,
when results come back empty, to checkmcp_note_access.scopes— a
workspace whose MCP access ispublic-only excludes personal notes.list_meetingsdefaults to the last 30 days; when it returns zero
meetings, retry withtime_range: "custom"pluscustom_startandcustom_endbefore concluding the account has no meetings, and uselist_meeting_foldersto see what the workspace actually holds.- 自然语言问题优先用
query_granola_meetings,元数据用list_meetings,已知会议 ID 用get_meetings,只有当用户需要逐字细节时才用get_meeting_transcript。用get_account_info回答当前连接的是哪个账户/工作区;当结果为空时,用它检查mcp_note_access.scopes——MCP 访问仅为public的工作区不包含个人笔记。list_meetings默认只查最近 30 天;当它返回零条会议时,先用time_range: "custom"加custom_start和custom_end重试,再下结论说账户没有会议,并用list_meeting_folders查看工作区实际包含的内容。
- 自然语言问题优先用
- Preserve Granola citation links in user-facing answers.
- 在面向用户的回答中保留 Granola 的引用链接。
- Do not use Granola for calendar scheduling or upcoming-event planning.
- 不要把 Granola 用于日历排期或日程规划。
- Token refresh happens automatically on 401. If
call-toolkeeps failing
withunauthorized, rungranola-cli refreshexplicitly or ask the user to
re-authorize.- 遇到 401 时自动刷新令牌。如果
call-tool持续以unauthorized失败,显式运行granola-cli refresh,或请用户重新授权。
- 遇到 401 时自动刷新令牌。如果
【评论】"results come back empty → 先查 scopes 再下结论"的排障顺序设计,把权限范围问题(public-only 排除个人笔记)列为空结果的常见根因,避免代理把权限缺陷误报为数据不存在。