Skip to content

Limitguard Lead Verification

by api.limitguard.ai · remote · no sign-in to list tools · v2.11.9 · published by ai.limitguard.api

Lead validation over MCP: KVK/KBO register, EU VAT, sanctions and email checks with sources.

Changes · 6

10 tools: 6 change things and 4 only read.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http limitguard https://api.limitguard.ai/mcp --header 'Authorization: <your-authorization>'

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The server marks "get_compliance_report" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The name "get_compliance_report" says "get": a word for reading.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

10 tools

Changes things 6Claude Code: ask
  • check_agent_walletCheck 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…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.005 by x402, $0.75 with an API key. Returns verdict (block, review or no_findings) with verdict_reasons, the components that ran and those that did not (with a reason), and sanctions, balance, identity, reputation, wallet_risk and domain (when a domain is given, else not_requested), each with its own status (ok, unavailable or error). Reputation and domain are descriptive only and never change the verdict. Base only; EVM addresses only. Args: wallet: EVM wallet address (0x + 40 hex characters) agent_id: Optional ERC-8004 agentId (decimal) the wallet claims domain: Optional website domain the agent gives for itself (e.g. example.com)

    Annotations the server declares

    • title: Check agent wallet
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • check_entityCompany check via the Limitguard API.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Company check via the Limitguard API. 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. Args: entity_name: Full legal name of the entity country: ISO 3166-1 alpha-2 country code (e.g., NL, BE, DE) kvk_number: Optional Dutch KVK registration number (8 digits) domain: Optional company website domain

    Annotations the server declares

    • title: Check entity trust
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • get_compliance_reportPer-entity report built from one real check.1 finding

    Why it is in this group

    • The name "get_compliance_report" says "get": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "get_compliance_report" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The name "get_compliance_report" says "get": a word for reading.

      What this check looks for
    Description, as the server wrote it
    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. Args: entity_name: Full legal name (with country; omit when sending check_id) country: ISO 3166-1 alpha-2 country code kvk_number: Optional Dutch KVK number (8 digits) cbe_number: Optional Belgian CBE number (0XXX.XXX.XXX or 10 digits) vat_number: Optional EU VAT number domain: Optional company website domain iban: Optional IBAN (never stored raw) wallet_address: Optional crypto wallet address (format check only) wallet_chain: Optional chain for wallet_address (eth, base, btc, sol, ...) check_id: Id of a check from an earlier report, instead of identifiers

    Annotations the server declares

    • title: Get compliance report
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • sanctions_screenSanctions screen against the local OFAC SDN, EU and UN lists: matched entries.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Sanctions screen against the local OFAC SDN, EU and UN lists: matched entries. Each match carries its list, entry id, entry type, programmes, countries, listing date and match score (exact normalised or word-order-insensitive name match only). A name match is not a determination. Rejected calls are not charged. Args: name: Company or person name to screen country: Optional ISO 3166-1 alpha-2 country code (orders matches, never excludes one)

    Annotations the server declares

    • title: Sanctions screen
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • verify_leadVerify a NL/BE sales lead against the registers in one call: real and active, VAT, mail server, IBAN, sanctions; a 0-100 lead score.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.10 by x402, $0.27 with an API key. Returns verdict (real_active, real_inactive, not_found, ambiguous, unverifiable or sanctioned), lead_score, the company as registered, and the vat, iban, sanctions and email checks, with flags and one finding per flag or mismatch, a dormant-shell score and, when a target is given, the ICP fit (information only). An input not given is not checked and never counts against the lead. The IBAN account holder is not checked. BE needs company_number. Rejected calls are not charged. Args: country: NL (KVK) or BE (KBO) company_number: 8-digit KVK number or 10-digit KBO/CBE number name: Company name as the lead gave it (NL without a number) vat_number: EU VAT number, checked with VIES email: Contact email; only its domain is checked domain: Company website domain address: {street, house_number, postcode, city} the lead gave iban: IBAN the lead gave; only country, bank, BIC and last 4 are returned phone: Phone number the lead gave; compared with the numbers the company publishes, never echoed. Rejected until website phone lookup is switched on target_industries: Ideal-customer industries: SBI/NACE code prefixes ("62") or whole words; information only target_size: Ideal-customer employee range {min, max}, both inclusive; information only

    Annotations the server declares

    • title: Verify a sales lead
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • verify_walletScreen 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 …No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.005 by x402, $0.11 with an API key. Returns risk_score, risk_level, sanctions (hit, lists, as_of), signals with their source, the names of signals that could not be read (unavailable), rules_fired, advice and linked_entities (entities you checked that were linked to this wallet). On Base, also erc8004_agent_ids and erc8004_reputation (open ERC-8004 feedback, descriptive only -- never folded into risk_score or advice). Accepts EVM (0x...) and Solana (base58) addresses. The sanctions match alone is free: the wallet_sanctions_preview tool. Rejected calls are not charged. Args: wallet_address: Blockchain wallet address chain_id: CAIP-2 chain ID (default: eip155:8453 for Base); base, eth, solana, btc also accepted

    Annotations the server declares

    • title: Screen wallet
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
Only reads 4Claude Code: allow
  • get_risk_scoreQuick risk score from sanctions screening and country risk only.No findings

    Why it is in this group

    • The name "get_risk_score" says "get": a word for reading.
    Description, as the server wrote it
    Quick risk score from sanctions screening and country risk only. Faster than check_entity: no register or domain lookup. Use when you only need basic risk evaluation. 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. Args: entity_name: Full legal name of the entity country: ISO 3166-1 alpha-2 country code

    Annotations the server declares

    • title: Get risk score
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • get_trust_scoreLook 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.No findings

    Why it is in this group

    • The name "get_trust_score" says "get": a word for reading.
    Description, as the server wrote it
    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). Returns status "found" with trust_score, trust_level, checked_at, source_product, trend and checks_on_record, or status "not_found" with a next_step. Only checks made with your key (via check_entity, or REST entity/KYB checks) are read; another key's or workspace's never are (#946). Signed in with OAuth, your workspace's checks are read instead (#1062). Args: entity_id: The entity name, as you sent it to check_entity

    Annotations the server declares

    • title: Get stored trust score
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • sanctions_previewFree yes/no sanctions preview against the local OFAC SDN, EU and UN lists.No findings

    Why it is in this group

    • The name "sanctions_preview" says "preview": a word for reading.
    Description, as the server wrote it
    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, shared with POST /v1/sanctions/preview, and key holders share a ceiling of 50 per IP; the matched entries are the sanctions_screen tool. Free ($0). Args: name: Company or person name to screen country: Optional ISO 3166-1 alpha-2 country code (orders matches, never excludes one)

    Annotations the server declares

    • title: Sanctions preview
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • wallet_sanctions_previewFree yes/no check of a wallet address against the OFAC SDN list.No findings

    Why it is in this group

    • The name "wallet_sanctions_preview" says "preview": a word for reading.
    Description, as the server wrote it
    Free yes/no check of a wallet address against the OFAC SDN list. Returns wallet_address (canonical), chain_id, sanctioned, lists, as_of (the list's publication date), status (ok or stale), source and upgrade, which names the full wallet screen (the verify_wallet tool, $0.005 by x402, $0.11 with an API key: balances, wallet age and activity, contract and delegation checks, a risk score with rules and advice, linked entities, ERC-8004 identity and reputation). 10 per caller per UTC day, shared with POST /v1/sanctions/wallet and separate from the name preview; key holders share a ceiling of 50 per IP. Free ($0). Args: wallet_address: Blockchain wallet address chain_id: CAIP-2 chain ID (default: eip155:8453 for Base); base, eth, solana, btc also accepted

    Annotations the server declares

    • title: Wallet sanctions check
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 2.11.9. Values in angle brackets are yours to fill in.

claude mcp add --transport http limitguard https://api.limitguard.ai/mcp --header 'Authorization: <your-authorization>'

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__limitguard__get_trust_score",
      "mcp__limitguard__get_risk_score",
      "mcp__limitguard__sanctions_preview",
      "mcp__limitguard__wallet_sanctions_preview"
    ],
    "ask": [
      "mcp__limitguard__check_entity",
      "mcp__limitguard__verify_wallet",
      "mcp__limitguard__get_compliance_report",
      "mcp__limitguard__sanctions_screen",
      "mcp__limitguard__check_agent_wallet",
      "mcp__limitguard__verify_lead"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as limitguard. Review it before you use it.