An MCP server for searching and retrieving JFK assassination files from the National Archives
JFK MCP server has well-structured schemas with proper Zod validation and clear parameter types. Tool names follow verb_noun convention (search, get). However, descriptions lack depth and actionability. Most tool descriptions are under 100 chars and do not explain WHEN to use each tool vs. alternatives (e.g., text-search vs. vector-search distinction is unclear). Parameter descriptions are generic ('Filter by X') without guidance on expected formats, operators, or dependencies. Error handling is absent, no recovery guidance or actionable error messages visible in code. Output schemas are not documented in descriptions. The metadata filter structure is sophisticated but underdocumented for LLM reasoning.
Retrieve PNG images for specific pages of a JFK document
Retrieve text content for specific pages of a JFK document
Perform a metadata search on JFK files using detailed metadata filters. NARA release dates between 2017-2025
Perform a text search on JFK files using a query string and optional metadata filters. Should only use 1 word for the query, since it does an exact match. NARA release dates between 2017-2025
Perform a vector search on JFK files using a query string and optional metadata filters (excluding comments). NARA release dates between 2017-2025
Tool descriptions lack actionable guidance. 'Perform a text search' and 'Perform a vector search' do not explain WHEN to use each vs. the other. LLMs cannot distinguish between text-search (exact match, 1-word queries) and vector-search (semantic) without explicit comparison.
Parameter descriptions are generic and lack format/constraint guidance. 'Filter by document date' does not explain the DateFilterSchema operators (gte, lte, between, etc.) or expected date format. LLMs cannot infer valid operator syntax from descriptions alone.
No error handling or recovery guidance in code. If a search returns no results, API fails, or page_ids are invalid, there is no actionable error message or retry strategy documented. Agents cannot self-correct.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Output schemas are not documented. Tool descriptions do not specify what fields are returned (e.g., does text-search return page_id, document_date, relevance_score?). LLMs cannot plan downstream tool calls without knowing response structure.
Metadata filter operators are complex (TextFilterSchema, KeywordFilterSchema, DateFilterSchema, NumberFilterSchema) but not explained in tool descriptions. LLMs will not know how to construct valid filter objects without explicit examples or operator documentation.