Counterparty Check
Server Details
Check a payee before your agent pays: sanctions, lookalike domains, payment details, invoice fraud.
- Status
- Healthy
- Uptime
- 100.0% over 23 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 4 tools
check_counterparty and screen_sanctions overlap since sanctions screening is a subset of the full check, but the descriptions clearly delineate the boundary (cost, speed, and fraud-pattern coverage). check_balance and verify_receipt are unambiguously distinct utility operations.
All four names follow a snake_case verb_noun pattern, which is consistent and readable. The verbs vary (check_, screen_, verify_) but semantically align with each tool's purpose rather than being arbitrary, so this is only a minor deviation.
Four tools is on the lean side but each earns its place: a balance check, a full risk check, a cheaper screen, and receipt verification. The surface is well-scoped for a focused fraud-verification service with no obvious filler.
The set covers the full flow: check the prepaid balance, run either a heavy or light risk screen, and verify the resulting receipt's authenticity. No obvious lifecycle gaps remain for this domain, and the free/paid tiering is fully represented.
Available Tools
4 toolscheck_balanceAPI key balanceARead-onlyInspect
Show the remaining prepaid balance on the API key used for this connection. Free.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. The description adds value beyond that by disclosing the cost model ("Free") and that the balance is scoped to the key on the current connection, both of which are not encoded anywhere in the structured fields.
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 short sentences, front-loaded with the action and resource, with the cost note last. Every clause earns its place and there is no filler.
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 carries the return-value burden and does explain what is returned (remaining prepaid balance). It stops short of stating units/currency or what happens with an invalid or unmetered key, but the core is complete for such a simple read 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?
The tool takes zero parameters and the schema is empty, so there is nothing to document; per the baseline, this scores high. The description correctly describes the implicit input — the connection's own API key — without overreaching.
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?
States a specific verb and resource ("Show the remaining prepaid balance") and scopes it to "the API key used for this connection", which cleanly distinguishes it from the unrelated siblings (check_counterparty, screen_sanctions, verify_receipt). An agent knows exactly what this returns.
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?
Usage is implied: an agent would call this to check prepaid credit status. However, there is no explicit when-to-use framing (e.g., before issuing billable requests), no mention of what happens when the balance is exhausted, and no alternatives to weigh against since it is a zero-parameter informational tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_counterpartyCheck a payee before payingARead-onlyInspect
Run a full pre-payment risk check on a payee: OFAC sanctions (names and wallets), domain age and email authentication, lookalike domains (vendor impersonation, brand typo-squats, executive impersonation), routing/IBAN/SWIFT/wallet validation, and business-email-compromise signals. Returns verdict proceed/review/block, a 0-100 risk score, explained findings, and a signed receipt. Costs $0.25 from the API key balance. Fill in "context" with everything you know about how the payment request arrived; it materially improves fraud detection.
| Name | Required | Description | Default |
|---|---|---|---|
| context | No | What the paying agent knows about how this payment came about. Each field sharpens fraud detection. | |
| payment | No | ||
| counterparty | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, and the description is consistent with them. It adds genuinely non-obvious behavior: a $0.25 charge against the API key balance and the verdict/score/receipt return shape. No auth or rate-limit details, but the cost disclosure is the key trait an agent needs.
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 dense paragraph, front-loaded with the checks, then outputs, then cost, then the one piece of caller guidance. Every clause carries information, though the parenthetical check list is long enough to verge on enumeration bloat.
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 steps in and describes the return values (verdict, 0-100 score, explained findings, signed receipt), which is exactly what's needed. It covers a 3-param nested schema and cost, leaving only minor gaps like failure modes when required fields are absent.
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 coverage is only 33% (many nested payment/context fields lack descriptions), so the description must compensate — and it does by explaining that 'context' should be filled with everything known about how the payment arrived and that it materially improves detection. It does not explain individual nested fields like 'requested_urgency' or 'bank_details_changed', so it is helpful but not fully compensatory.
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?
Names a specific verb+resource ('pre-payment risk check on a payee') and enumerates the exact checks performed (OFAC, domain age, lookalikes, routing/IBAN/SWIFT/wallet validation, BEC signals). This distinguishes it from sibling screen_sanctions (a subset) and verify_receipt (which consumes its output).
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 title and first clause make the when-to-use case explicit ('before paying'), and it tells the agent to populate 'context' with everything known about how the request arrived. It stops short of naming siblings or stating when not to use it (e.g. vs screen_sanctions).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screen_sanctionsSanctions screen onlyARead-onlyInspect
Screen a payee name (and optional crypto wallet) against OFAC sanctions lists and embargoed jurisdictions. Faster and cheaper than check_counterparty but does not detect fraud patterns. Costs $0.05 from the API key balance; without a key, the first 3 screens each day are free.
| Name | Required | Description | Default |
|---|---|---|---|
| context | No | What the paying agent knows about how this payment came about. Each field sharpens fraud detection. | |
| payment | No | ||
| counterparty | Yes |
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 genuinely new behavioral context the annotations cannot convey: the $0.05 per-call cost from the API key balance and the free tier of 3 screens per day without a key — pricing an agent can reason about before invoking.
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, zero waste. The core capability is front-loaded, and the comparison, limitation, and pricing follow in priority order — each clause earns its place.
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 tool with three nested parameter groups and no output schema, the description covers purpose, sibling routing, and cost, but never describes what the screen returns (a hit/no-hit result, match scores, list references). With no output schema to fall back on, that is a meaningful gap for an agent deciding how to consume the response.
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 only 33% and the schema is deeply nested, so the description carries more burden than usual. It clarifies that the payee name is the core input and the crypto wallet is optional, but says nothing about the context or payment sub-objects, whose many fields drive results ('Each field sharpens fraud detection').
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?
States a specific verb (screen) and resource (payee name plus optional crypto wallet) against named targets (OFAC sanctions lists and embargoed jurisdictions). It also explicitly contrasts itself with the sibling check_counterparty, so an agent can distinguish the two without opening either schema.
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?
Names the alternative (check_counterparty) and gives the tradeoff — faster and cheaper, but no fraud-pattern detection — which effectively tells the agent when to pick this tool versus the broader one. It stops short of an explicit 'use this when X, not when Y' statement or stating prerequisites for the inputs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_receiptVerify a check receiptARead-onlyInspect
Confirm that a receipt returned by a previous check is authentic and unaltered. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| receipt | Yes | The full "receipt" object from a check response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safe-read profile is covered structurally. The description adds two useful facts beyond that: the operation is free, and what 'verify' means (authentic and unaltered). It does not, however, say what a failed verification returns or how errors surface.
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 short sentences with zero filler; the core purpose is front-loaded and the cost note is a compact trailing clause. Nothing is wasted.
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 one-parameter, read-only verification tool with full schema coverage and annotations, the description covers purpose, precondition, and cost. The only gap is the outcome semantics of a failed verification, which is minor since no output schema exists to lean on.
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 single parameter has 100% schema description coverage, and the schema already states it is the full receipt object. The description only adds the provenance hint ('from a previous check'), so 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?
States a specific verb (confirm/verify) and resource (receipt) and adds the provenance constraint that the receipt must come from a previous check. It is clearly distinct in intent from the sibling tools (check_balance, check_counterparty, screen_sanctions), though it does not name them explicitly.
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 clause 'a receipt returned by a previous check' implies the precondition for calling this tool, but there is no explicit when-to-use/when-not-to-use guidance and no mention of alternative tools. Usage is inferable rather than stated.
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.
4 tool updates
- First observed
check_balance - First observed
check_counterparty - First observed
screen_sanctions - First observed
verify_receipt
Related MCP Connectors
Checks before an agent pays: payees, webshops, invoices, payment files, companies, sanctions, PEP.
Pre-payment checks for AI agents: sanctions and AML screening of payees, payment pages and requests.
Validate IBANs and bank codes, verify payee names, and screen names against sanctions lists.
Check if a counterparty is safe to pay: trust/risk score for AI agents. Scam/phishing screen.
Related MCP Servers
AlicenseNot gradedqualityCmaintenanceEnables agents to check companies before payments, invoices, or contracts by resolving legal entities in GLEIF, walking parent chains, screening against OFAC, EU, UN, and UK sanctions lists, and validating EU VAT numbers in VIES.MIT- AlicenseNot gradedqualityCmaintenanceScreens payee and bank-account change requests with seven checks, issues safe callback scripts, and requires a named owner to approve or block before any change proceeds.MIT
- FlicenseNot gradedqualityDmaintenanceEnables screening companies or people against OFAC, UN, EU and UK sanctions lists, looking up SEC EDGAR records, checking domain age and email records, and compiling due-diligence reports with source links and a clear, review, or hold verdict.-
- AlicenseAqualityDmaintenanceEnables AI agents to screen business partners against EU/US/HADDEX sanctions and PEP lists, and maintain the easycompliance daily monitoring list.67 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.