MCP server for Jina AI services including web page reading, web search, and fact-checking
Server has 3 tools with complete input schemas and descriptions. Naming follows verb_noun convention (read_webpage, search_web, fact_check). Descriptions are present (50-80 chars) but lack WHEN/WHY guidance and dependency hints. All parameters have types and descriptions, meeting baseline requirements. However, output schemas are not documented, LLMs cannot predict response structure. Error handling is minimal (generic API errors with no recovery guidance). No tool annotations (readOnlyHint, idempotentHint). Composition is sound: each tool has one responsibility, but no pagination support for search_web despite potentially large result sets.
Fact-check a statement using Jina AI's grounding engine
Extract content from a webpage in a format optimized for LLMs
Search the web using Jina AI's search API
Output schemas not documented. LLMs cannot predict response structure or plan downstream calls. ReaderResponseSchema, SearchResponseSchema, GroundingResponseSchema are defined in schemas.ts but not exposed in tool definitions.
Descriptions lack WHEN/WHY context. 'Extract content from a webpage' does not explain when to use read_webpage vs search_web, or what format to choose. LLMs cannot disambiguate without explicit guidance.
No pagination support in search_web despite 'count' parameter. Large result sets will blow context window. No limit enforcement, no next_cursor, no total count in response.
Error handling is generic. 'Jina AI API error: <statusText>' provides no recovery guidance. LLM cannot determine if error is retryable, user-fixable, or fatal.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
No tool annotations. Tools lack readOnlyHint (all are read-only), idempotentHint (all are idempotent). Clients cannot optimize caching or retry logic without explicit hints.