Granola
How it meets the 23 requirements of MCP Authorization.
- Supported
- 13
- Unsupported
- 1
- Unknown, recorded
- 0
- Not observed yet
- 9
- Endpoint
https://mcp.granola.ai/mcp- Transport
- Streamable HTTP
- Access
- Public Anyone can connect; where an account is needed, anyone can create one by self-service sign-up. Manual check · jbspeakr (documentation pass with Claude Code) · · evidence · The free Basic plan has MCP access (notes from the last 30 days); Enterprise admins choose the scopes members get.
- Auth
- OAuth An OAuth 2.x authorization obtained through the server's authorization server. Manual check · jbspeakr (documentation pass with Claude Code) · · evidence · Every client signs in to the Granola account through the connector's authentication step (Claude Code: /mcp › Authenticate); no API key or token is documented.
- Why it is listed
- Listed because it appears in a public directory of MCP servers. Source
- Homepage
- https://granola.ai
Against MCP Authorization 2026-07-28current
- Supported 13
- Unsupported 1
- Unknown 9
Passive scan · Requests
- MUST8 supported
- SHOULD3 supported, 1 unsupported
- MAY2 supported
Older revisions of the matrix: 2025-11-25
MCP server features 13
| Feature | Level | Status | Observed | Evidence |
|---|---|---|---|---|
| Protected Resource Metadata served | MUST | Supported | source | |
| PRM lists an authorization server | MUST | Supported | source | |
| PRM lists scopes_supported | MAY | Supported | source | |
| PRM reachable at a well-known URI | MUST | Supported | source | |
| resource_metadata in the 401 challenge | MUST | Supported | source | |
| 403 insufficient_scope for step-up | SHOULD | Unknown no observation | no observation yet | |
| Scope in the WWW-Authenticate challenge | SHOULD | Unsupported | source | |
| No offline_access in advertised scopes | SHOULD | Supported | source | |
| 401 for missing or invalid tokens | MUST | Unknown no observation | no observation yet | |
| Audience validation | MUST | Unknown no observation | no observation yet | |
| Bearer token only in the Authorization header | MUST | Unknown no observation | no observation yet | |
| No token passthrough to upstream APIs | MUST | Unknown no observation | no observation yet | |
| Per-client consent on proxy servers | MUST | Unknown no observation | no observation yet |
Authorization server features 10
| Feature | Level | Status | Observed | Evidence |
|---|---|---|---|---|
| Metadata issuer matches the discovery URL | MUST | Supported | source | |
| Authorization server metadata discoverable | MUST | Supported | source | |
| Client ID Metadata Documents supported | SHOULD | Supported | source | |
| Dynamic Client Registration offered | MAY | Supported | source | |
| Documented pre-registration path | SHOULD | Unknown no observation | no observation yet | |
| Issuer identifier in authorization responses | SHOULD | Supported | source | |
| PKCE with S256 advertised | MUST | Supported | source | |
| Refresh token rotation for public clients | MUST | Unknown no observation | no observation yet | |
| Resource indicators honoured | MUST | Unknown no observation | no observation yet | |
| All endpoints served over HTTPS | MUST | Supported | source |
This server's ledger
No status change on recordEvery cell of this server still shows the status of its first observation.
What the scanner asked
The requests behind the rows marked passive scan above, in the order the scanner makes them, each with the newest answer recorded. None carries a credential or a message.
- GEThttps://mcp.granola.ai/.well-known/oauth-protected-resource/mcpHTTP 200read resource, authorization_servers, scopes_supported
- GEThttps://mcp.granola.ai/mcpHTTP 401read status, WWW-Authenticate
- GEThttps://mcp-auth.granola.ai/.well-known/oauth-authorization-serverHTTP 200read issuer, client_id_metadata_document_supported, registration_endpoint, authorization_response_iss_parameter_supported, code_challenge_methods_supported
- 14 checks, read into the tables above
Newest scanner observation · letsauth-scanner/0.4.0 · reproduce with pnpm scan granola · scan JSON · data file · how the scanner works