# Granola on boxd

> Granola is a meeting notes app that captures transcripts and helps teams search and share conversations. It helps turn meeting context into action items and follow-ups.

- Page: https://boxd.sh/integrations/granola/
- CLI: `run granola` (6 commands)
- SDK: `import { granola } from "@boxd/run"`; every parameter and response type is at `@boxd/run/granola`
- Triggers: none
- Connect: `run auth granola` (Sign in with Granola), or https://app.boxd.sh/integrations/detail/granola_mcp
- All integrations: https://boxd.sh/integrations/ (Markdown: https://boxd.sh/integrations/index.md)

## From the shell

```sh
run auth granola      # once: prints a link to connect your account
run granola           # list its commands
run granola list-meetings
```

Parameters are flags (`--flag value`); object and array parameters take a JSON string. Output is YAML, or JSON with `--json`. Calls use your own connection; `--scope <name>` uses a connection shared with your team.

## From a script

```ts
import { every, granola } from "@boxd/run";

every("1 hour", async () => {
  const result = await granola.listMeetings({});
  console.log(result);
});
```

Run it with `run granola.run.ts`. Granola has no triggers; `every()` polls on a schedule, keeps the script running as a job, and wakes the machine when it is due.

## Commands

Required flags are listed; `run granola <command> --help` lists the optional ones. "common" marks what `run granola` shows without `--all`.

| Command | SDK method | Required flags | Optional | Description |
|---|---|---|---|---|
| `get-account-info` | `granola.getAccountInfo()` | — | 0 | Get the email, active workspace, and effective note-access scopes for the Granola account currently connected to this MCP session |
| `get-meeting-transcript` | `granola.getMeetingTranscript()` | `--meeting-id` | 0 | Get the full transcript for a specific Granola meeting by ID |
| `get-meetings` | `granola.getMeetings()` | `--meeting-ids` | 0 | Get detailed meeting information for one or more Granola meetings by ID |
| `list-meeting-folders` | `granola.listMeetingFolders()` | — | 0 | List the user's Granola meeting folders |
| `list-meetings` | `granola.listMeetings()` | — | 6 | List the user's Granola meeting notes within a time range |
| `query-granola-meetings` | `granola.queryGranolaMeetings()` | `--query` | 1 | Query Granola about the user's meetings using natural language |

## Docs

- [run CLI](https://docs.boxd.sh/cli/run): Call connected integrations from the shell, connect new ones, and run automations.
- [Quickstart](https://docs.boxd.sh/guides/integrations/quickstart): Connect an integration, call it from the shell, and turn a script into an automation.
- [Connections](https://docs.boxd.sh/guides/integrations/connections): Connect an account once, for yourself or for your whole organization.
- [Scripts](https://docs.boxd.sh/guides/automations/scripts): Typed integrations, triggers, schedules and state in a .run.ts file.
- [Jobs](https://docs.boxd.sh/guides/automations/jobs): How a script becomes a background job: states, retries, sleep and wake.
- [Beyond the catalog](https://docs.boxd.sh/guides/automations/beyond-the-catalog): Reach your own APIs, databases and cloud accounts from a script.
