CLI client for Granola's official MCP server — meetings, transcripts, and notes from the terminal
This is a CLI client, not an MCP server. The source shows a Rust CLI that CALLS an external Granola MCP server via rmcp client library (Streamable HTTP). Tool definitions are inferred from CLI command mappings in main.rs, not explicitly registered. Descriptions are minimal (5-20 chars), parameters lack type constraints and detailed descriptions, and no output schemas are documented. The code does not implement MCP server patterns, it consumes them.
Get account info
Get transcript for a meeting
Get meetings by ID
List meeting folders
List meetings
Query meetings
This is a CLI client, not an MCP server. It consumes tools from an external Granola MCP server via rmcp HTTP client. Tool definitions are inferred from CLI command mappings, not explicitly registered with MCP server patterns.
All tool descriptions are under 20 characters ('List meetings', 'Get meetings by ID', etc.). Descriptions lack WHAT/WHEN/WHY context needed for LLM tool selection.
Parameter descriptions are minimal ('Optional time range filter', 'List of meeting IDs to retrieve'). No format constraints, ranges, or examples. Parameters lack type specificity (e.g., 'time_range' is a string but no format documented).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 40 | 2025-06-18+ | v2 |
No output schemas documented. LLMs cannot infer what fields to expect from tool responses, preventing downstream tool chaining and field extraction.
No error handling guidance. Tool calls in main.rs use .await? which propagates errors to stderr, but no recovery hints or error categorization (retryable vs. fatal) are provided to guide agent behavior.