Skip to main content
Glama

Limitguard MCP Server

Limitguard MCP server: quality and maintenance score on Glama Listed on MCP Market

Check Dutch and Belgian companies, sales leads and crypto wallets before you deal with them, over the Model Context Protocol: the KVK (Netherlands) and KBO (Belgium) registers, EU VAT (VIES), the OFAC, EU and UN sanctions lists and wallet risk on Base and Solana, with the source and date of every answer.

Server URL: https://api.limitguard.ai/mcp Transport: Streamable HTTP (POST) Auth: API key (Bearer), plus an x402 micropayment per call on the free and sandbox tiers

What it is: Limitguard is a lead validation service for lead generation agencies, B2B marketing and sales teams: it checks the company behind each lead against official business registers (full coverage in the Netherlands and Belgium), EU VAT and sanctions lists, with website age in the company check, and returns proceed, review or block with the source on every line. Developers and AI agents can use its HTTP API, MCP server and A2A service, hosted in the EU.

Start here: On MCP a paid tool takes an x402 payment per call, or debits prepaid credit (a paid key, or a funded workspace); wallet_sanctions_preview, sanctions_preview and get_trust_score are free; the free sandbox key returns mock data on the REST API only, not on MCP. Paid by x402: Lead Verify $0.10 per lead and agent check $0.005 per wallet; entity check and KYB $0.29 and risk score $0.25 fresh, $0.11 cached ($0.25 KYB) when available; report $0.55; sanctions and wallet screens $0.005; other routes at the account price. API keys, the dashboard and the Claude connector pay the account prices: Lead Verify $0.27 per lead and agent check $0.75 per wallet; $0.11-1.85 per call; entity and risk checks $0.88-1.05 fresh ($1.50 KYB), $0.11 cached ($0.25 KYB) when available.

Features

  • Lead verify for Dutch and Belgian sales leads: is it a real, active company? A verdict, a 0-100 lead score and one action per flag ($0.27 with an API key, $0.10 with x402).

  • Company check against the KVK and KBO registers, EU VAT (VIES), the domain and the IBAN, with a 0-100 score and a recommendation.

  • Sanctions screen of company and person names against the OFAC, EU and UN lists, with a free yes/no preview.

  • Crypto wallet screen on Base and Solana: OFAC address match, balances, wallet age, recent activity and risk rules with advice ($0.11 with an API key, $0.005 with x402).

  • Free wallet sanctions check: a yes/no against the OFAC list.

  • AI agent wallet check before your agent pays: sanctions, balance, ERC-8004 identity and public reputation ($0.75 with an API key, $0.005 with x402).

  • Pay per call in USDC on Base or Solana with x402, or with an API key and prepaid credit. A check that fails is not charged.

  • MCP, REST and A2A, and agents can pay inside A2A with x402.

  • Sources on every answer, with the date each one was read. Hosted in the EU.

Related MCP server: eu-verify

Tools

tools/list is public: connect and read it without any credential. These are the names it returns, and the names tools/call accepts:

Tool

Description

Inputs

check_entity

Company check on a business: sanctions screening and country risk, the Dutch KVK register for an NL company, and the website domain when you send it. Returns trust_score (0-100, 100 = best), trust_level (high means low risk), cluster, recommendation, confidence, top_factors and sources_checked.

entity_name (required), country (required), kvk_number, domain

get_trust_score

Look up your own most recent trust score for an entity you checked before, from your stored checks: score, level, when, which product, trend and how many checks are on record. Runs no new check and calls no data source. Free ($0).

entity_id (required)

verify_wallet

Screen a wallet: OFAC SDN address match, on-chain signals (contract check, native and USDC balance, transaction count, first seen on Base) and named risk rules with up to 3 advice items. On Base, also reports any ERC-8004 agent the wallet owns and its open on-chain reputation as descriptive signals, never scored. $0.11. Supports EVM and Solana addresses.

wallet_address (required), chain_id

get_risk_score

Quick risk score from sanctions screening and country risk only, without the register or domain lookups of check_entity. Returns risk_score (0-100, 100 = riskiest), risk_level (high means high risk, the reverse of check_entity's trust_level), sanctions_match and fatf_status; no recommendation or factors.

entity_name (required), country (required)

get_compliance_report

Per-entity report built from one real check: registry identity, sanctions and PEP screens, domain signals, risk score with the rules that fired, correlations, every finding as a ranked action, a per-source status table (ok / unavailable / error) and a report hash.

entity_name, country, kvk_number, cbe_number, vat_number, domain, iban, wallet_address, wallet_chain, check_id

sanctions_preview

Free yes/no sanctions preview against the local OFAC SDN, EU and UN lists. Returns possible_match, lists_checked, list_dates and list_note only, never an entry. 10 per caller per UTC day.

name (required), country

wallet_sanctions_preview

Free yes/no check of a wallet address against the OFAC SDN list: sanctioned, lists, the list date and its freshness, no programmes or entry ids. 10 per caller per UTC day, separate from sanctions_preview. The full wallet screen is verify_wallet ($0.11).

wallet_address (required), chain_id

sanctions_screen

Sanctions screen against the local OFAC SDN, EU and UN lists: matched entries with list, entry id, programmes, countries, listing date and match score. A name match is not a determination.

name (required), country

check_agent_wallet

Check a counterparty agent's EVM wallet in one call: OFAC SDN digital-currency address list match, Base USDC and ETH balance, ERC-8004 identity registration (and, given an agent id, that agent's owner and payment wallet) and open ERC-8004 feedback, which is not scored. $0.75.

