Three well-defined tools with solid schemas and descriptions. All tools have clear action verbs and parameters are properly typed with enums where appropriate. Descriptions are moderately detailed (150-250 chars) but lack actionable error recovery guidance. No tool annotations (readOnlyHint, destructiveHint). Output schemas are not explicitly documented in the code; responses are raw JSON stringified. Error handling is minimal, no guidance for LLM recovery or retry paths. Tool names follow verb_noun pattern correctly. Parameter validation is present via Zod but error messages are not exposed to the LLM.
Get available news sources that can be used with the news API. Can filter by category, language, and country. Returns a list of news sources with their metadata including id, name, description, URL, category, language, and country.
Get top headlines from news sources. Can filter by country, category, or specific news sources. Returns top headline articles with metadata including title, description, source, author, URL, image URL, publication date, and content.
Search for articles using keywords or phrases. Supports advanced search: use quotes for exact match, + for required terms, - for excluded terms, AND/OR/NOT operators with optional parentheses. Returns articles matching the search criteria with metadata including title, description, source, author, URL, image URL, publication date, and content.
No output schema documentation. Tool responses are raw JSON strings without documented field structure. LLMs cannot infer downstream field names for chaining calls.
Missing tool annotations. No readOnlyHint declared, even though all three tools are strictly read-only (no state mutation). Agents cannot distinguish safe tools from destructive ones.
Error handling lacks actionable recovery guidance. Zod validation errors (e.g., invalid searchIn field) are caught but not surfaced to the LLM with correction hints. A malformed query gets a generic exception, not 'Invalid searchIn: got "author", must be one of: title, description, content'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 56 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Parameter 'query' in searchArticles lacks constraint documentation in description. While the schema specifies maxLength: 500, the description does not repeat this. LLMs may ignore JSON Schema constraints and rely on text descriptions.
Pagination defaults (pageSize: 20-100, page: 1) are not clearly called out in tool descriptions. LLMs should understand pagination is available and what the defaults mean for result volume.
No dependency hints. Tool descriptions do not mention when to use getSources before searchArticles (to discover valid source identifiers). This forces agents to guess or retry with invalid values.