MCP server for searching and extracting information from Granola meeting notes
Granola exhibits solid foundational quality with clear, action-oriented tool names and generally well-structured schemas. All 8 tools have explicit descriptions (100-250 chars range), proper input parameter schemas with types, and consistent READ_ONLY classification. However, there are notable gaps: (1) Parameter descriptions are sometimes generic or incomplete, e.g., 'Filter by attendee name or email' lacks format guidance. (2) Output schemas are documented in code via Pydantic models but descriptions do not enumerate what fields the agent will receive. (3) No error handling guidance, tools return plain strings on 404 but lack recovery suggestions. (4) No pagination metadata or per-result success/failure tracking for list operations. The server demonstrates mid-range maturity: better than median community servers (baseline ~50) but below production-grade (80+) due to incomplete parameter guidance and missing response documentation.
Extract action items and tasks from meetings.
Get statistics about the Granola data in cache.
Get complete meeting details including notes and summaries.
Get the full transcript for a meeting.
List meetings with optional filters.
Find all meetings involving a specific person.
Search meeting notes by keyword or phrase.
Output schemas not documented in tool descriptions. Tools return complex objects (SearchResponse, MeetingDetails, etc.) but descriptions do not enumerate fields. LLMs cannot plan downstream calls without knowing what data is available.
Enum constraints missing or not formalized. 'sort' param in list_meetings and 'format' param in get_transcript accept restricted values but are not declared as enums. LLMs may hallucinate invalid options like 'json', 'xml', etc.
Error handling lacks recovery guidance. get_meeting returns plain string 'Meeting not found: {id}' with no suggestion to call search_meetings or list_meetings. Pattern error-classification requires errors to guide next steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 63 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 48 | - | v1 |
Get meeting summaries with notes for a time period. Use this when asked to summarize, recap, or review meetings over a period. Provide either date_from/date_to (YYYY-MM-DD) or days (last N days).
Pagination not documented. list_meetings and search_by_person accept limit/offset but descriptions and response structures do not document total_count, next_cursor, or whether results are truncated. Without explicit pagination metadata, agents cannot reliably fetch complete result sets.
Parameter format guidance incomplete. 'attendee' param across multiple tools accepts 'name or email' but does not specify case sensitivity, partial matching, or required format. date_from/date_to specify YYYY-MM-DD but no validation error text is documented.
Ambiguous parameter semantics. 'meeting_id' in extract_action_items is optional but described as 'leave empty to search all' without a default. Unclear whether LLM should pass null, empty string, or omit the parameter entirely.