wallet (required), agent_id, domain

verify_lead

Verify a NL/BE sales lead against the registers in one call: real and active, VAT, mail server, IBAN, sanctions; a 0-100 lead score. $0.27.

country (required), company_number, name, vat_number, email, domain, address, iban, phone, target_industries, target_size

Pricing

A paid tool call is debited from your API key's prepaid balance at the account price, or paid per call with an x402 micropayment (USDC on Base or Solana) at the agent price in Agent prices (x402). The tools with their own /v1/mcp/* path are priced below at the account price; the other tools are priced at the REST endpoint they call, in Full x402 API.

Endpoint

Account price

Entity Check (/v1/mcp/check-entity)

$1.05

Risk Score (/v1/mcp/risk-score)

$0.90

Check Agent (/v1/mcp/check-agent)

$0.00: hidden placeholder, not in tools/list; returns placeholder data

Trust Score (/v1/mcp/trust-score)

$0.00, free (your own stored score)

Verify Wallet (/v1/mcp/verify-wallet)

$0.11

Authentication

Two things gate a tools/call, in this order:

  1. An API key, as Authorization: Bearer <key>. Without one every call comes back Authentication required. Provide API key via Authorization: Bearer <lg_live_...> header. Get a free one (no payment, no card):

    curl -X POST https://api.limitguard.ai/v1/keys/create \
      -H "Content-Type: application/json" \
      -d '{"email": "you@example.com"}'

    That returns a free-tier key, which is the key the Quick Start configs below expect. Asking for "tier": "sandbox" instead returns a key that answers with mock data; see the next point before you use one here.

  2. Payment, on the free and sandbox tiers only. Send the x402 proof as PAYMENT-SIGNATURE (x402 v2) or X-PAYMENT (v1), alongside the Bearer key. A key with a prepaid balance (indie and up) is debited per call instead and needs no per-call payment. API keys have no subscription; see API keys and prepaid balance.

    A sandbox key does not lift the payment requirement on this transport: it owes x402 per call exactly as a free key does, and it answers with mock data rather than a real check. Paying for one over MCP spends real USDC on a mock answer. Where a sandbox key is worth having is the REST mirrors under /v1/mcp/* (sent as X-API-Key, not Bearer), which serve the mock response before the payment check: a way to exercise the request and response shapes, not a cheap source of real checks.

Agent prices (x402)

An x402 payment pays the agent price: REST, A2A with x402, and MCP pay-per-call on /mcp. An API key, the dashboard and the Claude connector pay the account price, from prepaid credit. A route not listed here costs its account price with x402 too.

The official x402 SDKs refuse a payment above one dollar by default (maxAmountPerPayment). That default covers every agent price. Raise it only for the deep-check enhanced and credit tiers and for the /v1/keys/upgrade/* and /v1/keys/topup/* purchases.

Endpoint

Agent price (x402)

Account price

POST /v1/entity/check

$0.29 fresh, $0.11 cached

$1.05 fresh, $0.11 cached

POST /v1/mcp/check-entity

$0.29

$1.05

POST /v1/risk/score

$0.25 fresh, $0.11 cached

$0.90 fresh, $0.11 cached

POST /v1/mcp/risk-score

$0.25

$0.90

POST /v1/kyb/check

$0.29 fresh, $0.25 cached

$1.50 fresh, $0.25 cached

POST /v1/reports/entity

$0.55

$1.85

POST /v1/leads/verify

$0.10

$0.27

POST /v1/agent/check

$0.005

$0.75

POST /v1/mcp/verify-wallet

$0.005

$0.11

POST /v1/sanctions/screen

$0.005

$0.11

Full x402 API (direct HTTP)

The tools above are what the MCP server exposes over the Model Context Protocol. Clients that integrate directly over HTTP, instead of through an MCP client, can reach every x402-priced endpoint on https://api.limitguard.ai: the REST endpoints below, plus the MCP tools' own /v1/mcp/* paths. All of them are published in /.well-known/x402.json; /.well-known/mcp.json lists only the tools above.

Most of the REST endpoints are capabilities the MCP tools do not expose, but two run the same engine over plain HTTP: /v1/entity/check behind check_entity (the MCP tool takes the entity name, country, KVK number and domain only, so no IBAN or VAT), and /v1/risk/score behind get_risk_score, at the same price.

Payment is per call throughout: USDC on Base or Solana, at the agent price in Agent prices (x402). The Price columns below are the account prices an API key pays. The data endpoints below need no API key at all. The /v1/keys/upgrade/* endpoints also take payment without one, but they act on an API key you already hold; see API keys and prepaid balance.

Lead and company checks

Endpoint

Method

Price

Description

/v1/leads/verify

POST

$0.27

Lead verify for one NL or BE sales lead: is it a real, active company? Checks the KVK or KBO register and cross-checks what the lead holds: VAT with VIES, mail server and disposable domain, IBAN country and bank (not the holder), and the company name against the OFAC, EU and UN sanctions lists. Returns a verdict, a 0-100 lead score and flags, each with one action. An input not given is not checked.

/v1/agent/check

POST

$0.75

Agent wallet check in one call: screens an EVM wallet against the OFAC SDN digital-currency address list, reads its Base USDC and ETH balance, looks up its ERC-8004 identity registration (and, given an agent id, that agent's owner and payment wallet) and lists open ERC-8004 feedback, which is not scored. Returns one verdict and each part's status; a part that could not be read says so.

/v1/sanctions/screen

POST

$0.11

Sanctions screen of a company or person name against the OFAC SDN, EU and UN sanctions lists, held locally and refreshed daily. Returns each matched entry: list, entry id, matched name, programmes, countries, listing date and match score. Exact normalised or word-order-insensitive name match only; a name match is not a determination.

/v1/entity/check

POST

$1.05

Full entity trust check across multiple verification layers: KVK/CBE registry, OpenSanctions, country risk (CPI/FATF), domain WHOIS, IBAN validation and EU VAT/VIES. Returns trust score 0-100 with cluster and recommendation.

/v1/risk/score

POST

$0.90

Quick risk score (0-100) for entity name + country. Lightweight check without full data source scan.

/v1/entity/deep-check

POST

$0.88

Extended screening in two tiers. fresh ($0.88): PEP and relative/close-associate matches from OpenSanctions, plus a Dutch insolvency register screen (NL only). enhanced ($1.71): the same plus adverse media screening. If a tier's source cannot be reached the call returns 503 and is not charged.

/v1/reports/entity

POST

$1.85

Per-entity report built from one real check's signals: identity, sanctions and PEP screening, domain signals, trust score (risk.trust_score, 0-100, 100 = best), correlations with the caller's earlier reports, sources and an evidence hash. A source that did not answer is shown unavailable, never clean.

Reputation management

Endpoint

Method

Price

Description

/v1/reputation/score

POST

$0.90

Reputation scoring with linear trust decay: after its first week a score loses 2-5 points a week by risk cluster (none for a sanctions-flagged entity), plus a bonus of up to 5 points for repeat verifications.

/v1/reputation/history/{id}

GET

$0.11

Historical reputation trend data. Returns the trust score timeline with the decay applied at each point and an overall trend.

Wallet services

Endpoint

Method

Price

Description

/v1/wallet/balance

GET

$0.11

ERC-8004 agent wallet balance check. Returns the on-chain USDC balance (Base mainnet) for a registered ERC-8004 agent wallet.

Regulatory compliance

Endpoint

Method

Price

Description

/v1/kyb/check

POST

$1.50

Know Your Business verification: company registration, sanctions screening, VAT/VIES, and domain analysis in one call.

/v1/compliance/alerts

GET

$0.11

Daily changes to the OFAC, EU and UN sanctions lists, plus alerts when an entity or wallet this key checked is listed. Poll this route; alerts about entities or wallets this key checked are also sent to a webhook registered for sanctions.match.new (POST /v1/webhooks). Filter by jurisdiction and severity.

/v1/compliance/readiness/{id}

GET

$0.11

EU AI Act readiness self-assessment for one AI system. Send the system_type and the checklist items you have completed (completed_items); returns the EU AI Act risk level for that system type, a readiness score and the open gaps. entity_id is your label: nothing is looked up about it.

MCP tool paths (direct HTTP)

The MCP tools that mirror a REST check are also reachable over plain HTTP at their own x402-priced /v1/mcp/* paths, with the same capabilities and prices as the Tools table above, for clients that pay per call without opening an MCP session. The other tools call one of the REST endpoints above directly.

Endpoint

Method

Price

MCP tool

/v1/mcp/check-entity

POST

$1.05

check_entity

/v1/mcp/check-agent

POST

$0.00

check_agent

/v1/mcp/trust-score

POST

$0.00

get_trust_score

/v1/mcp/verify-wallet

POST

$0.11

verify_wallet

/v1/mcp/risk-score

POST

$0.90

get_risk_score

API keys and prepaid balance

Limitguard accepts two forms of payment: x402 per call, or an API key with a prepaid balance that each priced call is debited from. API keys and x402 have no subscription (the Limitguard dashboard also has optional monthly plans, paid in euros). Paying per call needs no API key on the data endpoints above or the /v1/keys/upgrade/* paths. The MCP transport always wants one: it takes Authorization: Bearer on every tools/call, and its /v1/mcp/* mirrors take X-API-Key.

A base key is free and self-service: POST /v1/keys/create with an email address, no payment and no existing key needed. It identifies you and tracks your usage; it does not pay for calls. A free-tier key holds no balance and still owes x402 on every paid endpoint, on REST exactly as on MCP. The monthly_limit it reports is a ceiling on how many calls it may make, not an allowance of free ones. A sandbox key is also free and returns mock data, never a real check. Over MCP it owes x402 like any other free key, so it earns its keep only against the REST mirrors.

The endpoints below take an x402 payment, credit the same amount 1:1 to the prepaid balance of a key you already hold, and set its tier label. Each priced call is then debited from that balance at the prices above, with no per-call x402 payment. When the balance is too low for a call, that call answers 402 with an x402 quote and the top-up path, and POST /v1/keys/topup/{usd} adds any whole-dollar amount from $5. On every tier monthly_limit is an abuse limit, not an allowance of included calls.

Endpoint

Method

Price

Tier label

monthly_limit (abuse limit)

/v1/keys/upgrade/indie

POST

$29

Indie

1,000 calls/mo

/v1/keys/upgrade/starter

POST

$99

Starter

10,000 calls/mo

/v1/keys/upgrade/growth

POST

$299

Growth

50,000 calls/mo

/v1/keys/upgrade/pro

POST

$999

Pro

250,000 calls/mo

Prices and descriptions above are generated from the service and were last checked against the live x402 manifest on 2026-10-06. The manifest is the source of truth: fetch it if you need the current schema for any endpoint.

Quick Start

Claude (Desktop and claude.ai)

This is a remote server, so it is added as a custom connector, not in claude_desktop_config.json (that file is for local servers only):

  1. Open Customize > Connectors, then + Add > Add custom connector. On a Team or Enterprise plan an owner adds it under Organization settings > Connectors.

  2. URL: https://api.limitguard.ai/mcp

  3. Under Request headers, add Authorization with the value Bearer YOUR_LIMITGUARD_KEY.

Cursor

Add to MCP settings:

{
  "limitguard": {
    "type": "url",
    "url": "https://api.limitguard.ai/mcp",
    "headers": {
      "Authorization": "Bearer YOUR_LIMITGUARD_KEY"
    }
  }
}

Smithery

npx -y @smithery/cli install team-mehs/limitguard

Any MCP Client

Connect to https://api.limitguard.ai/mcp using Streamable HTTP transport (POST), sending Authorization: Bearer <key> on every tools/call.

Run locally (stdio)

For a client that only runs local servers, this repository also ships a stdio server with the same tools. Each tool calls the Limitguard REST API with your key, so a paid call is debited from the key's prepaid balance; paying per call with x402 needs the remote server above.

uvx --from git+https://github.com/jwconsultancyteam/limitguard-mcp limitguard-mcp
{
  "mcpServers": {
    "limitguard": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/jwconsultancyteam/limitguard-mcp", "limitguard-mcp"],
      "env": { "LIMITGUARD_API_KEY": "YOUR_LIMITGUARD_KEY" }
    }
  }
}

Or in a container: docker build -t limitguard-mcp . then docker run -i --rm -e LIMITGUARD_API_KEY limitguard-mcp.

Agent skills

Three Agent Skills teach an agent when to call which tool, how to spend the user's balance safely, and how to read each answer. They work with any agent that reads SKILL.md files.

Skill

For

verifying-sales-leads

Dutch and Belgian leads and companies: register, VAT, mail server, IBAN, name sanctions

screening-crypto-wallets

Wallets and counterparty agents: OFAC SDN address list, on-chain risk, ERC-8004 identity

paying-limitguard-with-x402

Agents without an API key: pay per call with x402 over HTTP or A2A, with a price ceiling

  • Claude Code (all three skills plus the MCP server, OAuth sign-in):

    /plugin marketplace add jwconsultancyteam/limitguard-mcp
    /plugin install limitguard@limitguard
  • Other agents: npx skills add jwconsultancyteam/limitguard-mcp, or copy a folder under skills/ into the agent's skills directory. Each folder works on its own.

Each skill's references/tools.md is generated from the served server card; do not edit it by hand.

Discovery Endpoints

The service publishes two tool cards, and they do not fully agree. Both list the same tools, taking the same required arguments, so a tools/call written against either one works, but the descriptions and the argument wording differ between them. The Tools table above and this repository's server.json are generated from the server card, which is the one to read when the two disagree. Reconciling them is the service's to fix.

Use Cases

  • Lead validation: check the company behind each lead (KVK or KBO register, EU VAT via VIES, sanctions lists and email domain) before it reaches a client, and get a verdict, a 0-100 lead score and flags (verify_lead).

  • Company checks: developers and AI agents verify a business entity before a deal or a payment (check_entity, get_risk_score), or build a per-entity report with every source's status (get_compliance_report).

  • Sanctions screening: screen a company or person name against the OFAC, EU and UN lists (sanctions_preview, sanctions_screen).

  • Agent-to-agent checks: check a counterparty agent's wallet and ERC-8004 identity before working with it (check_agent_wallet).

  • Wallet screening: screen a wallet address before an on-chain payment (verify_wallet).

Security

  • HTTPS with TLS 1.3

  • x402 payment protocol for per-call billing (no stored payment credentials)

  • Hosted in the EU (API and dashboard in the EU, database in Ireland); data minimisation

  • All tools are read-only (no data modification)

  • Rate limited per payment (abuse-proof)

FAQ

What is Limitguard? Limitguard checks the company, sales lead or crypto wallet behind a deal before you call, sign or pay. It reads official sources (the KVK and KBO business registers, EU VAT through VIES, the OFAC, EU and UN sanctions lists and public blockchain data for wallets) and answers with what it found, where and when.

How is it priced? Per check, with no subscription for API keys or x402. An API key pays the account price: lead verify $0.27, company check $1.05 ($0.11 from cache when available), risk score $0.90, KYB check $1.50, sanctions screen $0.11, wallet screen $0.11, agent wallet check $0.75, company report $1.85. An x402 payment pays the lower agent price: lead verify $0.10, company check $0.29, risk score $0.25, KYB check $0.29, sanctions screen $0.005, wallet screen $0.005, agent wallet check $0.005, company report $0.55 (see Agent prices (x402)). Free: the name sanctions preview, the wallet sanctions check and your own stored trust score. A check that fails is not charged. Live prices: /.well-known/x402.json.

How do I connect it to Claude, Cursor or another MCP client? Add https://api.limitguard.ai/mcp with your API key in the header Authorization: Bearer lg_live_... (a free key: see Authentication). In Claude you can instead add https://api.limitguard.ai/mcp-oauth as a custom connector and sign in with your Limitguard account; paid checks are then taken from your workspace credit.

Can an AI agent pay without an account? Yes. Over REST or A2A an unpaid call returns HTTP 402 with the price. The agent signs a USDC payment on Base or Solana (x402), sends it with the call and gets the answer with a receipt. No account or API key is needed.

Which countries and chains does it cover? Full business register coverage for the Netherlands (KVK) and Belgium (KBO), EU VAT numbers through VIES, worldwide sanctions lists (OFAC, EU and UN) and crypto wallets on Base and Solana.

License

MIT

Available Tools

10 tools
check_agent_walletA
Read-only
Inspect

Check a counterparty agent's EVM wallet in one call: OFAC SDN digital-currency address list match, Base USDC and ETH balance, ERC-8004 identity registration (and, given an agent id, that agent's owner and payment wallet) and open ERC-8004 feedback, which is not scored. $0.75.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNoOptional website domain the agent gives for itself (e.g. example.com)
walletYesEVM wallet address (0x + 40 hex characters)
agent_idNoOptional ERC-8004 agentId (decimal) the wallet claims

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, non-destructive, open-world behavior, so the bar is lower; the description still adds real context by disclosing the $0.75 per-call cost and noting that open ERC-8004 feedback is returned but not scored. It does not say what happens when a wallet is unregistered or has no sanctions match, which would round this out.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence that front-loads the core action and cost-conscious detail, with every clause mapping to an actual returned check. The long parenthetical nesting makes it slightly harder to scan, but nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 so by enumerating all four result components plus pricing. Missing only edge-case behavior (invalid/unregistered wallet, partial results), which is minor for a read-only lookup.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; however the description goes beyond the schema by explaining what agent_id actually unlocks (that agent's owner and payment wallet), which the schema does not state. The optional 'domain' parameter is never mentioned, leaving one small gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Check') plus the exact resource ('a counterparty agent's EVM wallet') and enumerates the four sub-checks performed, which is far more informative than a generic 'verify' tool. It does not explicitly distinguish itself from close siblings like verify_wallet or sanctions_screen/wallet_sanctions_preview, so an agent must infer the composite nature of this call.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'counterparty agent's EVM wallet' implies the scenario (vetting an agent you may transact with), but there is no explicit when-to-use, when-not-to-use, or named alternative among the many overlapping sibling tools. Usage must be inferred from the enumerated checks rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_entityA
Read-only
Inspect

Company check on a business: sanctions screening and country risk, the Dutch KVK register for an NL company, and the website domain when you send it. Returns trust_score (0-100, 100 = best), trust_level (high means low risk), cluster, recommendation, confidence, top_factors and sources_checked.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNoOptional company website domain
countryYesISO 3166-1 alpha-2 country code
kvk_numberNoOptional Dutch KVK number (8 digits)
entity_nameYesFull legal name of the entity

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, openWorld, non-idempotent, non-destructive, so the safety profile is covered. The description adds genuinely useful context the annotations cannot carry: which registries and screening sources are queried, and how to read the output flags ('trust_score 0-100, 100 = best', 'trust_level high means low risk'). It stops short of disclosing latency, cost, coverage limits, or why the call is non-idempotent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with what is checked and followed by what comes back, with no filler or repetition of the title. The output list is dense but each clause adds a distinct fact about coverage or return values.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly assumes the burden of naming the return keys (trust_score, trust_level, cluster, recommendation, confidence, top_factors, sources_checked) and explaining the two that would otherwise be ambiguous. The remaining gap is routing completeness — it never states when this beats get_trust_score or sanctions_screen for the same entity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters and the baseline is 3. The description only marginally extends this by tying the KVK register to NL companies and flagging the domain as conditional ('when you send it'); entity_name and country get no extra meaning beyond their schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Company check on a business') and enumerates the exact data sources consulted (sanctions screening, country risk, Dutch KVK register, website domain). That implicitly separates it from the wallet-oriented siblings (verify_wallet, check_agent_wallet), but it never explicitly positions itself against close cohorts like get_trust_score, sanctions_screen, or get_risk_score, which also return risk/trust signals.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use, when-not-to-use, or alternative-routing guidance despite nine siblings with overlapping risk/trust semantics. The only conditional language, 'the website domain when you send it', describes an optional parameter rather than a usage condition, and nothing tells the agent which tool to pick for a wallet versus an entity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_compliance_reportBInspect

Per-entity report built from one real check: registry identity, sanctions and PEP screens, domain signals, risk score with the rules that fired, correlations, every finding as a ranked action, a per-source status table (ok / unavailable / error) and a report hash.

ParametersJSON Schema
NameRequiredDescriptionDefault
ibanNoOptional IBAN (never stored raw)
domainNoOptional company website domain
countryNoISO 3166-1 alpha-2 country code
check_idNoId of a check from an earlier report, instead of identifiers
cbe_numberNoOptional Belgian CBE number (0XXX.XXX.XXX or 10 digits)
kvk_numberNoOptional Dutch KVK number (8 digits)
vat_numberNoOptional EU VAT number
entity_nameNoFull legal name (with country; omit when sending check_id)
wallet_chainNoOptional chain for wallet_address (eth, base, btc, sol, ...)
wallet_addressNoOptional crypto wallet address (format check only)

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false, idempotentHint=false and openWorldHint=true, and 'built from one real check' plus the per-source ok/unavailable/error table add real context: this performs an actual external check that can partially fail. It still does not explain the cost/side-effect implied by readOnlyHint=false, nor whether a report is persisted or reusable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the resource and scope, then lists report sections compactly. It is dense but each clause enumerates a distinct output component, which earns its place given there is no output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, enumerating the report contents (identity, screens, risk score with fired rules, ranked findings, source status table, hash) is genuinely necessary and is done thoroughly. What is missing is operational context: when to use it versus sibling checks and what the non-read-only, non-idempotent behavior implies.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% across all 10 parameters, so the schema already documents identifiers, formats and the check_id alternative. The description adds no parameter-level meaning beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource ('Per-entity report') and enumerates exactly what the report contains, so an agent knows this produces a comprehensive per-entity artifact rather than a single score. However, it never explicitly contrasts itself with siblings like check_entity, get_risk_score, or sanctions_screen, which it partly subsumes, so the agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of alternatives among the many overlapping siblings (check_entity, get_risk_score, sanctions_screen). The phrase 'built from one real check' hints at a trigger but never says when an agent should pick this over a cheaper single-purpose tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_risk_scoreA
Read-only
Inspect

Quick risk score from sanctions screening and country risk only, without the register or domain lookups of check_entity. Returns risk_score (0-100, 100 = riskiest), risk_level (high means high risk, the reverse of check_entity's trust_level), sanctions_match and fatf_status; no recommendation or factors.

ParametersJSON Schema
NameRequiredDescriptionDefault
countryYesISO 3166-1 alpha-2 country code
entity_nameYesFull legal name of the entity

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations (readOnlyHint/openWorldHint) by disclosing the exact data sources used, the fields returned, and critically that risk_level polarity is inverted relative to check_entity's trust_level — a subtlety that would otherwise cause misinterpretation. It also states what is deliberately absent (recommendation, factors).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences, front-loaded with the scope boundary and the differing-from-sibling caveat. Every clause conveys load-bearing information (scope, return fields, polarity warning, exclusions) with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema available, the description compensates by enumerating the return fields and their meaning. Combined with the scope restriction and the polarity warning, an agent has everything needed to call and interpret this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (country as ISO 3166-1 alpha-2, entity_name as full legal name), so the schema already carries parameter meaning. The description adds no format or constraint detail beyond that, which matches the baseline of 3 when structured data does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('risk score from sanctions screening and country risk') and immediately bounds the scope against a named sibling ('without the register or domain lookups of check_entity'). An agent can distinguish it from check_entity, get_trust_score and sanctions_preview without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'without the register or domain lookups of check_entity' implicitly tells the agent to pick this tool when the lighter sanctions+country check suffices, and names the alternative. It stops short of an explicit 'use this when / avoid this when' statement or cost/latency rationale, so it is clear but not fully prescriptive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_trust_scoreA
Read-only
Inspect

Look up your own most recent trust score for an entity you checked before, from your stored checks: score, level, when, which product, trend and how many checks are on record. Runs no new check and calls no data source. Free ($0).

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYesEntity name, as sent to check_entity

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint, openWorldHint false, destructiveHint false), it adds that no new check runs, no data source is called, and the operation is free ($0). It also lists the returned fields, which matters since no output schema exists, though it does not cover error cases such as having no stored check.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three front-loaded sentences with zero waste: purpose and scope first, then the no-new-check constraint, then cost. The field list is compact and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only lookup with full schema coverage and annotations, the description covers purpose, constraints, cost, and return fields (necessary because no output schema exists). Nothing critical for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single entity_id parameter is already documented as 'Entity name, as sent to check_entity.' The description reinforces that the entity must have been checked before, but adds no syntax or format detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (look up), resource (your own most recent trust score), and scope (for an entity you checked before, from your stored checks). It distinguishes itself from sibling tools like check_entity by explicitly noting it 'Runs no new check and calls no data source.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly states the usage context: only for entities previously checked, pulling from stored checks. It also implies when not to use it by noting no new check runs, but it never names check_entity or another alternative for fresh checks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sanctions_previewA
Read-only
Inspect

Free yes/no sanctions preview against the local OFAC SDN, EU and UN lists. Returns possible_match, lists_checked, list_dates and list_note only, never an entry. 10 per caller per UTC day.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCompany or person name to screen
countryNoOptional ISO 3166-1 alpha-2 country code (orders matches, never excludes one)

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely new behavioral context: it enumerates the exact return fields, states it never returns an entry, notes screening is against *local* lists, and publishes a rate limit of 10 per caller per UTC day — all things annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with zero filler; the core purpose and the free/preview constraint are front-loaded, and the return-field list and rate limit follow in descending order of importance. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description carries the return burden and does so by naming the four fields returned. What remains unexplained is the semantics of the fields (e.g. what list_note contains) and what an agent should do on a positive possible_match; these gaps are minor for a preview tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (name, country) are already documented, including the important note that country only orders matches and never excludes one. The description adds no syntax or format detail beyond the schema, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (yes/no preview) and resource (local OFAC SDN, EU and UN sanction lists), and the phrase 'never an entry' signals it differs from a full screening tool. It is clear without opening the schema, but it never names the sibling sanctions_screen or wallet_sanctions_preview, so the differentiation remains implicit rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Free yes/no preview' framing plus the 10/caller/day cap implies this is the cheap first-pass check and that a heavier tool is needed for actual entries, but no alternative is named and no when-not-to-use condition is stated. Usage is inferable but not spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sanctions_screenA
Read-only
Inspect

Sanctions screen against the local OFAC SDN, EU and UN lists: matched entries with list, entry id, programmes, countries, listing date and match score. A name match is not a determination.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCompany or person name to screen
countryNoOptional ISO 3166-1 alpha-2 country code (orders matches, never excludes one)

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=true), so the bar is lower. The description still adds real value by naming the specific list sources screened and by including the 'a name match is not a determination' disclaimer, which shapes how an agent should interpret a hit. It omits any mention of match-score thresholds or how openWorld access affects latency/results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with what is screened and what is returned; the caveat comes last where it belongs. The field enumeration in sentence one is dense but each item earns its place given there is no output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully compensates by listing the returned fields (list, entry id, programmes, countries, listing date, match score). The main remaining gap is that 'match score' is not explained (scale or threshold), which an agent would need to interpret results correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already explains the non-obvious behavior of country ('orders matches, never excludes one'). The description adds nothing about parameters, so the baseline of 3 applies when the schema does all the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb (screen) and resource (sanctions lists: OFAC SDN, EU, UN) and even enumerates the returned fields, so the purpose is unambiguous. However, it never differentiates itself from the closely named siblings sanctions_preview and wallet_sanctions_preview, so an agent cannot tell them apart from the text alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus sanctions_preview, wallet_sanctions_preview, or check_entity. The only guidance-like sentence, 'A name match is not a determination,' is an interpretive caveat about results, not usage direction, leaving the agent to infer selection context from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_leadA
Read-only
Inspect

Verify a NL/BE sales lead against the registers in one call: real and active, VAT, mail server, IBAN, sanctions; a 0-100 lead score. $0.27.

ParametersJSON Schema
NameRequiredDescriptionDefault
ibanNoIBAN the lead gave; only country, bank, BIC and last 4 are returned
nameNoCompany name as the lead gave it (NL without a number)
emailNoContact email; only its domain is checked
phoneNoPhone number the lead gave; compared with the numbers the company publishes, never echoed. Rejected until website phone lookup is switched on
domainNoCompany website domain
addressNo{street, house_number, postcode, city} the lead gave
countryYesNL (KVK) or BE (KBO)
vat_numberNoEU VAT number, checked with VIES
target_sizeNoIdeal-customer employee range {min, max}, both inclusive; information only
company_numberNo8-digit KVK number or 10-digit KBO/CBE number
target_industriesNoIdeal-customer industries: SBI/NACE code prefixes ("62") or whole words; information only

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnlyHint=true, openWorldHint=true, destructiveHint=false), so the bar is lower. The description adds genuinely useful context beyond them: the $0.27 cost, that it hits external registers, and the composite 0-100 output. It stops short of disclosing latency or what a partial/failed match returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence that front-loads the scope and enumerates the checks without waste. No filler, nothing repeated from annotations or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter tool with nested objects and no output schema, the description names the output (0-100 lead score) and the verification domains, which is what an agent needs at selection time. Missing only edge-case/failure behavior, which is minor given the rich schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and each parameter (IBAN partial return, email domain-only, phone rejection, VAT/VIES) is already well documented in the schema. The description adds no parameter-level syntax or format guidance beyond what is structured, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb (Verify) and resource (NL/BE sales lead) and enumerates the five checks performed plus the 0-100 lead score output. It differentiates by region and 'sales lead' framing, though it never names which sibling (check_entity, sanctions_screen) it supersedes despite overlapping on sanctions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'in one call' implies this consolidates multiple checks and is preferable to calling several sibling tools separately, which is useful implied guidance. There is no explicit when-to-use/when-not or prerequisite statement, so an agent must infer the routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_walletA
Read-only
Inspect

Screen a wallet: OFAC SDN address match, on-chain signals (contract check, native and USDC balance, transaction count, first seen on Base) and named risk rules with up to 3 advice items. On Base, also reports any ERC-8004 agent the wallet owns and its open on-chain reputation as descriptive signals, never scored. $0.11. Supports EVM and Solana addresses.

ParametersJSON Schema
NameRequiredDescriptionDefault
chain_idNoCAIP-2 chain ID (default: eip155:8453 for Base); base, eth, solana, btc also accepted
wallet_addressYesBlockchain wallet address

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds real context beyond that: a $0.11 cost, that agent reputation signals are descriptive and 'never scored', that advice is capped at 3 items, and that ERC-8004/agent reporting only applies on Base. It omits that results are time-sensitive (idempotentHint=false), which would be useful for a screening tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core verb and result composition, then layered detail. Every sentence carries information (signal list, scoring caveat, price, address support), though the on-chain signal enumeration is dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description must convey what is returned, and it does so thoroughly: the signal categories, the advice-item cap, the descriptive-only agent reputation, and chain coverage. The main omission is any note that results change over time, but overall it is sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (chain_id documents CAIP-2 format and defaults, wallet_address is documented), so the schema carries the parameter burden and baseline is 3. The description adds only light context — 'Supports EVM and Solana addresses' and Base-specific behavior — without new syntax or format detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb (screen) and resource (wallet) and enumerates exactly which signals are produced (OFAC SDN match, on-chain signals, named risk rules, advice items), so the agent knows precisely what the tool yields. It does not, however, name or contrast itself with the heavily overlapping siblings (sanctions_screen, wallet_sanctions_preview, check_agent_wallet), so sibling differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance, and no alternative is named despite several siblings that also screen wallets for sanctions/risk. The mention of EVM and Solana support and Base-specific behavior implies scope but does not route the agent between this tool and its near-duplicates.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wallet_sanctions_previewA
Read-only
Inspect

Free yes/no check of a wallet address against the OFAC SDN list: sanctioned, lists, the list date and its freshness, no programmes or entry ids. 10 per caller per UTC day, separate from sanctions_preview. The full wallet screen is verify_wallet ($0.11).

ParametersJSON Schema
NameRequiredDescriptionDefault
chain_idNoCAIP-2 chain ID (default: eip155:8453 for Base); base, eth, solana, btc also accepted
wallet_addressYesBlockchain wallet address

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, destructiveHint=false), so the bar is lower; the description adds real value on top with a precise rate limit ('10 per caller per UTC day'), the exact fields returned and withheld, and the cost of the deeper alternative. It stops short of describing failure/latency behavior or what a non-match response looks like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Compressed into two sentences with the core purpose front-loaded and no filler. The middle clause ('sanctioned, lists, the list date and its freshness') is telegraphic and slightly strained to parse, which costs a point, but overall density is high and every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by enumerating the returned fields and exclusions, plus rate limits and the paid alternative. An agent has enough to call it correctly and interpret the result, though the handling of the optional chain_id default in a sanctions context is left entirely to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (wallet_address, chain_id) are documented in the schema, including CAIP-2 format and accepted chains, so the description need not repeat them. It adds no parameter-level meaning beyond the schema, which is the baseline-3 case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (yes/no check of a wallet address against the OFAC SDN list) and explicitly scopes the output fields ('sanctioned, lists, the list date and its freshness') while naming what is excluded ('no programmes or entry ids'). It also distinguishes itself from siblings by flagging 'separate from sanctions_preview' and pointing to verify_wallet for the full screen.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete routing context: free tier, 10 per caller per UTC day, and an explicit alternative ('The full wallet screen is verify_wallet ($0.11)') so the agent can trade cost against depth. It doesn't state an explicit when-not-to-use condition or the quota interaction with sanctions_preview beyond noting they are separate.

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. 10 tool updatesv2.11.9
    • First observedcheck_agent_wallet
    • First observedcheck_entity
    • First observedget_compliance_report
    • First observedget_risk_score
    • First observedget_trust_score
    • First observedsanctions_preview
    • First observedsanctions_screen
    • First observedverify_lead
    • First observedverify_wallet
    • First observedwallet_sanctions_preview

TDQS

A3.7/5.0

Scored across 10 tools

Disambiguation3/5

The set has several clusters of overlapping tools: check_entity vs get_risk_score vs get_compliance_report vs get_trust_score all serve entity risk, and verify_wallet vs wallet_sanctions_preview vs check_agent_wallet all screen wallets, with sanctions_preview/sanctions_screen/wallet_sanctions_preview forming a third cluster. The descriptions do a good job cross-referencing depth and pricing to differentiate them, but the semantic inversion between check_entity's trust_level (high=low risk) and get_risk_score's risk_level (high=high risk) is a genuine misselection trap.

Naming Consistency4/5

Most names follow a verb_noun pattern (check_entity, get_trust_score, verify_wallet, get_compliance_report, verify_lead). Verb choice varies across synonyms (check_ vs get_ vs verify_) and the three sanctions_* tools drop the verb entirely, which is a minor deviation rather than a break in convention.

Tool Count5/5

Ten tools is well-scoped for a screening service, and each tool occupies a distinct niche defined by target (entity/wallet/agent/lead), depth (preview/full/report) and cost. Nothing feels like filler or a duplicate entry.

Completeness4/5

The surface covers entity checks, quick risk scoring, full sanctions screening, wallets, agent wallets, compliance reporting, stored-score retrieval and lead verification—broad lifecycle coverage for a risk-screening domain. Gaps like ongoing monitoring, PEP-only screens or bulk/batch checks exist but are minor workarounds.

Maintenance

ActivityActive
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Provides AI agents with compliance screening (OFAC sanctions, risk scoring, Know-Your-Agent) plus disposable email and SMS verification for OTPs, accessible via MCP tools, HTTP API, and CLI.
    10
    2
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    eu-verify lets AI agents verify any European business partner: company existence (official French SIREN registry), insolvency records (BODACC), EU VAT validation before invoicing (VIES), SIRET/IBAN/LEI checks, address and email verification, French business-day deadlines and EU public tenders. 10 paid MCP tools + a free catalog tool, plus 81 HTTP endpoints. Each call costs $0.001-$0.01 in USDC on
    1
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Screens 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.
    -