MCP server for Fathom AI meeting API integration
The server has 2 well-named tools with solid descriptions and documented parameter schemas using Zod validation. However, output schemas are not formally documented, error handling lacks recovery guidance, and composition could be improved. Tool names follow verb_noun convention (list_, search_) appropriately. Descriptions are adequate (100-150 chars) but lack specificity about when to use each tool vs. the other. Parameters are typed and described, but some constraints (like date format ISO 8601) could be more explicit. No tool annotations present.
List Fathom meetings with optional filters. Returns meeting titles, summaries, dates, and participants.
Search for meetings containing keywords in titles, summaries, or action items. NOTE: Searches last 30 days only. For better performance, transcript search is disabled by default.
Output schema not documented. Neither tool documents what fields it returns or their types. The code returns a formatted JSON object with 'meetings', 'total_found', 'showing', etc., but LLMs must infer the output shape from execution, error-prone for planning.
Error handling lacks actionable recovery guidance. When errors occur (e.g., invalid date format, API failure), the code returns a plain error message without suggesting next steps (e.g., 'Invalid date format. Use ISO 8601, e.g., 2024-01-15'). Agents cannot self-correct.
Tool descriptions do not differentiate use cases. Both 'list_meetings' and 'search_meetings' operate on meetings; the descriptions do not clearly explain when to prefer one over the other. 'list_meetings is for filtered retrieval; search_meetings is for keyword matching across 30 days' is not stated.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 68 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 45 | - | v1 |
Parameter 'created_after' and 'created_before' descriptions state 'ISO 8601' but do not validate that the agent passes well-formed dates. The rubric requires explicit format guidance in descriptions: '(ISO 8601 date format, e.g., 2024-01-15 or 2024-01-15T10:30:00Z)'.
No tool annotations present (readOnlyHint, idempotentHint). Both tools are read-only and idempotent, marking them as such enables optimizations (caching, safe retries) and clarifies intent.
Pagination via 'limit' parameter is present for list_meetings, but search_meetings has no pagination support. If search_meetings can return 100+ results, agent context can be exhausted. Either cap results in the tool or add offset/cursor parameters.
Output response includes raw meeting objects with many fields that may not be relevant (e.g., internal IDs, metadata). Per mxe:strip-api-responses, strip verbose API fields and return only user-facing data (title, date, attendees, summary, action_items).