← all tools
Comms

Granola

Meeting notes that end up somewhere useful.

Cost per callBYOK · vendor billed
Your own keyrequired
CategoryComms

Granola takes notes on your calls. Your agent reads them, along with the transcript and who was on the call, and files what matters onto the candidate or client record. Reading is free, on a rate-limited connection.

Granola is a read source, like Fathom. Notes in, CRM records updated.

things you can ask for

  • What came out of this week's client calls?
  • File the notes from that meeting onto the candidate in Loxo
  • Take the requirements from this call and build a longlist with Prospeo
  • Pull the transcript for this interview

works well with Granola

  • Loxo

    notes filed onto the right candidate

  • Prospeo

    source from what was actually agreed on the call

  • Hyreflow Agent

    turn a stack of transcripts into structured briefs

  • Fathom

    the other notetaker, if your team runs both

Ask for the outcome and your agent composes the run itself. Or start from a skill, a whole pipeline it already knows end to end.

browse all skills →

What your agent reads before it touches Granola

Every tool ships with a written playbook, and the agent loads it before the first call. Auth, rate limits, what each call costs, which actions need your approval, and the mistakes worth avoiding. It is the difference between an agent that knows the tool and one that guesses at it.

Read the Granola docs →
Show the raw playbookwritten for the agent

HOW in lib/granola.py. Read-only — no writes.

Auth & config

  • Base URL: https://public-api.granola.ai · Auth: Authorization: Bearer <key> (env GRANOLA_API_KEY; never hardcode).
  • Plan & scopes: requires a Granola Business plan. A key carries Personal-notes and/or Public-notes scopes set at creation, and only sees notes inside those scopes.
  • Rate limit: 25 burst / 5s, ~5/s sustained → 429. list_folders(page_size=1) is a safe pilot.

⚠️ Only summarized notes are visible

The API returns only notes that already have a generated AI summary and transcript. Still-processing or never-summarized notes are excluded from list results and 404 on get — so a "missing" note usually means not-yet-summarized, not an error.

Operations

  • list_notes(created_after=, created_before=, updated_after=, folder_id=, page_size≤30) — dates accept YYYY-MM-DD or ISO datetime; a folder_id includes child folders.
  • get_note(note_id, include="transcript") — full note: summary text and markdown, attendees, calendar event (title, organiser, times, invitees), folder membership, web URL and the transcript. Use the not_… id returned by list, not a UUID. Convenience: get_note_transcript(note_id).
  • list_folders(page_size≤30) — a null parent_folder_id means top-level.

Cost

Free — a flat, rate-limited API with no credit metering.

Handoff

Post-interview: pull the transcript and summary, parse it, then write notes onto the candidate in the ATS as an activity.