> ## Documentation Index
> Fetch the complete documentation index at: https://docs.toolshed.philo.ventures/llms.txt
> Use this file to discover all available pages before exploring further.

# Granola Plugin

> Granola AI meeting notes — separate scoped tools for personal vs enterprise/team accounts.

**Plugin ID:** `granola` | **Auth:** API Key (Bearer token, `grn_` prefix)

Two distinct auth provider ids and two parallel sets of tools, so the model can pick personal vs team based on the user's prompt without guessing which credential to use:

| Auth provider id     | Connected via                                                | Tools                                                           |
| -------------------- | ------------------------------------------------------------ | --------------------------------------------------------------- |
| `granola-personal`   | Dashboard "Granola (Personal)" tile (Personal tools section) | `granola.personal.notes.list`, `granola.personal.notes.get`     |
| `granola-enterprise` | Dashboard "Granola (Enterprise)" tile (Team tools section)   | `granola.enterprise.notes.list`, `granola.enterprise.notes.get` |

Both flavors call the same public API (`https://public-api.granola.ai/v1/notes`) — the difference is which Bearer token gets used at request time. Notes only appear in the response once they have a completed AI summary and transcript.

<Note>
  Tool descriptions are written so the model can disambiguate from natural-language prompts. Personal tools say "your own personal Granola account"; enterprise tools say "your team's shared Granola Enterprise workspace (notes from teammates included)". `search_tools` will return only the scopes the user has connected.
</Note>

## Personal scope

### granola.personal.notes.list

**Name:** List Personal Meeting Notes

Lists meeting notes from the user's own Granola account, paginated.

| Parameter       | Type      | Required | Default | Description                                               |
| --------------- | --------- | -------- | ------- | --------------------------------------------------------- |
| `created_after` | `string`  | No       | --      | ISO-8601 datetime to filter notes created after this time |
| `limit`         | `integer` | No       | `25`    | Max notes to return                                       |
| `cursor`        | `string`  | No       | --      | Pagination cursor from a previous response                |

**Output:**

```json theme={null}
{
  "notes": [
    {
      "id": "not_abc123",
      "title": "Weekly Standup",
      "summary": "Discussed sprint progress and blockers...",
      "created_at": "2026-04-20T10:00:00Z",
      "updated_at": "2026-04-20T10:30:00Z"
    }
  ],
  "next_cursor": "cursor_xyz"
}
```

### granola.personal.notes.get

**Name:** Get Personal Meeting Note

Fetch a single note by ID. Setting `include_transcript: true` returns the full transcript alongside the summary.

| Parameter            | Type      | Required | Default | Description                         |
| -------------------- | --------- | -------- | ------- | ----------------------------------- |
| `noteId`             | `string`  | Yes      | --      | Note ID (prefixed with `not_`)      |
| `include_transcript` | `boolean` | No       | `false` | Include the full meeting transcript |

**Output:**

```json theme={null}
{
  "id": "not_abc123",
  "title": "Weekly Standup",
  "summary": "Discussed sprint progress and blockers...",
  "transcript": "Speaker 1: Let's start with updates...",
  "created_at": "2026-04-20T10:00:00Z",
  "updated_at": "2026-04-20T10:30:00Z"
}
```

## Enterprise scope

`granola.enterprise.notes.list` and `granola.enterprise.notes.get` have identical schemas to their personal counterparts. The only difference is the credential used (Granola Enterprise API key vs personal key) and the resulting visibility — enterprise sees notes across the team's workspace.
