NYT MCP — wraps The New York Times Developer APIs (developer.nytimes.com)
NYT MCP has well-structured tool definitions with complete input schemas and reasonable descriptions. All 4 tools are explicitly registered with name, description, and inputSchema. However, descriptions lack depth and actionability for LLM selection. Parameter descriptions are present but generic. Output schemas are not documented, LLMs cannot predict response structure. Error handling exists but provides minimal recovery guidance. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all tools being read-only. Missing pagination guidance despite search_articles returning potentially large result sets.
Get a current New York Times bestselling books list (e.g. hardcover-fiction, hardcover-nonfiction, combined-print-and-e-book-fiction). Returns rank, title, author, description, publisher, and weeks on list. Example: books_bestsellers({ list: "hardcover-fiction" })
Search New York Times movie reviews. Optionally filter by query or critics picks. Returns title, summary, byline, publication date, and URL. Example: movie_reviews({ query: "dune", critics_pick: true })
Full-text search of New York Times news articles. Returns headlines, abstracts, sections, bylines, and URLs. Example: search_articles({ query: "artificial intelligence", sort: "newest" })
Get current New York Times top stories for a section (home, world, business, technology, science, health, sports, arts, etc.). Returns titles, abstracts, bylines, and URLs. Example: top_stories({ section: "technology" })
Output schemas not documented. LLMs cannot predict response structure (e.g., what fields are in articles array, what top_stories returns). Incomplete docstrings force LLMs to guess downstream field names.
Tool annotations missing. All 4 tools are read-only (safe to retry), but readOnlyHint is not declared. Agents cannot distinguish safe tools from destructive ones without explicit hints.
Pagination not documented for search_articles. Tool accepts 'page' parameter but description does not explain result limit per page, total count return, or when pagination is needed. Large result sets risk context window exhaustion.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Error handling provides minimal recovery guidance. nytGet() returns {error, message} but does not categorize errors as retryable vs user-fixable. LLMs receive raw HTTP status codes without actionable next steps.
Descriptions lack LLM-optimized context. 'Get current New York Times top stories for a section' (60 chars) does not explain WHEN to use this vs search_articles, what sections are available, or what the response contains. Baseline for A+ tools is 50-200 chars with clear selection criteria.