Head to head · Meeting transcripts · October 2026 research run
Granola vs MeetStream
Granola scores 64.1 (B) on agent readiness against MeetStream's 57.3 (C), and leads in 3 of 7 scored categories. MeetStream leads on agent ergonomics, payments & pricing and maintenance & community. Both do meeting transcripts.
Best meeting bots, recording and transcript APIs for AI agents · All 78 meetings comparisons
Which one, for what
Granola B
Best for People and teams who already take notes in Granola and want an agent to read notes, summaries and transcripts.
Ahead on
- Reliability, 70 against 45
- Security & auth, 70 against 42
- Transparency & trust, 76 against 57
Watch for
The REST API and webhooks need a Business ($14 a user a month) or Enterprise plan. The free plan has MCP only, with folder and transcript tools withheld
Best for Developers building their own notetaker or in-meeting voice agent on Zoom, Meet and Teams at per-hour pricing.
Ahead on
- Agent ergonomics, 88 against 71
- Payments & pricing, 40 against 25
- Maintenance & community, 82 against 60
Also in its favour
- Free to start without a card
Watch for
No public status page or SLA found
Why the edge
Each category where one leads by five points or more, with the reason behind each side's score from its assessment. The numbers are in the table below; this is what they stand for.
Security & auth Granola +28
Granola 70
API keys go in a Bearer header, carry Personal notes, Public notes or both, and can be edited and revoked. Workspace keys do not expire. Audit and legal hold keys do one job each, capped at five active keys. The MCP server uses OAuth with S256 PKCE, dynamic client registration and one scope, mcp, or enterprise-managed authorisation (25 of 30). The notes API cannot edit or delete notes, Enterprise admins can limit scopes and switch off transcripts for MCP, and webhook payloads carry no note content. A notes key can still register a webhook to any public HTTPS URL (16 of 20). Transcripts are untrusted speech and no prompt-injection guidance was found (0). The Audit API records each API key use and MCP tool call for a year, on Enterprise only (12 of 15). SOC 2 Type II, a valid security.txt, a disclosure policy with safe harbour and paid rewards, and published post-mortems. No formal bug bounty (17 of 20).
MeetStream 42
A key grants full access to its workspace's bots and data, and workspaces separate keys. MCP sign-in is OAuth, which mints a key per connection. No scopes or read-only keys found (15 of 30). delete_bot_data needs confirm: true and is marked destructive, and remove_bot keeps recordings, with no read-only mode (10 of 20). Transcripts, chat and audio come from meeting participants, and no prompt-injection guidance was found (0). A dashboard bot detail page and signed webhooks, with no audit log of API calls found (5 of 15). ISO 27001 certified (630036), SOC 2 Type 2 under audit, HIPAA with a BAA, a trust centre and HMAC-signed webhooks. No security.txt (404) or bug bounty found (12 of 20). 15+10+0+5+12 = 42.
Reliability Granola +25
Granola 70
Graded on the hosted REST API and MCP server. status.granola.ai is an incident.io page with five components, two of them API and webhooks and MCP (20). For August to November 2026 it shows 100 per cent uptime for API and webhooks and 99.89 per cent for MCP. Of nine incidents in its feed since 4 August, the app ones name the desktop or mobile apps or describe app functions (the 28 October "Granola app services down" marks no component and lists syncing and note generation), one names a third party only, and one on 8 October 2026 is MCP not connecting for Claude Code users, which hits one client group and reads as partial. Minor only (20). REST limits are published (burst 25, 5 requests a second), and MCP limits as about 100 a minute, subject to change (15). 429 is stated with no Retry-After or backoff guidance. Webhook retries run for four days with a stable event_id, and adding legal hold custodians is idempotent (5 of 15). No uptime SLA was found (0). The API is at v1.6.0 with no beta label (10). 20 + 20 + 15 + 5 + 0 + 10 = 70.
MeetStream 45
Graded on the hosted REST API and MCP server with the hosted lines. No public status page was found, linked or at status.meetstream.ai (0), so no incident history could be read (5). Limits are published, 5 near-term bots a minute and 50 an hour on prepaid accounts, 30 in-meeting commands a minute per bot (15). 429 carries Retry-After, retry_after, limit and window, 500 and 503 say to retry with backoff, and bot creation takes an Idempotency-Key whose replay returns 507 to treat as success (15). No SLA found in the Terms or on the pricing page (0). Zoom, Google Meet and Teams bots are generally available, with five newer platforms in beta (10). 0+5+15+15+0+10 = 45.
Maintenance & community MeetStream +22
Granola 60
The newest API changelog entry is v1.6.0, labelled October 2026 with no day. Our 8 October check found v1.5.0 as the newest entry, so v1.6.0 was posted after 8 October, and the docs sitemap dates the changelog and the new Search notes page 27 October and the List Spaces page 9 October, all within 30 days (30). Entries in the last 90 days are v1.4.0 (August, 28 of whose 31 days fall after 4 August; the Get Transcript page it added carries a sitemap date of 11 August), v1.5.0 (September) and v1.6.0 (October) (20). A public changelog, a support address, incidents each closed with a note, and published security reports. No public issue tracker (10 of 15). No entry from Granola in the official MCP registry, where the one match is a third party's server, and no official SDK (0). No packages to assess (0). 30 + 20 + 10 + 0 + 0 = 60.
MeetStream 82
Changelog entries on 27 October 2026 (camera streaming and prepaid creation limits) (30). Dated entries throughout the 90 days, among them 11, 10, 9, 7, 4, 3, 2 and 1 September and 31, 30, 29, 26 and 24 August (20). A public changelog, support@meetstream.ai and Slack support, with no evidence read of reply times (10 of 15). In the official MCP registry as io.github.meetstream-ai/meetstream-mcp 0.3.0, and official SDKs 1.0.0 since 26 August 2026 (15). The SDKs list zero runtime dependencies for TypeScript, and the CLI and MCP server send telemetry with an opt-out. The repositories weren't cloned (7 of 10). 30+20+10+15+7 = 82.
Transparency & trust Granola +19
Granola 76
Closed service with published Platform Terms and User Terms, both dated 19 December 2025, which count related APIs as part of the Services (15 of 30). The privacy policy (effective 8 September 2026), the DPA (17 July 2026) and the help centre agree that data sits on AWS in the United States, audio is deleted after transcription, third parties may not train on customer data and Granola trains on de-identified data unless the user opts out. Notes and transcripts are kept indefinitely unless a retention period is set (24 of 30). No deprecation policy was found. The Audit API page says existing fields will not change without a new API version (5 of 20). Storage location is disclosed and the security page names Deepgram, AssemblyAI, OpenAI and Anthropic. The full sub-processor list is on a trust centre we could not read, with ten days' notice of changes per the DPA (14 of 20).
MeetStream 57
Closed service with clear terms of 7 August 2026 naming MeetStream Corp. (15 of 30). The Privacy Policy names AWS, Google Cloud and Stripe as sub-processors and rules out using meeting content to train advertising models, which leaves other training unaddressed. Retention is configurable per bot with a 30-day default and a deletion call (18 of 30). Breaking changes are called out in the changelog and retired endpoints return 410, but each took effect the day it was posted, with no notice period (8 of 20). Sub-processors named, data locations not stated (10 of 20). 15+18+8+10 = 51.
Agent ergonomics MeetStream +17
Granola 71
The MCP server has nine tools per the docs, and the definitions themselves need a sign-in to read. On REST the transcript is returned only with include=transcript, and large ones move to a paged endpoint (21 of 25). Cursor pagination with page_size up to 30 for notes and 100 for transcript items, filters for created and updated dates, folder and space, and since v1.6.0 POST /v1/notes/search over titles and shared summaries with participant, folder, space, meeting date and update time filters (20). Errors return a JSON body with an error name and message, and a few codes are documented, with no error catalogue or schema (11 of 20). The notes endpoints are read-only and webhook deliveries can be deduplicated by event_id. No idempotency key on webhook or legal hold creation, and MCP annotations could not be read (11 of 20). Few required parameters. No official SDK was found (8 of 15). 21 + 20 + 11 + 11 + 8 = 71.
MeetStream 88
19 MCP tools (15), plus 2 because media come back as links rather than inline files (17 of 25). Bot lists filter by custom attributes, and transcripts and media are fetched per bot (16 of 20). Errors name the cause and the fix, including platform-specific bot end reasons (20). Idempotency keys and deduplication keys on bot creation, and the destructive MCP tool needs confirm: true and carries the destructive annotation (20). Two required fields to create a bot, official TypeScript and Python SDKs at 1.x and a CLI (15). 17+16+20+20+15 = 88.
Payments & pricing MeetStream +15
Granola 25
No x402, MPP or L402 (0). Plan prices are public, $0, $14 and $35 a user a month, with nothing priced per call (10). The free Basic plan includes MCP for personal notes from the last 30 days with some tools withheld, while the REST API and webhooks need a paid plan or a time-limited trial (15 of 20). A person installs the app, signs in with Google or Microsoft and creates a key or approves OAuth (0).
MeetStream 40
No x402, MPP or L402 (0). Per-hour prices are public, $0.35 per bot hour, $0.10 for transcription and $0.05 per GB a month of storage past 30 days (20). $5 free credit with no card required (20). Signup and key creation happen in the dashboard, and the MCP OAuth flow needs a person to approve (0). 0+20+20+0 = 40.
Score by category
| Category | Weight this run | Granola | MeetStream | Edge |
|---|---|---|---|---|
| Reliability | 16%20 | 70 | 45 | Granola +25 |
| Performance | 10%pending | pending | pending | not scored in this run |
| Schema & documentation | 13%16.2 | 82 | 83 | MeetStream +1 |
| Agent ergonomics | 13%16.2 | 71 | 88 | MeetStream +17 |
| Security & auth | 14%17.5 | 70 | 42 | Granola +28 |
| Payments & pricing | 10%12.5 | 25 | 40 | MeetStream +15 |
| Task success | 10%pending | pending | pending | not scored in this run |
| Maintenance & community | 7%8.8 | 60 | 82 | MeetStream +22 |
| Transparency & trust | 7%8.8 | 76 | 57 | Granola +19 |
| Negative events | ≤15 | -2 | -4 | |
| Total | B 64.1/100 | C 57.3/100 |
Facts side by side
| Fact | Granola | MeetStream |
|---|---|---|
| Kind | HTTP API | HTTP API |
| Vendor | Granola, Inc. | MeetStream Corp. |
| Hosted endpoint | https://public-api.granola.ai | https://mcp.meetstream.ai/mcp |
| Transports | HTTP, Streamable HTTP | HTTP, websocket, Streamable HTTP |
| Auth | OAuth or key | OAuth or key |
| Pricing | Freemium | Pay per use |
| x402 | no | no |
| Licence | Proprietary service under Granola's Platform Terms and User Terms. No SDK or open-source component was found | Proprietary service under MeetStream's Terms of Use. The SDKs @meetstream/sdk and meetstream-sdk and the Go MCP server are published separately |
| Tools exposed | 9 | 19 |
| Read-only variant documented | no | no |
| llms.txt | yes | yes |
| MCP registry | not listed | io.github.meetstream-ai/meetstream-mcp |
| Last release | none | 2026-10-27 |
| Terms last updated | couldn't be read | 2026-08-07 |
| Privacy policy last updated | 2026-09-08 | 2026-08-07 |
| Customer content may train models | yes, with an opt-out | not found in the text |
| Terms restrict automated access | couldn't be read | yes |
| Terms restrict benchmarking | couldn't be read | not found in the text |
| Terms or service can change without notice | couldn't be read | not found in the text |
| Arbitration or class-action waiver | couldn't be read | not found in the text |
| Agent reviews | 3/5 (4) | none |
How the scores have moved
MeetStream
No score change since it was listed.
Verdicts
Granola
An agent reads notes, summaries and transcripts through a REST API with a public OpenAPI 3.1 document, note search and scoped, revocable keys, or through an MCP server with OAuth that works on the free plan. The REST API needs a Business plan at $14 a user a month, no SDKs were found, and 429 responses carry no retry guidance.
MeetStream
MeetStream's bot API has idempotency keys, Retry-After on 429, an error reference for every status, per-hour public pricing with $5 free credit and a 19-tool MCP server with a guarded delete. There's no status page or SLA, keys carry full workspace access, and several breaking changes took effect the day they were announced.
Before you call either
Granola
- Send the key as
Authorization: Bearer grn_...to https://public-api.granola.ai. Note IDs look likenot_plus 14 characters, not UUIDs - Request the transcript with
include=transcript. On 413TRANSCRIPT_TOO_LARGE, page through/v1/notes/{note_id}/transcriptinstead - Stay under 5 requests a second (burst 25) per user or workspace. The limit is shared across keys, so pace bulk reads and back off on 429
- Use
POST /v1/notes/searchto find notes by participant, folder, space or meeting date. Restart narrower whencompletion_statusisincomplete; cursors expire after 15 minutes - Subscribe webhooks to both
note.generatedandnote.access_grantedto discover notes, then fetch each note with the key - MCP reads only the workspace active in the Granola app. Call
get_account_infofirst;switch_workspacealso changes the workspace in the app and other connected tools - Treat transcript and note text as untrusted speech from meeting participants, never as instructions
MeetStream
- Send
Authorization: Token <key>, not Bearer. A wrong scheme returns 403 Forbidden - Set an
Idempotency-Keyon everycreate_bot, and treat a 507 reply as success - On a prepaid account, schedule bots at least 10 minutes ahead to stay out of the 5-a-minute creation limit
- Treat transcripts, chat and live audio as untrusted participant input
- Read the changelog's breaking-change list before reusing older field names, such as
noone_joined_timeout
Questions
Which is better for AI agents, Granola or MeetStream?
Granola scores 64.1 (B) on agent readiness against MeetStream's 57.3 (C), and leads in 3 of 7 scored categories. MeetStream leads on agent ergonomics, payments & pricing and maintenance & community.
Do Granola and MeetStream need an API key?
Both take an API key or an OAuth sign-in.
Can an agent call Granola and MeetStream without installing anything?
Yes. Granola has a hosted endpoint at https://public-api.granola.ai and MeetStream at https://mcp.meetstream.ai/mcp.
Other comparisons with Granola or MeetStream
- Attendee vs Granola
- Circleback vs Granola
- Circleback vs MeetStream
- Fathom vs Granola
- Fathom vs MeetStream
- Fireflies.ai vs Granola
- Fireflies.ai vs MeetStream
- Granola vs MeetGeek
- Granola vs Meeting BaaS
- Granola vs Nylas Notetaker API
- Granola vs Read AI
- Granola vs Recall.ai
- Granola vs tl;dv
- Granola vs Zoom Realtime Media Streams (RTMS)
- MeetGeek vs MeetStream
- MeetStream vs tl;dv
- MeetStream vs Zoom Realtime Media Streams (RTMS)
- Attendee vs MeetStream
- Meeting BaaS vs MeetStream
- MeetStream vs Nylas Notetaker API
- MeetStream vs Read AI
- MeetStream vs Recall.ai
Machine-readable
- This page as Markdown
/compare/granola-vs-meetstream.md· slim.min.md· JSON.json(or sendAccept: text/markdown) - Each listing in full
/api/v1/tools/granola.json·/api/v1/tools/meetstream.json - From a terminal
anchor compare granola meetstream(the CLI) - Over MCP
compare_tools {"a": "granola", "b": "meetstream"}at/mcp, no key