Meeting Intelligence
for AI Agents
A Go CLI and MCP server that makes Granola meeting data a first-class citizen in AI agent workflows. Meetings, transcripts, summaries, and action items as structured MCP resources.
Meeting Knowledge Deserves an API
Granola captures high-quality transcripts, summaries, and action items. acai extends that intelligence into the MCP ecosystem so AI agents can use it too.
Knowledge Silos
Meeting insights live in the app where they were captured. Getting them into downstream tools means manual copy-paste.
Missing Automation
Going from "meeting happened" to "ticket created, notes filed, follow-ups scheduled" still requires human glue.
Agent Blindness
AI agents can't yet reference past meetings, search transcripts, or act on action items without a bridge.
The Solution: Structured MCP Resources
A single binary — acai —
that makes meeting intelligence a first-class citizen in the MCP ecosystem. For power users: a CLI.
For agents: typed tools and resources. For teams: production-grade reliability and fine-grained access control.
Features
Everything you need to integrate meeting intelligence into your agent workflows.
MCP Server
13 typed tools and 5 resource URIs. Meetings, transcripts, action items, notes, and interactive dashboards — all queryable by AI agents.
acai serve CLI
Authenticate, sync, search, export, annotate, and manage meetings from the terminal. Table, JSON, and markdown output.
acai list meetings --format json Write-Back
Agent-generated notes and action item updates persisted locally with outbox pattern for future upstream sync.
add_note / complete_action_item Agent Policies
Per-meeting ACL with allow/deny rules by tool and tags. Content redaction for emails, speakers, keywords, and patterns.
ACAI_POLICY_FILE=policy.yaml Resilience
Circuit breaker, retry with exponential backoff, rate limiting, and timeouts on every API call via Fortify.
5 failures → circuit opens Caching
SQLite local cache reduces API calls and enables offline access. Configurable TTL with graceful stale-data fallback.
ACAI_CACHE_TTL=15m How It Works
A decorator chain architecture with separate read, write, and policy paths.
Quick Start
Up and running in under a minute.
Install
Configure
Use
MCP Integration
Drop this into your Claude Code config and your AI agent instantly gains meeting intelligence.
{
"mcpServers": {
"granola": {
"command": "acai",
"args": ["serve"],
"env": {
"ACAI_GRANOLA_API_TOKEN": "gra_xxxxx"
}
}
}
} 13 Tools
| list_meetings | Search and filter meetings with date, source, and text filters |
| get_meeting | Full meeting details including summary and action items |
| get_transcript | Speaker-attributed transcript with timestamps |
| search_transcripts | Full-text search across all meeting transcripts |
| get_action_items | Action items from a specific meeting |
| meeting_stats | Aggregated statistics with interactive D3.js dashboard |
| list_workspaces | List all Granola workspaces |
| add_note | Attach an agent note to a meeting |
| list_notes | List agent notes for a meeting |
| delete_note | Remove an agent note |
| complete_action_item | Mark an action item as completed |
| update_action_item | Update an action item's text |
| export_embeddings | Export meeting content as chunks for embedding pipelines |
5 Resources
| meeting://{id} | Full meeting details as JSON |
| transcript://{meeting_id} | Transcript utterances as JSON |
| note://{meeting_id} | Agent notes as JSON |
| workspace://{id} | Workspace details as JSON |
| ui://meeting-stats | Interactive D3.js dashboard (HTML) |
Real-time Events
Domain events (MeetingCreated, TranscriptUpdated,
NoteAdded) are dispatched to connected MCP sessions.
Agents react to meeting updates as they happen.
Agent Policies
Fine-grained access control and content redaction. Control what data AI agents can see and how sensitive content is handled.
Policy Configuration
default_effect: allow
rules:
- name: block-confidential-transcripts
effect: deny
tools: [get_transcript, export_embeddings]
conditions:
meeting_tags: [confidential]
redaction:
enabled: true
rules:
- type: emails
replacement: "[EMAIL]"
- type: speakers
replacement: "Speaker {n}"
- type: keywords
keywords: [salary, confidential]
replacement: "[REDACTED]"
- type: patterns
pattern: '\d{3}-\d{2}-\d{4}'
replacement: "[SSN]" Redaction in Action
"speaker": "Alice Johnson",
"text": "Send the salary report to alice@company.com and include SSN 123-45-6789"
"speaker": "Speaker 1",
"text": "Send the [REDACTED] report to [EMAIL] and include SSN [SSN]"
ACL
First-match-wins rule evaluation. Deny tools for tagged meetings.
Redaction
Emails, speakers, keywords, and custom regex patterns.
Architecture
Strict Domain-Driven Design with hexagonal architecture. Dependencies point inward — the domain has zero external dependencies.
DDD Layers
Decorator Chain
Key Libraries
Open Source
Production-grade quality, fully tested, MIT licensed.
| Layer | Coverage |
|---|---|
| Domain | 94-100% |
| Application | 86-100% |
| Infrastructure | 85-97% |
| Interfaces | 74-81% |