MCP server that searches the Internet Archive, the Library of Congress and data.bnf.fr at once, inside scanned text and across catalogues. No API key required.
The server declares 3 tools with consistent naming patterns (verb_noun: search_inside, search_items, get_item) and reasonable descriptions (97-121 chars each, within baseline 34-392 range). All tools have input schemas with type declarations. However, critical gaps exist: (1) Parameter descriptions in schemas are minimal, 'Words to search for inside the text' and 'Search query for the catalogue' provide context but lack constraints on length, format, or valid value ranges; (2) Output schemas are not visible in the source code provided, 'runSearchInside', 'runSearchItems', 'runGetItem' functions exist but their return types/structures are not shown, preventing verification that outputs are documented for LLM reasoning; (3) No evidence of error handling guidance, callers do not know which errors are retryable, user-fixable, or fatal; (4) Pagination is supported (limit, page params) but no documentation of total count, next_cursor, or max result limits in descriptions. Tool annotations (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) are correctly declared at server level, but no per-tool error classification or recovery guidance is visible.
Retrieve a full record for a specific item from one of the archives
Search inside the full text of scanned books and periodicals across multiple archives
Search across the catalogues of multiple archives for books, periodicals and documents by title, creator or subject
Output schemas not documented. Functions runSearchInside, runSearchItems, runGetItem exist but their return types, field names, and structures are not visible in provided source. LLMs cannot plan downstream tool calls or extract chaining IDs (e.g., archive_id, item_reference) without knowing response structure.
Parameter descriptions lack constraints. 'query' param has description 'Words to search for inside the text' but no length limits, character restrictions, or format guidance. 'limit' has no range (e.g., 1-100) specified. 'page' has no indication whether it's 0-indexed or 1-indexed.
No error handling or recovery guidance. Tools do not document what errors can occur, which are retryable (e.g., timeout from archive), which are user-fixable (e.g., invalid query syntax), or which are fatal (e.g., archive down).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 57 | <=2025-11-25 | v2 |
Pagination incomplete. Tools accept 'limit' and 'page' but descriptions do not state: (1) whether pagination is 0-indexed or 1-indexed, (2) whether there is a total_count or next_cursor in the response, (3) what happens if page exceeds available results, (4) max result limits per archive.
Tool composition risk: search_inside and search_items are similar (both search, both return results). Names make distinction clear (inside text vs. across catalogues), but no guidance on when to use which.