sanctions
Server Details
Sanctions screening for KYC/AML — EU FSF + OFAC SDN checks for Czech companies & individuals.
- Status
- Healthy
- Uptime
- 100.0% over 37 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- martinhavel/cz-agents-mcp
- GitHub Stars
- 6
- Server Listing
- cz-agents-mcp
TDQS
Scored across 6 tools
The search/lookup tools are cleanly separated by target type (person vs. entity, fuzzy-name vs. exact-ID vs. by-record-ID). The main overlap risk is list_recent_updates vs. rescreen_portfolio, both dealing with changes since a date, though the descriptions explicitly distinguish the global feed from a portfolio intersection.
All six tools follow a snake_case verb_noun pattern with action-appropriate verbs (check, get, list, rescreen, search). Minor inconsistencies: rescreen_portfolio uses a compound verb and check_ico is a domain-specific exact lookup while search_* covers fuzzy lookups, creating slight stylistic unevenness.
Six tools is well within the ideal 3-15 range for a sanctions screening server. Each tool earns its place — search, lookup, detail retrieval, and change monitoring — with no redundant or filler operations.
The core sanctions workflow is covered: fuzzy search by name (person and entity), direct-ID lookup (IČO and listing ID), and change monitoring (global feed plus portfolio re-screen). Minor gaps: no way to enumerate available sanction sources, no identifiers beyond IČO, and portfolio management is implicit to the paid tool rather than a first-class feature.
Available Tools
6 toolscheck_icoARead-onlyInspect
Check whether a Czech IČO (or any company by IČO) appears on sanctions lists. Direct exact-ID lookup; pass name to also fuzzy-match if no direct hit.
| Name | Required | Description | Default |
|---|---|---|---|
| ico | Yes | Czech IČO (7-8 digits) or comparable national company ID. | |
| name | No | Optional company name for fuzzy fallback if IČO not directly listed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint and openWorldHint. The description adds valuable behavioral context about the exact-ID lookup and the fuzzy-match fallback with name, which goes beyond the structured data. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the core purpose and followed by usage guidance. Every word earns its place; no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple lookup tool with only two parameters and no output schema, the description adequately covers the main usage and fallback behavior. It does not explicitly state the return format, but given the simplicity, the context is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented. The description's mention of 'pass `name` to also fuzzy-match if no direct hit' mirrors the schema's existing description, adding little new semantic value. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Check whether a Czech IČO (or any company by IČO) appears on sanctions lists.' It uses a specific verb and resource, and the distinction from siblings like search_entity/search_person is evident because it focuses on IČO-based sanctions lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool: 'Direct exact-ID lookup; pass `name` to also fuzzy-match if no direct hit.' This indicates it's for cases where you have an IČO, but it does not explicitly name alternative tools or state when not to use it, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_listingARead-onlyInspect
Retrieve the full record for a single sanctions listing by its ID (format: ${source}:${source_list_id}, e.g. "ofac:12345" or "eu:EU.123.789").
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Internal listing ID, e.g. "ofac:12345". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint and openWorldHint, already indicating a safe, open-world read. The description adds that it returns the 'full record', which is useful behavioral context about the response. The ID format is also meaningful beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-structured sentence that is front-loaded with the action and resource. Every piece of information (ID format, examples) is directly useful and not redundant with the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter retrieval tool with readOnly annotations, the description is complete. It specifies what it does, how to identify the listing, and the scope of the return ('full record'). No output schema is needed for this simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the id property already includes an example, but the description goes further by stating the general pattern (`${source}:${source_list_id}`) and giving a second example (eu:EU.123.789), adding clarity beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Retrieve'), the resource ('full record for a single sanctions listing'), and the method ('by its ID'), distinguishing it from sibling search/check tools. The specific ID format and examples make the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes it clear that this tool is for retrieving a listing when an ID is known, with the format requirement. It does not explicitly contrast with search tools, but the context signals (sibling names like search_entity) imply those are for discovery vs. this for direct lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_recent_updatesARead-onlyInspect
List sanctions added/removed/modified since a given date. Use for daily monitoring against a watchlist.
| Name | Required | Description | Default |
|---|---|---|---|
| since | Yes | ISO date or datetime, e.g. "2026-04-01" or "2026-04-01T00:00:00Z". | |
| source | No | Optional source filter. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint: true, so the safety profile is known. The description adds that updates can be added/removed/modified, but it does not disclose return format, pagination, or any limitations (e.g., openWorldHint implications). It adds some context beyond annotations but not rich behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states the function, the second states the intended use. Every word earns its place, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple list operation with two well-documented parameters and read-only annotations. The description explains what it does and when to use it. It lacks a mention of response structure, but for a filtered-list tool with strong schema coverage, this is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both 'since' and 'source' having descriptive text. The description's phrase 'since a given date' aligns with the schema but adds no new semantic information beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists sanctions updates (added/removed/modified) since a given date. This is a specific verb+resource+time scope, and it distinguishes from sibling tools like search_entity or check_ico, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises 'Use for daily monitoring against a watchlist,' which provides a clear context for when to use this tool. It doesn't explicitly mention alternatives or when not to use it, but the use case is clear enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rescreen_portfolioARead-onlyInspect
PAID. Re-screen your own list of subjects against sanctions-list changes since a given date. Answers "which of MY clients were affected", which list_recent_updates cannot: that tool returns the global change feed, this one intersects it with your portfolio. Requires payment via x402; call without payment first to receive the terms.
| Name | Required | Description | Default |
|---|---|---|---|
| since | Yes | ISO date of the last screening, e.g. "2026-07-01". | |
| source | No | ||
| subjects | Yes | Up to 11 subjects per paid call (batch cap sized to the per-call price, not per-subject). Each needs at least a name or an ICO. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint and openWorldHint. Description adds key behavioral trait: tool is paid and requires payment via x402, including flow to call without payment to get terms. Does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundancy. First sentence gives purpose, second contrast with sibling and payment note. Every sentence adds essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description adequately explains what the tool returns (which clients affected) and how to match results via ref field. Includes payment flow. Complete for a paid portfolio rescreening tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 67% of parameters with descriptions. Description adds value by clarifying subjects parameter: 'Each needs at least a name or an ICO' and mentions batch cap. This supplements schema details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool re-screens a portfolio against sanctions changes since a date, specifying the resource (portfolio) and action (re-screen). It explicitly contrasts with sibling list_recent_updates, stating that this tool intersects global changes with user's list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: 'Answers which of MY clients were affected, which list_recent_updates cannot'. Also describes payment requirement and advises to call without payment first to receive terms, indicating when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_entityARead-onlyInspect
Fuzzy-search a sanctioned entity (company, organization) by name. Optional country narrows results.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Company / organization name. | |
| limit | No | Max results (default 20). | |
| country | No | Country filter (name or ISO code). | |
| threshold | No | Min confidence (default 80). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the 'fuzzy-search' behavior and country narrowing, but does not disclose return format, ranking details, or what happens with no results. This is adequate but not rich for a search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise, front-loaded sentence with no filler. It communicates the core purpose and a key optional filter in minimal words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple search function, full schema coverage, and read-only annotations, the description is sufficient. It could optionally mention that results include confidence scores (implied by the threshold parameter), but this is not a critical gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with detailed descriptions for name, limit, country, and threshold. The description only adds that country 'narrows results', which is redundant with the schema. Baseline 3 is appropriate since the schema carries the parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's verb ('Fuzzy-search') and resource ('sanctioned entity (company, organization)'), and the parenthetical disambiguates it from the sibling search_person. This is a specific, actionable purpose that distinguishes the tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for companies/organizations and mentions that country is an optional narrowing filter, giving some context. However, it does not explicitly name search_person as the alternative for individuals, so usage guidance falls short of a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_personARead-onlyInspect
Fuzzy-search a sanctioned person by name across all loaded lists. Optional date of birth and nationality narrow results. Returns matches with confidence scores (0-100). 100 = exact ID match, 80+ = strong fuzzy match, lower = review needed.
| Name | Required | Description | Default |
|---|---|---|---|
| dob | No | YYYY or YYYY-MM-DD. Optional, narrows matches. | |
| name | Yes | Full name. Cyrillic / Arabic / Chinese tolerated; transliteration applied. | |
| limit | No | Max results (default 20). | |
| threshold | No | Min confidence to include in results (default 80). | |
| nationality | No | Country name or ISO code. Optional. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, openWorldHint), the description adds valuable behavioral details: it returns confidence scores (0-100) and explains their interpretation ('100 = exact ID match, 80+ = strong fuzzy match, lower = review needed'). It also notes that fuzzy search and transliteration are applied, which is behavior not captured by annotations. This enriches the agent's understanding of result quality and review requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: one sentence for the core action, one for optional filters, and one for output interpretation. Every sentence earns its place and is front-loaded with the most essential information. No wasted words or redundant details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description appropriately explains return values (matches with confidence scores and their meaning). It also covers search scope and optional narrowing. However, it does not mention limit/threshold behavior or what happens with no matches, though these are in the schema. The overall completeness is good for a read-only search tool, but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% parameter descriptions, including format for dob, transliteration for name, defaults for limit/threshold, and ISO code for nationality. The description adds little beyond the schema—it only mentions that dob and nationality are optional filters. Since schema coverage is high, a baseline of 3 is appropriate; the description does not compensate for any missing parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Fuzzy-search a sanctioned person by name across all loaded lists.' This specifies the verb (search), resource (person), and scope (sanctioned lists), distinguishing it from the sibling 'search_entity' which likely targets entities rather than persons. The purpose is unambiguous and action-oriented.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it searches persons across all loaded lists and mentions optional filters (dob, nationality) that narrow results. However, it does not explicitly state when to prefer this tool over alternatives like 'search_entity' or provide exclusion criteria. Since the purpose clarity already differentiates siblings, the lack of explicit alternatives keeps this at a 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Added
rescreen_portfolio
17 tool updates
- Added
check_ico - Removed
detect_address_crowding - Removed
detect_nominee_director - Removed
detect_phoenix - Removed
get_dd_report - Removed
get_eu_dd_report - Removed
get_eu_parent - Added
get_listing - Removed
get_owners - Removed
get_risk_score - Removed
get_risk_timeline - Removed
get_statutory_chain - Added
list_recent_updates - Removed
person_companies - Added
search_entity - Added
search_person - Removed
watch_entity
17 tool updates
- Removed
check_ico - Added
detect_address_crowding - Added
detect_nominee_director - Added
detect_phoenix - Added
get_dd_report - Added
get_eu_dd_report - Added
get_eu_parent - Removed
get_listing - Added
get_owners - Added
get_risk_score - Added
get_risk_timeline - Added
get_statutory_chain - Removed
list_recent_updates - Added
person_companies - Removed
search_entity - Removed
search_person - Added
watch_entity
8 tool updates
- Added
check_ico - Removed
check_ico_insolvency - Added
get_listing - Added
list_recent_updates - Removed
poll_isir_events - Added
search_entity - Added
search_person - Removed
search_person_insolvency
8 tool updates
- Removed
check_ico - Added
check_ico_insolvency - Removed
get_listing - Removed
list_recent_updates - Added
poll_isir_events - Removed
search_entity - Removed
search_person - Added
search_person_insolvency
8 tool updates
- Added
check_ico - Removed
check_ico_insolvency - Added
get_listing - Added
list_recent_updates - Removed
poll_isir_events - Added
search_entity - Added
search_person - Removed
search_person_insolvency
8 tool updates
- Removed
check_ico - Added
check_ico_insolvency - Removed
get_listing - Removed
list_recent_updates - Added
poll_isir_events - Removed
search_entity - Removed
search_person - Added
search_person_insolvency
8 tool updates
- Added
check_ico - Removed
check_ico_insolvency - Added
get_listing - Added
list_recent_updates - Removed
poll_isir_events - Added
search_entity - Added
search_person - Removed
search_person_insolvency
8 tool updates
- Removed
check_ico - Added
check_ico_insolvency - Removed
get_listing - Removed
list_recent_updates - Added
poll_isir_events - Removed
search_entity - Removed
search_person - Added
search_person_insolvency
8 tool updates
- Added
check_ico - Removed
check_ico_insolvency - Added
get_listing - Added
list_recent_updates - Removed
poll_isir_events - Added
search_entity - Added
search_person - Removed
search_person_insolvency
8 tool updates
- Removed
check_ico - Added
check_ico_insolvency - Removed
get_listing - Removed
list_recent_updates - Added
poll_isir_events - Removed
search_entity - Removed
search_person - Added
search_person_insolvency
8 tool updates
- Added
check_ico - Removed
check_ico_insolvency - Added
get_listing - Added
list_recent_updates - Removed
poll_isir_events - Added
search_entity - Added
search_person - Removed
search_person_insolvency
8 tool updates
- Removed
check_ico - Added
check_ico_insolvency - Removed
get_listing - Removed
list_recent_updates - Added
poll_isir_events - Removed
search_entity - Removed
search_person - Added
search_person_insolvency
8 tool updates
- Added
check_ico - Removed
check_ico_insolvency - Added
get_listing - Added
list_recent_updates - Removed
poll_isir_events - Added
search_entity - Added
search_person - Removed
search_person_insolvency
8 tool updates
- Removed
check_ico - Added
check_ico_insolvency - Removed
get_listing - Removed
list_recent_updates - Added
poll_isir_events - Removed
search_entity - Removed
search_person - Added
search_person_insolvency
8 tool updates
- Added
check_ico - Removed
get_dd_report - Added
get_listing - Removed
get_risk_score - Removed
get_statutory_chain - Added
list_recent_updates - Added
search_entity - Added
search_person
Related MCP Connectors
Czech & EU due diligence in one call — facts, insolvency, sanctions, VAT, risk score, UBO chain.
OFAC and global sanctions screening: crypto addresses, emails, websites, IDs, countries, VPN, geo
Czech KYC due-diligence — paid tier extension (nominee, phoenix, risk timeline, watchlist).
Due diligence & KYC: PEP, national and international sanctions (OFAC, UN, EU, UK, FBI, INTERPOL, FIN
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceScreens names and companies against OFAC, EU, UK, and UN sanctions lists with fuzzy-match scores, supporting bulk lookups for AML/KYC checks. Data is sourced directly from official government lists and cached for fast repeat checks.-
- AlicenseNot gradedqualityCmaintenanceChecks names against US FinCEN financial crime lists for compliance and AML due diligence, with a single read-only tool.MIT
- AlicenseNot gradedqualityAmaintenanceScreen names against consolidated OFAC, EU, UK, and UN sanctions lists and resolve legal entities via GLEIF, with offline fuzzy matching.103 npm1Apache 2.0
- AlicenseAqualityBmaintenanceEnables AI agents to screen business partners against EU/US/HADDEX sanctions and PEP lists, and maintain the easycompliance daily monitoring list.64 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.