opensanctions-mcp
Server Quality Checklist
Latest release: v0.1.2
- Disambiguation5/5
Each tool has a clearly distinct purpose with minimal overlap: list_datasets enumerates datasets, get_dataset retrieves dataset details, search_entities performs keyword searches, match_entity conducts structured screening with scores, get_entity fetches full entity details, and investigate_entity runs comprehensive investigations. The descriptions explicitly differentiate them, such as noting that search_entities is for exploratory queries while match_entity is for formal screening.
Naming Consistency5/5All tool names follow a consistent verb_noun pattern using snake_case: list_datasets, get_dataset, search_entities, match_entity, get_entity, and investigate_entity. This uniformity makes the tool set predictable and easy to navigate, with no deviations in naming conventions.
Tool Count5/5With 6 tools, the server is well-scoped for its domain of sanctions and PEP data access. Each tool serves a specific function in the workflow, from listing and getting datasets to searching, matching, and investigating entities, without being overly sparse or bloated.
Completeness5/5The tool set provides complete coverage for the OpenSanctions domain, including dataset enumeration (list_datasets, get_dataset), entity discovery (search_entities, match_entity), detailed retrieval (get_entity), and advanced analysis (investigate_entity). There are no obvious gaps; agents can perform full workflows from initial screening to in-depth investigation.
Average 4.2/5 across 6 of 6 tools scored.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 0 commits in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI is passing
This repository is licensed under MIT License.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that no API key is required (useful auth context) and describes the return content (dataset names, titles, summaries, entity counts). However, it doesn't mention behavioral aspects like rate limits, pagination, error conditions, or whether this is a read-only operation (though implied by 'List').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured: first sentence states purpose and key constraint, second describes returns, third explains parameter usage, and fourth provides concrete examples. Every sentence adds value, with no redundant information, and it's front-loaded with the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (single optional parameter, no output schema, no annotations), the description is largely complete. It covers purpose, usage, returns, and examples. The main gap is lack of output structure details (e.g., format of returned list), but since there's no output schema, this could be more explicitly addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents the single optional 'query' parameter. The description adds minimal value beyond the schema by mentioning 'filter datasets by name, title, or summary' and providing example queries ('ofac', 'eu', 'pep'), but doesn't explain semantics like partial vs. exact matching. Baseline 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('List') and resource ('available sanctions and PEP datasets in OpenSanctions'), distinguishing it from siblings like get_dataset (retrieve specific dataset) or search_entities (search within datasets). It explicitly mentions what information is returned (dataset names, titles, summaries, entity counts).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('No API key required' indicates accessibility, and 'Use the optional query parameter to filter' suggests it's for browsing/filtering datasets). However, it doesn't explicitly state when NOT to use it or name specific alternatives among the siblings (e.g., use get_dataset for detailed metadata of a specific dataset).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well at disclosing behavioral traits. It explains the multi-step process, clarifies that it 'returns data only — no risk judgments' (important behavioral constraint), mentions that the AI should interpret results, and notes it requires specific parameters for better precision. It doesn't cover rate limits or authentication needs, but provides substantial operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and well-structured with clear sections: purpose statement, steps, output behavior clarification, and parameter guidance. Every sentence earns its place, though the final sentence about additional properties could be slightly more concise. It's front-loaded with the core purpose and effectively uses bullet-like formatting for the steps.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, multi-step investigation) and lack of both annotations and output schema, the description does a good job of providing context. It explains the investigation process, clarifies the AI's role in interpretation, and provides parameter guidance. The main gap is the absence of output format details, which would be helpful since there's no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds some value by explaining that 'additional properties like birthDate or nationality' improve match precision and that both name and schema are required, but doesn't provide significant semantic context beyond what the schema already documents. It mentions threshold and max_matches defaults but these are already in the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Run a multi-step compliance investigation on a person or company.' It specifies the exact steps involved (matching, fetching details, relationship traversal) and distinguishes it from siblings by calling it 'the most powerful tool' that combines multiple functions in one call, unlike simpler tools like get_entity or match_entity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: for comprehensive compliance investigations that require multi-step analysis. It mentions that it 'combines matching, entity details, and relationship traversal in one call,' suggesting it should be used instead of calling multiple simpler tools separately. However, it doesn't explicitly state when NOT to use it or name specific alternatives among the siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well by disclosing key behavioral traits: it explains the scoring system (0.0-1.0 with confidence thresholds), defines PEP, and notes that PEP status appears in 'topics' as 'role.pep.' It could improve by mentioning rate limits or authentication needs, but it covers the core matching algorithm and output interpretation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, with the purpose stated first. Each sentence adds useful information (e.g., scoring, PEP definition), but it could be slightly more concise by integrating the PEP explanation into the initial sentence or reducing redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (screening with scoring), no annotations, and no output schema, the description is mostly complete. It explains the purpose, usage, scoring, and PEP details. However, it lacks information on error handling or example outputs, which would enhance completeness for a tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds some value by mentioning that the matching algorithm uses 'name comparison, birth dates, nationalities, and identifiers for scoring,' which provides context for the 'properties' parameter, but it does not significantly elaborate beyond what the schema already describes for parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Screen a person or company against sanctions and PEP lists using structured properties.' It specifies the verb ('Screen'), resource ('person or company'), and target ('sanctions and PEP lists'), and distinguishes it from siblings by labeling it as 'the primary screening tool.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: it's for screening against sanctions and PEP lists. However, it does not explicitly state when not to use it or name alternatives (e.g., 'investigate_entity' might be for deeper analysis), though it implies this is the main tool for initial screening.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses key behavioral traits like ordering ('ordered by relevance'), result content ('entity type, datasets, and properties'), and default behavior ('Defaults to all datasets'), but lacks details on error handling, rate limits, or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with core functionality, followed by usage guidance and result details. Every sentence adds value without redundancy, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (4 parameters, no output schema, no annotations), the description is largely complete—covering purpose, usage, and result structure. However, it lacks details on error cases or pagination, which would be helpful for a search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds minimal parameter semantics beyond the schema, mentioning only that queries can be 'by name or keyword' for the 'query' parameter, without providing additional context for other parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('search', 'returns') and resources ('OpenSanctions database', 'matching entities'), and explicitly distinguishes it from sibling tool 'match_entity' by contrasting exploratory queries with formal sanctions screening.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool ('for exploratory queries') versus when to use an alternative ('for formal sanctions screening with confidence scores, use match_entity'), including concrete examples of appropriate queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It usefully adds context about 'No API key required' which is important operational information. However, it doesn't mention potential limitations like rate limits, error conditions, or response format details that would be helpful for a read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly structured with two focused sentences. The first sentence clearly states the purpose and scope, while the second provides essential usage guidance. Every word earns its place with zero wasted text or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read operation with no output schema, the description provides good context about what information is returned and how to use the tool. The main gap is the lack of information about the response format or structure, which would be helpful since there's no output schema. However, the description covers the essential operational aspects well.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the single parameter 'name' well-documented in the schema. The description doesn't add any additional parameter information beyond what's already in the schema, so it meets the baseline of 3 where the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Get full details about a specific dataset') and lists the exact information returned (description, publisher, entity count, last updated, coverage information). It explicitly distinguishes this tool from its sibling 'list_datasets' by explaining their complementary roles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool versus alternatives: 'Use list_datasets first to find dataset names, then this tool for details.' This clearly establishes the workflow relationship between these two sibling tools and provides practical implementation advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool fetches 'complete details' including properties, memberships, and relationships, and specifies that 'Relationships come from the OpenSanctions knowledge graph' with examples like 'ownershipOwner'. However, it lacks details on potential errors (e.g., invalid ID), rate limits, or authentication needs, which are relevant for a read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by usage guidelines and additional details. Each sentence adds necessary information without redundancy, making it efficient and well-structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (fetching detailed entity data), no annotations, and no output schema, the description does well by covering purpose, usage, and data scope. However, it could improve by mentioning the response format or potential limitations (e.g., data freshness, error cases), leaving minor gaps in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for the single parameter 'entityId', so the baseline is 3. The description adds value by specifying the parameter's purpose ('to get the full picture') and providing an example format ('e.g., NK-...'), which enhances understanding beyond the schema's basic type and requirement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Fetch complete details') and resource ('specific entity by ID'), specifying the scope includes 'all properties, dataset memberships, and relationships to other entities'. It distinguishes from siblings like 'search_entities' (which finds entities) and 'match_entity' (which matches entities), making it specific and non-tautological.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: 'Use this after finding an entity via search or match to get the full picture'. This provides clear context for usage relative to alternatives like 'search_entities' and 'match_entity', with no misleading or missing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/scka-de/opensanctions-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server