Back to docs
Integrations · Granola

Connect Granola to mnueron

Every meeting saved in Granola appears in mnueron with decisions, action items, and ticket references extracted automatically. We poll your Granola account every 10 minutes (or on demand). Setup takes ~3 minutes.

Note: Granola does not currently offer webhooks (only an API + their own MCP server). mnueron uses polling instead. If Granola adds webhooks in the future we will switch automatically — no user action required.

1

Get your Granola API key

  1. Sign in to granola.ai.
  2. Open Settings → API → API keys.
  3. Click Create new key. Name it mnueron-integration.
  4. Copy the key (starts with gk_live_ or similar). Granola only shows the full value once.
2

Install in mnueron

  1. Go to /dashboard/integrations/meet.
  2. Click Connect on the Granola tile.
  3. Paste the API key you copied. Click Connect Granola.
That\'s it. mnueron stores your API key encrypted and starts polling automatically.
3

Sync your first meeting

  1. Click Sync now on your Granola source row to pull existing notes immediately.
  2. OR run a quick test meeting in Granola, save the note, then wait up to 10 min for the next automatic poll.
  3. Open /dashboard/meetings. Your meeting appears with a "via Granola" badge.
Each click of Sync now fetches new notes since the last successful sync. No duplicates — mnueron tracks a cursor per source.
4

Verify decisions + action items

  1. Click into the meeting row. You\'ll see four tabs: Decisions, Action items, Links, Transcript.
  2. Decisions + action items populate within ~30s after sync as the LLM extractors run.
  3. Links (Jira tickets, GitHub URLs mentioned in the transcript) populate immediately via regex.

FAQ

Why polling instead of webhooks?

Granola does not currently offer webhooks. Their developer surface is REST API + their own MCP server. We poll the REST API every 10 minutes (and you can click Sync now anytime for immediate refresh). Once Granola adds webhooks, we can swap in instant delivery — the architecture supports both via the same MeetingSource plugin interface.

How often does mnueron poll?

Every 10 minutes by default once the Vercel cron is wired (the user-driven Sync now button works immediately). Each poll fetches notes created or updated since the last successful sync, so duplicates are skipped automatically.

My API key works in Granola but mnueron says I have no notes.

Check three things in order: (1) Your API key has read access — try curl https://api.granola.ai/v1/notes -H 'Authorization: Bearer <key>' from your terminal. (2) Your Granola account has at least one saved note. (3) Click Sync now on the source row in /dashboard/integrations/meet — Vercel function logs will tell you if the API call failed.

I want live access during a chat, not just polled archive.

Use Granola's MCP server directly — add it to your Claude Desktop or Cursor as an MCP source. Your AI agent can then query Granola in real time without going through mnueron's polling pipeline. See /docs/integrations/granola-mcp for setup. The two paths complement each other: polling builds your searchable archive, MCP gives you live access.

Will polling burn through Granola API rate limits?

No — each poll fetches one page of 50 notes max with cursor pagination, capped at 4 pages per poll cycle. Total API calls per org per day = 6 × 24 × (up to 4 pages) ≈ 580 max. Well within any reasonable rate limit.

How do I disconnect Granola?

On /dashboard/integrations/meet click the trash icon next to the Granola source. mnueron stops polling immediately and the source row is deleted. Existing meeting rows previously ingested stay in your store — disconnecting doesn't delete data.

Decisions / action items are empty after a meeting comes through.

The LLM extractors run after the meeting row is created. Check that OPENAI_API_KEY or ANTHROPIC_API_KEY is set in Vercel env vars (extractors fail open with no key — meeting saves but Decisions/Actions tabs are empty). Wait 30-60 seconds after sync for extraction to complete.

Your Granola meetings, searchable from every AI tool.

Once connected, every Granola meeting becomes part of your mnueron memory. Ask any agent — Claude, Cursor, Cline — what you decided last sprint and the answer comes back with the meeting clip + linked ticket attached.