Install
openclaw skills install granola-mcpAccess Granola AI meeting notes via MCP (mcporter). Query meetings, list by date range, get full details, and pull verbatim transcripts. Use when the user as...
openclaw skills install granola-mcpMeeting notes AI connected via mcporter call granola.<tool>.
granola.query_granola_meetings query=<string> [document_ids=<uuid[]>]
granola.list_meetings [time_range=this_week|last_week|last_30_days|custom] [custom_start=<ISO>] [custom_end=<ISO>]
granola.get_meetings meeting_ids=<uuid[]> (max 10)
granola.get_meeting_transcript meeting_id=<uuid>
query_granola_meetingslist_meetingsget_meetings with IDs from list resultsget_meeting_transcriptPrefer query_granola_meetings over list+get for natural language questions. Responses include citation links (e.g. [[0]](url)). Preserve these in replies so the user can click through to original notes.
https://mcp-auth.granola.ai/oauth2/authorizeconfig/granola_oauth.json with keys: client_id, refresh_token, access_token, token_endpointconfig/mcporter.json with the Granola MCP server entry and Authorization: Bearer <token> headerscripts/refresh_token.sh periodically, since OAuth tokens expire every ~6 hoursIf a call fails with 401/auth error:
bash {baseDir}/scripts/refresh_token.sh
The script reads config/granola_oauth.json, posts to the token endpoint (https://mcp-auth.granola.ai/oauth2/token), and updates both config/granola_oauth.json and config/mcporter.json with the new access token.
Then retry the call. If refresh also fails, the user needs to re-authenticate manually via the OAuth flow above.
config/granola_oauth.json — OAuth credentials (client_id, refresh_token, access_token, token_endpoint). Contains secrets; do not commit.config/mcporter.json — MCP server config with bearer token header. Contains secrets; do not commit.