OpenSanctions MCP — Global sanctions and PEP data (free, no auth required)
Two tools with clear verb-noun naming (search_entities, get_entity) and reasonable descriptions (194 - 200 chars, within baseline 34 - 392). Both have input schemas with types and descriptions. However, output schemas are undocumented, LLMs cannot predict response structure. Parameter descriptions lack format constraints (e.g., 'schema' enum values are listed in description text, not as JSON Schema enum). Error handling is minimal (generic API error messages, no recovery guidance). No pagination support despite search potentially returning many results. Missing tool annotations (readOnlyHint, idempotentHint). Overall: functional but below production baseline for agent-ready tools.
Get full details for a sanctioned entity by its OpenSanctions ID. Returns all properties including names, addresses, identifiers, sanctions programs, and related entities.
Search global sanctions, watchlists, and PEP (politically exposed persons) databases. Returns matched entities with names, countries, datasets, and sanctions details. Example: search_entities("Vladimir Putin") or search_entities("Huawei", schema="Company")
Output schemas not documented. LLMs cannot predict response structure (fields, types, nested objects). Agents cannot plan downstream calls or extract data reliably.
Parameter 'schema' lists enum values in description text ('Person', 'Company', etc.) instead of JSON Schema enum constraint. LLMs cannot reliably pick valid options and may hallucinate values.
No pagination support. search_entities returns up to 20 results hardcoded; no limit/offset parameters, no total count, no next_cursor. Large result sets will blow context window.
Error messages are generic ('OpenSanctions API error (404): entity Q7747 not found'). No recovery guidance. LLM cannot self-correct or suggest alternatives.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint, idempotentHint). Both tools are read-only and idempotent, but LLM cannot infer this. Missing metadata for agent planning.