MCP server for two UN human-rights corpora: paragraph-level search over Treaty Body General Comments, jurisprudence and Special Procedures reports, plus the UHRI dataset of ~267k recommendations addressed to States.
Five tools with comprehensive descriptions (194 - 350 chars, well above baseline 194 avg) and detailed parameter schemas. All tools are read-only, reducing error-handling complexity. Naming is clear and verb-driven (search_, lookup_, list_). Schemas are well-structured with enums, min/max constraints, and descriptions for all parameters. Output structure is documented in code comments. Main gaps: no explicit error recovery guidance in descriptions, no tool annotations (readOnlyHint), and output schemas not formally declared in tool registration.
List the available facet values (countries, bodies, themes, affected persons, SDGs, regions) for filtering recommendations in search_recommendations. Useful for discovering what filters are available and their exact spelling. Pass kind='all' to list all facets; pass kind='countries', 'bodies', 'themes', 'affected_persons', 'sdgs', or 'regions' to list just one.
Resolve a UN document citation to its verbatim paragraph. Accepts a UN signature (e.g. "CRC/C/GC/25") with optional paragraph number (e.g. "¶12", "para 10", "para. 4"). Returns the full paragraph text with metadata. Covers Treaty Body General Comments, jurisprudence, and Special Procedures reports — the same corpus as search_paragraphs.
Resolve a UHRI recommendation by its annotation_id (a UUID found in search_recommendations results). Returns the full recommendation text with all metadata: UN document symbol, body, countries, publication date, annotation type, section headings, themes, affected persons, SDGs, regions, and the complete verbatim text.
Full-text search over the UN Human Rights Database — paragraph-level corpus of Treaty Body General Comments (gc), individual-communication jurisprudence (jur), and Special Procedures reports (sp). Returns verbatim paragraphs with their UN signature and paragraph number for citation. Use scope to restrict to one collection. This is the treaty-body / expert-commentary corpus; for recommendations and observations addressed to individual States (the separate UHRI dataset), use search_recommendations instead — the two corpora are never combined.
Output schemas not formally declared in tool registration. Code comments document return structure (formatHit, formatRec), but MCP tool definitions lack explicit outputSchema fields. LLMs cannot parse expected response structure from registration alone.
No tool annotations (readOnlyHint, idempotentHint). All five tools are read-only and idempotent, but this is not declared in the tool definition. Agents cannot infer safety properties without explicit hints.
Error recovery guidance missing from descriptions. Tools call external APIs (UNHRDB, UHRI) with 15s timeout and gzip decompression, but descriptions do not explain what happens on API failure, timeout, or malformed response. LLMs have no guidance on retry strategy.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Full-text search over the UHRI dataset — ~267,000 recommendations and observations addressed to individual States by UN human-rights bodies (treaty bodies, special procedures, UPR). Returns verbatim recommendations with their UN document symbol, body, country, and themes. Optionally filter by country, body, theme, affected persons, SDG, or region. This is the separate recommendations corpus; for paragraph-level search over General Comments and jurisprudence, use search_paragraphs instead — the two corpora are never combined.
Pagination metadata incomplete. search_paragraphs and search_recommendations accept page/limit but descriptions do not state total count or next_cursor behavior. Agents cannot determine if more results exist without trial.
lookup_by_citation accepts freeform citation strings with optional paragraph numbers. No validation guidance in description. Malformed citations (e.g. 'CRC/C/GC/25 para 999') will fail silently. Description should state expected format and examples of valid/invalid input.