addrbookFor publishers
← The evidence ledger

Evidence row 3365652

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 0d6669d1-3cfe-43ef-a0bd-70ae83129a85
Recorded
Previous row
#2099580
Body SHA-256
13b3c99ccd580c329195bfb2e2dfe7a8851ca3bd4423cf5295e352ac08cd3471
Leaf
0xe1312cd6e4b380bdb4b4d108173f24843d964dc82da4d3a5524c4ff68858a51a

What was observed

{
  "count": 65,
  "tools": [
    {
      "description": "Use when a supplier (or someone posing as one) asks to change bank details or pay to a new account, the biggest single loss in accounts payable. Send text (the whole email with its From: line), or sender and iban; add website (the supplier's real domain), known_iban (the account you pay now) and name plus country to also run the supplier invoice check. The text is not stored. Input: text, or sender + iban; website, known_iban, name, country. Costs 0.06 USDC via x402, or 30 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "country": {
            "description": "Supplier ISO country",
            "type": "string"
          },
          "iban": {
            "description": "The new IBAN",
            "type": "string"
          },
          "known_iban": {
            "description": "The account you pay now",
            "type": "string"
          },
          "name": {
            "description": "Supplier name: also runs the invoice check",
            "type": "string"
          },
          "sender": {
            "description": "Or the sender's email address",
            "type": "string"
          },
          "text": {
            "description": "The whole email, with its From: line",
            "type": "string"
          },
          "website": {
            "description": "The supplier's real website",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "bank_change_check"
    },
    {
      "description": "Returns a secure payment link (iDEAL or card, via Dodo Payments, EUR 2.95 incl. VAT) for the full English report on a Dutch address: crime vs national rate, noise and air quality, flood probability, ground height, monuments, permits, amenities, liveability breakdown and home-value trend. The report opens right after payment. Only use when the user wants the full report or asks to buy it.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "addition": {
            "description": "Optional house number addition",
            "type": "string"
          },
          "house_letter": {
            "description": "Optional house letter, e.g. A",
            "type": "string"
          },
          "house_number": {
            "description": "House number, e.g. 1",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991,
            "type": "integer"
          },
          "postcode": {
            "description": "Dutch postcode, e.g. 3511LX",
            "type": "string"
          },
          "q": {
            "description": "Alternative to postcode: free-text address, e.g. 'Visschersplein 1 Utrecht'",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "buy_full_address_report"
    },
    {
      "description": "Returns a secure payment link (iDEAL or card, via Dodo Payments, EUR 1.95 incl. VAT) for the full English vehicle report: APK inspection history with defects, recall details, import/taxi/export history, specs and catalogue price. Only use when the user wants the full report or asks to buy it.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "licence_plate": {
            "description": "Dutch licence plate, e.g. GT-722-F",
            "type": "string"
          }
        },
        "required": [
          "licence_plate"
        ],
        "type": "object"
      },
      "name": "buy_full_vehicle_report"
    },
    {
      "description": "Use when a Chinese supplier sends a photo of its business licence (营业执照), e.g. on Alibaba or 1688: reads the fields, validates the USCC checksum, flags an address province that differs from the code (edited licence) or a name that differs from your invoice, then screens the Chinese and English names against sanctions, the Entity List and UFLPA. Image not stored. Input: image_url, optional invoice_name. Costs 0.06 USDC via x402, or 30 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "image_url": {
            "description": "Public https link to the licence photo or scan",
            "type": "string"
          },
          "invoice_name": {
            "description": "Supplier name on your invoice, to compare",
            "type": "string"
          }
        },
        "required": [
          "image_url"
        ],
        "type": "object"
      },
      "name": "china_licence_check"
    },
    {
      "description": "Use this when the counterparty is a Chinese supplier you are about to pay or import from: checks the 18-character Unified Social Credit Code (checksum, authority, entity type, province; Xinjiang flagged) and screens the company against EU, UN, UK and US OFAC sanctions, BIS Entity List, Military End User list and DHS UFLPA list. Verdict pass, review or block_review with reasons. Does not query the Chinese register (GSXT). Input: name, uscc. Costs 0.03 USDC via x402, or 15 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "name": {
            "description": "Supplier name as on the invoice, Latin letters or Chinese characters",
            "type": "string"
          },
          "uscc": {
            "description": "18-character Unified Social Credit Code from the business licence",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "name": "china_supplier_check"
    },
    {
      "description": "Use this when you need full due diligence on a European company before a deal or large payment, beyond an existence check: registers in 10 countries plus GLEIF, directors, owners and parents screened for sanctions and PEP, VAT, Peppol, website, plus financial health (accounts on time, size, turnover, insolvency in GB, FR, NO, FI, NL). One verdict and a cite_as line. Input: name or id, best with country. Costs 0.15 USDC via x402, or 75 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "country": {
            "description": "ISO country, e.g. NO, GB, FR, NL",
            "type": "string"
          },
          "domain": {
            "description": "Company website",
            "type": "string"
          },
          "id": {
            "description": "Or a company number: LEI, UK company number, SIREN, Norwegian org number, etc.",
            "type": "string"
          },
          "kvk": {
            "description": "Dutch KvK number: adds a bankruptcy check",
            "type": "string"
          },
          "name": {
            "description": "Company name, e.g. Equinor",
            "type": "string"
          },
          "vat": {
            "description": "EU VAT number",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "company_dossier"
    },
    {
      "description": "Use to check if a European company is healthy before you deal with it: UK accounts overdue, size band and insolvency history; French headcount, turnover, net result and BODACC insolvency; Norwegian employees, bankruptcy, winding-up and filed accounts; Finnish bankruptcy and restructuring; Dutch insolvency with a KvK number. Verdict healthy, watch, distressed or limited_data. Costs 0.02 USDC via x402, or 10 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "country": {
            "description": "ISO country: GB, FR, NO and FI have full signals; NL with kvk",
            "type": "string"
          },
          "id": {
            "description": "Or a company number, e.g. SIREN 552032534",
            "type": "string"
          },
          "kvk": {
            "description": "Dutch KvK number: adds the insolvency register",
            "type": "string"
          },
          "name": {
            "description": "Company name, e.g. Danone",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "company_health"
    },
    {
      "description": "Use this when you only need to confirm a company exists and is active (the cheap first step before a dossier): registers GLEIF (worldwide), UK Companies House, Ireland CRO, Estonia, Belgium KBO, France SIRENE, Norway, Finland, Czechia, Slovakia and Poland (with bank accounts). Returns legal name, status, registry id, legal form, address, founding date and parent companies (GLEIF). Search by name or id. Costs 0.008 USDC via x402, or 4 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "country": {
            "description": "ISO country, e.g. GB, IE, EE, FR, NO, NL",
            "type": "string"
          },
          "id": {
            "description": "LEI, SIREN, Norwegian organisation number, UK company number, Irish CRO number or Estonian registry code",
            "type": "string"
          },
          "name": {
            "description": "Company name, e.g. ASML Holding",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "company_lookup"
    },
    {
      "description": "Use when you need to judge whether a website or email domain is trustworthy: registration date and domain age (RDAP), expiry, registrar, nameservers, email setup (MX, SPF, DMARC), disposable-email domains, and a low/medium/high risk with flags such as 'registered 4 days ago', a common sign of scam shops. Accepts a domain, URL or email. Costs 0.003 USDC via x402, or 2 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "domain": {
            "description": "Domain, URL or email address, e.g. example.nl",
            "type": "string"
          }
        },
        "required": [
          "domain"
        ],
        "type": "object"
      },
      "name": "domain_check"
    },
    {
      "description": "Use when you need to know if an email address is real and deliverable before signup, outreach or onboarding: syntax, live MX routing, 9,000+ disposable domains, role addresses, free providers, typo suggestions (gmial.com to gmail.com) and SPF/DMARC. One verdict: deliverable, risky or undeliverable. Costs 0.002 USDC via x402, or 1 credit of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "email": {
            "description": "Email address, e.g. jan@example.nl",
            "type": "string"
          }
        },
        "required": [
          "email"
        ],
        "type": "object"
      },
      "name": "email_verify"
    },
    {
      "description": "Use before onboarding, paying or contracting a European company: finds it in 10 official registers (GLEIF, UK, IE, FR, NO, FI, CZ, SK, EE, PL), screens it, its directors, owners and parent companies against EU, UN, UK and US sanctions and PEP, checks VAT and Peppol, flags new websites and Dutch bankruptcies. One verdict: pass, review, block_review or incomplete. Input: name or id, best with country; optional vat, domain, kvk. Costs 0.05 USDC via x402, or 25 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "country": {
            "description": "ISO country, e.g. NL, GB, IE, FR",
            "type": "string"
          },
          "domain": {
            "description": "Company website or email domain",
            "type": "string"
          },
          "id": {
            "description": "Or a company number: LEI, UK company number, Irish CRO, SIREN, etc.",
            "type": "string"
          },
          "kvk": {
            "description": "Dutch KvK number: adds a bankruptcy check",
            "type": "string"
          },
          "name": {
            "description": "Company name, e.g. ASML Holding",
            "type": "string"
          },
          "vat": {
            "description": "EU VAT number: checked in VIES and matched to the registered name",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "eu_company_check"
    },
    {
      "description": "Use when you need to check an EU EORI customs number: live validation in the European Commission's EORI service, registered and valid or not, with the trader's name and address when published. All EU member states; GB numbers are not covered. Costs 0.003 USDC via x402, or 2 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "eori": {
            "description": "EORI number, e.g. IE6388047V",
            "type": "string"
          }
        },
        "required": [
          "eori"
        ],
        "type": "object"
      },
      "name": "eu_eori_check"
    },
    {
      "description": "Free. Use when the user needs an official euro exchange rate or a conversion for an invoice, contract or report: ECB euro reference rates (about 30 currencies), today or any working day in the last 90 days, with cross rates. Input: base (default EUR), symbols (e.g. USD,GBP), optional date YYYY-MM-DD and amount.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "amount": {
            "type": "string"
          },
          "base": {
            "type": "string"
          },
          "date": {
            "type": "string"
          },
          "symbols": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "eu_exchange_rates"
    },
    {
      "description": "Use before importing a product into the EU: checks the HS/CN code against CBAM Annex I and EUDR Annex I and says which applies, from when, and what the importer must do (CBAM declarant status and emissions data; EUDR due diligence statement with plot geolocation). No code? Send product and the likely 6-digit HS code is suggested (and marked as a suggestion). Input: hs or product, optional origin (ISO country) and tonnes_per_year. Costs 0.01 USDC via x402, or 5 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "hs": {
            "description": "HS or CN code, e.g. 720839",
            "type": "string"
          },
          "origin": {
            "description": "ISO country of origin, e.g. CN",
            "type": "string"
          },
          "product": {
            "description": "Or a product description",
            "type": "string"
          },
          "tonnes_per_year": {
            "description": "Yearly tonnes of CBAM goods you import",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "eu_import_rules"
    },
    {
      "description": "Free. Use when the user cites an EU regulation, directive or decision and you need its official title, date, whether it is still in force, and the EUR-Lex link to cite: by CELEX number (e.g. 32016R0679) or citation (e.g. Regulation (EU) 2016/679, Directive 2015/849).",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "celex": {
            "description": "CELEX number or a citation like 'Regulation (EU) 2016/679'",
            "type": "string"
          }
        },
        "required": [
          "celex"
        ],
        "type": "object"
      },
      "name": "eu_law_lookup"
    },
    {
      "description": "Use when screening a list of people or companies at once (up to 25 per call, 0.0012 USDC per name) against the EU, UN, UK and US OFAC sanctions lists. Fuzzy matching; per name a possible-match flag, top score and up to 3 scored matches with their lists. For customer bases, payouts and vendor lists. Costs 0.03 USDC via x402, or 15 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "names": {
            "description": "1 to 25 names separated by ';', e.g. 'Vladimir Putin; Factline'",
            "type": "string"
          },
          "type": {
            "enum": [
              "person",
              "entity"
            ],
            "type": "string"
          }
        },
        "required": [
          "names"
        ],
        "type": "object"
      },
      "name": "eu_sanctions_batch"
    },
    {
      "description": "Use when you must check whether a person or company is under sanctions: screens the name against the EU, UN, UK and US OFAC lists (25,000+ persons, companies and vessels with aliases, refreshed weekly). Fuzzy matching handles spelling, transliteration and word order; returns scored possible matches with lists, references and birth dates. Costs 0.005 USDC via x402, or 3 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "birth_year": {
            "description": "4-digit birth year",
            "type": "string"
          },
          "name": {
            "description": "Person or organisation name, e.g. 'Vladimir Putin'",
            "type": "string"
          },
          "type": {
            "enum": [
              "person",
              "entity"
            ],
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "name": "eu_sanctions_screen"
    },
    {
      "description": "Use before sending crypto to an address, or when asked if a wallet is sanctioned: checks Bitcoin, Ethereum/EVM, Tron, USDT, Litecoin, Monero and other addresses against the wallets on the US OFAC SDN list, refreshed weekly. Returns sanctioned true/false, currency, listed entity and programme. Costs 0.003 USDC via x402, or 2 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "address": {
            "description": "Crypto wallet address, e.g. 0x0330070fd38ec3bb94f58fa55d40368271e9e54a",
            "type": "string"
          },
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          }
        },
        "required": [
          "address"
        ],
        "type": "object"
      },
      "name": "eu_sanctions_wallet"
    },
    {
      "description": "Use when the user looks for public contracts to bid on: open tenders from TED, the EU's official journal, by country, CPV code, keywords, deadline and minimum value, with English titles, buyer, deadline and value. For the Netherlands it adds national below-threshold tenders from TenderNed, which TED does not have. Costs 0.005 USDC via x402, or 3 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "country": {
            "description": "Country code, e.g. NL, DE, or EU",
            "type": "string"
          },
          "cpv": {
            "description": "CPV codes, e.g. 72",
            "type": "string"
          },
          "deadline_within": {
            "type": "string"
          },
          "limit": {
            "type": "string"
          },
          "min_value": {
            "type": "string"
          },
          "q": {
            "description": "Keywords",
            "type": "string"
          }
        },
        "required": [
          "country"
        ],
        "type": "object"
      },
      "name": "eu_tenders_search"
    },
    {
      "description": "Use when the user gives an EU VAT number and you need to know if it is valid: live check in the European Commission's VIES service for all 27 member states plus Northern Ireland, with the registered company name and address where shared. Input: VAT number with country prefix, e.g. IE6388047V. Costs 0.003 USDC via x402, or 2 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "vat": {
            "description": "EU VAT number with country prefix, e.g. IE6388047V",
            "type": "string"
          }
        },
        "required": [
          "vat"
        ],
        "type": "object"
      },
      "name": "eu_vat_check"
    },
    {
      "description": "Free. Use when the user has a supplier's EUDR plot file for a due diligence statement (from 30 Dec 2026): checks [longitude, latitude] order, at least 6 decimals, a point only for plots up to 4 ha, closed and non-crossing polygons, plots inside the country of production, area per plot. Returns looks_valid, check_warnings or fix_needed. Input: geojson (the file as text), optional country (ISO) and commodity.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "commodity": {
            "description": "e.g. cocoa, wood, cattle",
            "type": "string"
          },
          "country": {
            "description": "ISO country of production, e.g. CI",
            "type": "string"
          },
          "geojson": {
            "description": "GeoJSON FeatureCollection, Feature or geometry, as text",
            "type": "string"
          }
        },
        "required": [
          "geojson"
        ],
        "type": "object"
      },
      "name": "eudr_geo_check"
    },
    {
      "description": "Free. Use when the user asks whether criminals can send mail as their firm or whether lookalike domains of it exist: DMARC and SPF status of the firm's domain and registered lookalike domains (typos, swapped letters). Input: domain.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "domain": {
            "description": "The firm's domain, e.g. example.nl",
            "type": "string"
          }
        },
        "required": [
          "domain"
        ],
        "type": "object"
      },
      "name": "firm_check"
    },
    {
      "description": "Free. Use when Factline's free calls for today are used up or the user wants more paid checks without a crypto wallet. Without an email it returns a starter key at once (100 credits, 14 days, no human step). With the user's work email it returns a trial key (2,000 credits a month, one per email); send email plus api_key to upgrade a starter key. Ask the user for the email; never invent one.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "A starter key to upgrade: send it with the email",
            "type": "string"
          },
          "email": {
            "description": "The user's work email (ask them; never invent one). Leave out for a starter key",
            "type": "string"
          },
          "name": {
            "description": "Person or company name",
            "type": "string"
          },
          "use_case": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "get_trial_key"
    },
    {
      "description": "Use when you need to check an IBAN before a payout or invoice: length per country, mod-97 checksum (catches typos), SEPA membership, and for Dutch IBANs the bank (ING, ABN AMRO, Rabobank, bunq...). Does not confirm the account holder. Costs 0.001 USDC via x402, or 1 credit of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "iban": {
            "description": "IBAN, e.g. NL91ABNA0417164300",
            "type": "string"
          }
        },
        "required": [
          "iban"
        ],
        "type": "object"
      },
      "name": "iban_check"
    },
    {
      "description": "Use this when onboarding a new customer, seller or business and you want one pass/review answer on the name plus their email, phone and VAT, not a company deep-dive: screens the name against EU, UN, UK and US sanctions and the PEP list, verifies email and phone, and checks an EU VAT number in VIES, all in parallel, with one verdict: pass, review, block_review or incomplete. Send any of name, email, phone, vat. Costs 0.01 USDC via x402, or 5 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "birth_year": {
            "type": "string"
          },
          "company": {
            "description": "Company name to verify",
            "type": "string"
          },
          "company_country": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "kvk": {
            "description": "Dutch KvK number: adds a bankruptcy check",
            "type": "string"
          },
          "name": {
            "description": "Person or company name",
            "type": "string"
          },
          "pep": {
            "description": "PEP check of a person name, default true",
            "enum": [
              "true",
              "false"
            ],
            "type": "string"
          },
          "phone": {
            "type": "string"
          },
          "type": {
            "enum": [
              "person",
              "entity"
            ],
            "type": "string"
          },
          "vat": {
            "description": "EU VAT number",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "kyc_check"
    },
    {
      "description": "Use right before an agent pays a payee it has not paid before: the reverse of the know-your-agent checks merchants run on agents. Send url (webshop or x402 endpoint), wallet (x402 payTo) or iban with name and country (a company); kind=shop|x402|company forces the route. Input: url, wallet or iban + name + country. Costs 0.03 USDC via x402, or 15 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "country": {
            "description": "ISO country (with iban)",
            "type": "string"
          },
          "iban": {
            "description": "IBAN of a company payee",
            "type": "string"
          },
          "kind": {
            "enum": [
              "shop",
              "x402",
              "company"
            ],
            "type": "string"
          },
          "name": {
            "description": "Company name (with iban)",
            "type": "string"
          },
          "url": {
            "description": "Webshop or x402 endpoint",
            "type": "string"
          },
          "wallet": {
            "description": "x402 payTo wallet",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "kyp_check"
    },
    {
      "description": "Free. Use before connecting to or installing an MCP server you have not used before, or to re-check one: connects once (no tool is called), scans tool descriptions for prompt-injection wording and invisible characters, lists tools that write, send, pay or run commands, checks the domain and publisher, and returns tools_sha256 (send it next time to catch a changed tool list). Decision allow, review or deny. Input: url, optional tools_sha256.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "tools_sha256": {
            "description": "Hash from an earlier check",
            "type": "string"
          },
          "url": {
            "description": "The MCP server's streamable HTTP endpoint",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "name": "mcp_server_check"
    },
    {
      "description": "Use when enriching a list of Dutch addresses (up to 10 per call, 0.0015 USDC each): official BAG address and coordinates, CBS neighbourhood, liveability percentile, crime per 1,000 residents vs national, average home value and optionally the energy label. Unfound addresses are flagged, not charged extra. Costs 0.015 USDC via x402, or 8 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "addresses": {
            "description": "1 to 10 addresses separated by ';', e.g. '3511LX 1; 2517AS 100'",
            "type": "string"
          },
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "include": {
            "description": "'energy_label' to add energy labels",
            "type": "string"
          }
        },
        "required": [
          "addresses"
        ],
        "type": "object"
      },
      "name": "nl_address_batch"
    },
    {
      "description": "Use when you need to check that a Dutch address exists or get its exact spelling and coordinates: official BAG address from postcode + house number or free text, latitude/longitude, BAG ids, municipality, province and CBS neighbourhood code. Cheap address validation for onboarding, delivery and CRM. Source: Kadaster BAG via PDOK. Costs 0.002 USDC via x402, or 1 credit of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "addition": {
            "description": "Optional house number addition",
            "type": "string"
          },
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "house_letter": {
            "description": "Optional house letter, e.g. A",
            "type": "string"
          },
          "house_number": {
            "description": "House number, e.g. 1",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991,
            "type": "integer"
          },
          "postcode": {
            "description": "Dutch postcode, e.g. 3511LX",
            "type": "string"
          },
          "q": {
            "description": "Alternative to postcode: free-text address, e.g. 'Visschersplein 1 Utrecht'",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "nl_address_lookup"
    },
    {
      "description": "Use when you have coordinates in the Netherlands and need the address: nearest official BAG address with distance in metres, postcode, city, municipality, province, BAG ids and CBS buurt and wijk codes, plus other nearby addresses. Input: WGS84 latitude and longitude. Source: Kadaster BAG via PDOK. Costs 0.002 USDC via x402, or 1 credit of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "lat": {
            "description": "Latitude, e.g. 52.0836",
            "type": "string"
          },
          "lon": {
            "description": "Longitude, e.g. 4.2919",
            "type": "string"
          }
        },
        "required": [
          "lat",
          "lon"
        ],
        "type": "object"
      },
      "name": "nl_address_reverse"
    },
    {
      "description": "Use when the user asks when a Dutch car's APK (MOT) expires or whether it is still valid: expiry date, days left and a status band (expired, due within 30 or 90 days, ok), with insurance and open-recall flags. Cheap enough to run daily for a fleet. Input: Dutch licence plate. Source: RDW. Costs 0.001 USDC via x402, or 1 credit of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "licence_plate": {
            "description": "Dutch licence plate, e.g. GT-722-F",
            "type": "string"
          }
        },
        "required": [
          "licence_plate"
        ],
        "type": "object"
      },
      "name": "nl_apk_alert"
    },
    {
      "description": "Free. Use when the user asks how reliable a car model is, or which used car to buy: facts for the model in the Netherlands from RDW data: APK (MOT) defect rate vs the average of all models, the 10 most common APK defects, recalls with component and risk, share with an open recall, share with an illogical (rolled-back) odometer, cars registered. Covers ~450 common passenger-car models.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "make": {
            "description": "Car make, e.g. Volkswagen",
            "type": "string"
          },
          "model": {
            "description": "Model, e.g. Golf",
            "type": "string"
          }
        },
        "required": [
          "make",
          "model"
        ],
        "type": "object"
      },
      "name": "nl_car_model"
    },
    {
      "description": "Use when the user asks whether a Dutch neighbourhood or postcode is safe: police-registered crime per 1,000 residents vs the national rate, split into burglary, bicycle theft, vehicle crime, violence and vandalism, with counts and a ratio. Input: Dutch postcode or CBS buurt code. Source: Politie open data, CBS. Costs 0.003 USDC via x402, or 2 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "code": {
            "description": "Alternative: CBS neighbourhood code, e.g. BU05182245",
            "type": "string"
          },
          "postcode": {
            "description": "Any Dutch postcode in the neighbourhood, e.g. 2517AS",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "nl_crime"
    },
    {
      "description": "Use when the user asks for the energy label of a Dutch home: the officially registered label (A++++ to G), registration and expiry date, building type and energy index, or a clear 'none registered'. Input: postcode + house number. Source: RVO EP-Online, the Dutch national register. Costs 0.005 USDC via x402, or 3 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "addition": {
            "description": "Optional house number addition",
            "type": "string"
          },
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "house_letter": {
            "description": "Optional house letter, e.g. A",
            "type": "string"
          },
          "house_number": {
            "description": "House number, e.g. 1",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991,
            "type": "integer"
          },
          "postcode": {
            "description": "Dutch postcode, e.g. 3511LX",
            "type": "string"
          },
          "q": {
            "description": "Alternative to postcode: free-text address, e.g. 'Visschersplein 1 Utrecht'",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "nl_energy_label"
    },
    {
      "description": "Use when the user asks if a Dutch address can flood: annual flood probability (any water, over 20, 50 and 200 cm) from Rijkswaterstaat LIWO, 2050 and 2100 climate scenarios, worst-case water depth and ground height vs sea level (AHN). Input: postcode + house number. Costs 0.004 USDC via x402, or 2 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "addition": {
            "description": "Optional house number addition",
            "type": "string"
          },
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "house_letter": {
            "description": "Optional house letter, e.g. A",
            "type": "string"
          },
          "house_number": {
            "description": "House number, e.g. 1",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991,
            "type": "integer"
          },
          "postcode": {
            "description": "Dutch postcode, e.g. 3511LX",
            "type": "string"
          },
          "q": {
            "description": "Alternative to postcode: free-text address, e.g. 'Visschersplein 1 Utrecht'",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "nl_flood_risk"
    },
    {
      "description": "Free. Use when the user mentions a Dutch address or asks about a home in the Netherlands: year built, floor area, use, neighbourhood residents and average home value, liveability percentile, in English. Accepts postcode + house number or free text. Sources: BAG, CBS, Leefbaarometer.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "addition": {
            "description": "Optional house number addition",
            "type": "string"
          },
          "house_letter": {
            "description": "Optional house letter, e.g. A",
            "type": "string"
          },
          "house_number": {
            "description": "House number, e.g. 1",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991,
            "type": "integer"
          },
          "postcode": {
            "description": "Dutch postcode, e.g. 3511LX",
            "type": "string"
          },
          "q": {
            "description": "Alternative to postcode: free-text address, e.g. 'Visschersplein 1 Utrecht'",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "nl_home_basic"
    },
    {
      "description": "Use when the user is choosing between 2 to 5 Dutch addresses: side-by-side liveability, crime, home values, floor area, year built, noise, air quality, ground height and distances to station, supermarket, school and GP, with the best address per metric and the full report for each. Input: addresses separated by ';'. Costs 0.08 USDC via x402, or 40 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "addresses": {
            "description": "2 to 5 Dutch addresses separated by ';', e.g. '3511LX 1; 2517AS 100'",
            "type": "string"
          },
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          }
        },
        "required": [
          "addresses"
        ],
        "type": "object"
      },
      "name": "nl_home_compare"
    },
    {
      "description": "Use when the user asks about a specific Dutch home or address before renting, buying or moving: full English report with year built, floor area, energy label, crime vs national rate, noise, air quality (NO2, PM2.5), ground height, monuments, permits, schools, 18 amenity distances, neighbourhood income and home values. Input: postcode + house number. Sources: Kadaster, CBS, Politie, RIVM, RVO. Costs 0.04 USDC via x402, or 20 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "addition": {
            "description": "Optional house number addition",
            "type": "string"
          },
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "house_letter": {
            "description": "Optional house letter, e.g. A",
            "type": "string"
          },
          "house_number": {
            "description": "House number, e.g. 1",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991,
            "type": "integer"
          },
          "postcode": {
            "description": "Dutch postcode, e.g. 3511LX",
            "type": "string"
          },
          "q": {
            "description": "Alternative to postcode: free-text address, e.g. 'Visschersplein 1 Utrecht'",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "nl_home_report"
    },
    {
      "description": "Use when the user asks what homes cost in a Dutch area: average home value (WOZ) in the neighbourhood with its trend, plus actual average sale prices per year in the municipality vs the national average. Context for an asking price, not a valuation of one home. Input: postcode or CBS buurt code. Source: CBS, Kadaster. Costs 0.003 USDC via x402, or 2 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "code": {
            "description": "Alternative: CBS neighbourhood code, e.g. BU05182245",
            "type": "string"
          },
          "postcode": {
            "description": "Any Dutch postcode in the neighbourhood, e.g. 2517AS",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "nl_house_prices"
    },
    {
      "description": "Use when you need to know if a Dutch company is bankrupt or in suspension of payments: live check in the Centraal Insolventieregister (Rechtspraak) with active and ended cases, court, case number, dates, administrator and claims deadline. Legal entities only. Input: KvK number or company name. Costs 0.01 USDC via x402, or 5 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "kvk": {
            "description": "8-digit KvK number",
            "type": "string"
          },
          "name": {
            "description": "Company name",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "nl_insolvency_check"
    },
    {
      "description": "Use when the user asks what a Dutch neighbourhood or postcode area is like: residents and age mix, housing and home values, household income, energy use, distances to 18 amenities, police-registered crime vs national rate and liveability score, in English. Input: any postcode or CBS buurt code. Sources: CBS, Politie, Leefbaarometer. Costs 0.01 USDC via x402, or 5 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "code": {
            "description": "Alternative: CBS neighbourhood code, e.g. BU05182245",
            "type": "string"
          },
          "postcode": {
            "description": "Any Dutch postcode in the neighbourhood, e.g. 2517AS",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "nl_neighbourhood"
    },
    {
      "description": "Free. Use when the user asks what a Dutch neighbourhood or postcode area is like, or whether it is safe: headline facts for a postcode: residents, average home value (WOZ) and the municipality's average sale price, share of owner-occupied homes, liveability percentile, crime per 1,000 residents vs the national rate, and distance to supermarket, GP, primary school and train station. Sources: CBS, Politie, Leefbaarometer.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "code": {
            "description": "Alternative: CBS neighbourhood code, e.g. BU05182245",
            "type": "string"
          },
          "postcode": {
            "description": "Any Dutch postcode in the neighbourhood, e.g. 2517AS",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "nl_neighbourhood_summary"
    },
    {
      "description": "Use when you need every address in a Dutch postcode: street, house number, letter and addition, BAG id and coordinates, sorted. For address pickers, delivery and canvassing routes and data cleaning. Source: Kadaster BAG via PDOK. Costs 0.005 USDC via x402, or 3 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "postcode": {
            "description": "6-character postcode, e.g. 2517AS",
            "type": "string"
          }
        },
        "required": [
          "postcode"
        ],
        "type": "object"
      },
      "name": "nl_postcode_addresses"
    },
    {
      "description": "Use when a tenant asks if their Dutch rent is too high or what the maximum rent is: estimated rent points (WWS) from floor area, energy label and neighbourhood WOZ, the likely segment (social up to 143 points, middle 144-186, free 187+) and the approximate maximum basic rent (2026 limits). An estimate with a link to the official check. Input: postcode + house number. Costs 0.01 USDC via x402, or 5 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "addition": {
            "description": "Optional house number addition",
            "type": "string"
          },
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "house_letter": {
            "description": "Optional house letter, e.g. A",
            "type": "string"
          },
          "house_number": {
            "description": "House number, e.g. 1",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991,
            "type": "integer"
          },
          "postcode": {
            "description": "Dutch postcode, e.g. 3511LX",
            "type": "string"
          },
          "q": {
            "description": "Alternative to postcode: free-text address, e.g. 'Visschersplein 1 Utrecht'",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "nl_rent_check"
    },
    {
      "description": "Free. Use when the user asks about schools near a Dutch address or postcode, or is moving with children: the nearest primary and secondary schools, with distance, denomination, pupils, the share of pupils reaching the target reading and maths level on the end-of-primary test (vs national), and secondary exam pass rates per track (vmbo/havo/vwo). Also the nearest daycare (0 to 4) and after-school care (4 to 12) with registered places. Sources: DUO, Landelijk Register Kinderopvang.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "postcode": {
            "description": "Dutch postcode, e.g. 3511LX or 3511",
            "type": "string"
          }
        },
        "required": [
          "postcode"
        ],
        "type": "object"
      },
      "name": "nl_schools_near"
    },
    {
      "description": "Free. Use when the user gives a Dutch licence plate or asks about a specific car in the Netherlands: make, model, age, fuel, Euro class, APK (MOT) expiry, insurance, open recall, RDW odometer verdict and a risk level. Source: RDW.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "licence_plate": {
            "description": "Dutch licence plate, e.g. GT-722-F",
            "type": "string"
          }
        },
        "required": [
          "licence_plate"
        ],
        "type": "object"
      },
      "name": "nl_vehicle_basic"
    },
    {
      "description": "Use when the user is choosing between 2 or 3 Dutch used cars: plates side by side with make, model, age, APK expiry, insurance, open recall, odometer verdict, import and taxi history, catalogue price, CO2 and power, the best per metric and red flags. Input: Dutch licence plates. Source: RDW. Costs 0.004 USDC via x402, or 2 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "plates": {
            "description": "2 or 3 plates separated by ';', e.g. GT722F;G941RB",
            "type": "string"
          }
        },
        "required": [
          "plates"
        ],
        "type": "object"
      },
      "name": "nl_vehicle_compare"
    },
    {
      "description": "Use when the user asks about a specific Dutch car or licence plate, for example before buying it used: make, model, APK expiry and full inspection history with defects, insurance, open recalls, RDW odometer verdict, import/taxi/export history, specs, CO2, catalogue price and risk flags, in English. Input: Dutch licence plate. Source: RDW. Costs 0.02 USDC via x402, or 10 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "licence_plate": {
            "description": "Dutch licence plate, e.g. GT-722-F",
            "type": "string"
          }
        },
        "required": [
          "licence_plate"
        ],
        "type": "object"
      },
      "name": "nl_vehicle_report"
    },
    {
      "description": "Free. Use before a payment run is sent to the bank: give the payment file as text (SEPA pain.001 XML or CSV with payee name and IBAN) and, best, last run's file or a vendor list as previous. Each line gets release, review or hold: invalid or changed IBAN, a payee name that imitates a known supplier, one IBAN under two names, new payee, duplicate, possible sanctions match. Up to 25 payments here; 100 with an API key over HTTP.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "file": {
            "description": "The payment file content: pain.001 XML or CSV",
            "type": "string"
          },
          "previous": {
            "description": "Last run's file or a vendor list (name, IBAN)",
            "type": "string"
          }
        },
        "required": [
          "file"
        ],
        "type": "object"
      },
      "name": "payment_run_check"
    },
    {
      "description": "Use when screening a list of up to 25 names for politically exposed persons in one call (0.0012 USDC per name): top 3 possible matches per name with positions and status. For customer-base and CRM re-screening. Costs 0.03 USDC via x402, or 15 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "names": {
            "description": "Names separated by ';'",
            "type": "string"
          }
        },
        "required": [
          "names"
        ],
        "type": "object"
      },
      "name": "pep_batch"
    },
    {
      "description": "Use when you must check whether a person is a politically exposed person (PEP) for AML/KYC: heads of state and government, ministers of every country, central bank governors, MEPs and national MPs of the EU, EEA, UK, US and Switzerland, current or former (default 5 years). Fuzzy matching with positions, country and dates. Pairs with sanctions screening. Costs 0.005 USDC via x402, or 3 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "birth_year": {
            "description": "Birth year, e.g. 1967",
            "type": "string"
          },
          "country": {
            "description": "ISO country, e.g. NL",
            "type": "string"
          },
          "name": {
            "description": "Full name, e.g. Mark Rutte",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "name": "pep_screen"
    },
    {
      "description": "Use when you need to send an e-invoice or check if a company can receive one: looks the company up in the Peppol Directory by VAT number, company number (Belgian KBO, French SIREN, Dutch KvK...) or name, and returns its Peppol participant ids and accepted documents (invoice, credit note, self-billing, orders). Belgium requires Peppol B2B e-invoicing since 2026; France requires e-invoice receipt from 2026-09. Costs 0.003 USDC via x402, or 2 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "country": {
            "description": "ISO country, e.g. BE, FR",
            "type": "string"
          },
          "id": {
            "description": "Or a company number (Belgian KBO, French SIREN, Dutch KvK) or Peppol id such as 0208:0400378485",
            "type": "string"
          },
          "name": {
            "description": "Or a company name (with country)",
            "type": "string"
          },
          "vat": {
            "description": "EU VAT number, e.g. BE0400378485",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "peppol_lookup"
    },
    {
      "description": "Use when you need to check a phone number from any country: valid and possible against allocated ranges, E.164 and national format, country, and line type (mobile, landline, VoIP, toll-free, premium) with an SMS-capable hint. National numbers need a country, e.g. 0612345678 with country=NL. Costs 0.003 USDC via x402, or 2 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "country": {
            "description": "ISO country for national numbers, e.g. NL",
            "type": "string"
          },
          "phone": {
            "description": "Phone number, e.g. +31612345678",
            "type": "string"
          }
        },
        "required": [
          "phone"
        ],
        "type": "object"
      },
      "name": "phone_verify"
    },
    {
      "description": "Use when a crypto service sends to or receives from a self-hosted wallet and must document its checks (EU AMLR, Travel Rule files): screens the wallet against OFAC-listed addresses, the claimed owner against EU, UN, UK and US sanctions and PEP, and checks the company register for businesses. Returns no_hits, review or block_review with list versions and a signed receipt. Input: wallet, owner, optional owner_type, birth_year, country. Costs 0.02 USDC via x402, or 10 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "birth_year": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "owner": {
            "description": "Person or company that claims the wallet",
            "type": "string"
          },
          "owner_type": {
            "enum": [
              "person",
              "company"
            ],
            "type": "string"
          },
          "wallet": {
            "type": "string"
          }
        },
        "required": [
          "wallet",
          "owner"
        ],
        "type": "object"
      },
      "name": "self_hosted_wallet_evidence"
    },
    {
      "description": "Free. Use before onboarding or paying a supplier that has a website: reads https://<domain>/.well-known/supplier.json (spec factline.dev/supplier-json), checks its VAT number in VIES and company number in the register against the name, and with iban says whether that IBAN is one of the supplier's own hashed accounts. Returns verified, review, invalid_card or no_card. Input: domain, optional iban.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "domain": {
            "description": "The supplier's website, e.g. example-trading.nl",
            "type": "string"
          },
          "iban": {
            "description": "IBAN from an invoice, to match against the card",
            "type": "string"
          }
        },
        "required": [
          "domain"
        ],
        "type": "object"
      },
      "name": "supplier_card_verify"
    },
    {
      "description": "Use before an agent pays a supplier invoice: supplier in official registers; company, directors, owners and parents screened (EU, UN, UK, US sanctions, PEP); VAT match; IBAN valid, same country, on the Polish whitelist; sender email; Dutch bankruptcy; Peppol. With known_iban, a different bank account than the one on file puts it on hold. Verdict: pass, review or hold. Costs 0.08 USDC via x402, or 40 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "country": {
            "description": "Supplier's ISO country, e.g. BE, NL, GB, PL",
            "type": "string"
          },
          "domain": {
            "description": "Supplier website",
            "type": "string"
          },
          "email": {
            "description": "Email address the invoice came from",
            "type": "string"
          },
          "iban": {
            "description": "IBAN the invoice asks you to pay",
            "type": "string"
          },
          "id": {
            "description": "Or the supplier's company number",
            "type": "string"
          },
          "known_iban": {
            "description": "The supplier's IBAN in your vendor master: a different IBAN on the invoice puts it on hold (changed bank details)",
            "type": "string"
          },
          "kvk": {
            "description": "Dutch KvK number: adds a bankruptcy check",
            "type": "string"
          },
          "name": {
            "description": "Supplier company name, e.g. Colruyt Group",
            "type": "string"
          },
          "vat": {
            "description": "VAT number on the invoice",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "supplier_invoice_check"
    },
    {
      "description": "Use before onboarding or paying a new supplier that may be fake (real registration, good website). Compares company and website age, tests the sender domain for a lookalike of the website, checks UK director identity verification and virtual-office addresses, and runs the company check (sanctions, PEP, VAT). Input: name or id with country, domain (website), email (sender). Costs 0.06 USDC via x402, or 30 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "country": {
            "description": "ISO country, e.g. GB, NL",
            "type": "string"
          },
          "domain": {
            "description": "The supplier's website",
            "type": "string"
          },
          "email": {
            "description": "The email address it writes from",
            "type": "string"
          },
          "id": {
            "description": "Or its company number",
            "type": "string"
          },
          "name": {
            "description": "Supplier company name",
            "type": "string"
          },
          "vat": {
            "description": "VAT number",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "supplier_real_check"
    },
    {
      "description": "Use to verify a US listed company or SEC registrant: finds it by name, ticker or CIK and returns its SEC record (legal name, former names, tickers and exchanges, EIN, state of incorporation, industry code, business address, latest 10-K/20-F and 10-Q dates). Private US companies are not in EDGAR. Input: name, ticker or cik. Costs 0.01 USDC via x402, or 5 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "cik": {
            "description": "SEC CIK number",
            "type": "string"
          },
          "name": {
            "description": "Company name, e.g. Apple",
            "type": "string"
          },
          "ticker": {
            "description": "Ticker, e.g. AAPL",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "us_company_lookup"
    },
    {
      "description": "Use before buying from, selling to or shipping to a company, above all a Chinese or Russian one: screens the name against the US Consolidated Screening List (Commerce, State and Treasury export-control lists, without the SDN list, which the sanctions screen covers) and the DHS UFLPA Entity List (forced-labour import ban). These restrict trade, they are not asset freezes. Input: name, optional type (entity or person), threshold. Costs 0.005 USDC via x402, or 3 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "name": {
            "description": "Company or person name, e.g. 'Hoshine Silicon Industry'",
            "type": "string"
          },
          "type": {
            "enum": [
              "person",
              "entity"
            ],
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "name": "us_trade_screen"
    },
    {
      "description": "Use for ongoing monitoring: the user wants to be told later or must show screening keeps running. Watches one item for 30 days, paid once, no account. kind=sanctions (a name, re-screened when EU, UN, UK or US lists change), company (COUNTRY:name or number, register checked daily) or apk (Dutch plate, daily). Alerts go to the webhook and /v1/watch/alerts with the returned token. Input: kind, value, optional webhook, label. Costs 0.05 USDC via x402, or 25 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "kind": {
            "enum": [
              "sanctions",
              "company",
              "apk"
            ],
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "value": {
            "description": "Name, COUNTRY:company (e.g. IE:Ryanair) or Dutch plate",
            "type": "string"
          },
          "webhook": {
            "description": "https URL for alerts",
            "type": "string"
          }
        },
        "required": [
          "kind",
          "value"
        ],
        "type": "object"
      },
      "name": "watch_30_days"
    },
    {
      "description": "Free. Use at the start of a session or on a schedule when the user has Factline watches (from watch_30_days or a key): lists the watches and any alerts (a new sanctions match, a company status, name or address change, APK or recall change). Input: token (wt_..., returned by watch_30_days) or api_key, optional since (YYYY-MM-DD).",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Or a Factline API key (fl_live_...)",
            "type": "string"
          },
          "since": {
            "description": "Only alerts after this date, YYYY-MM-DD",
            "type": "string"
          },
          "token": {
            "description": "Watch token wt_... from watch_30_days",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "watch_alerts"
    },
    {
      "description": "Free. Use before a shopping agent or the user pays an unfamiliar webshop: domain age, company and VAT number on the site (VAT checked in VIES), contact page, payment methods, prepayment-only or crypto-only, 70-99% discount lures. Returns looks_ok, caution or avoid and decision allow, review or deny. Input: url.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "url": {
            "description": "The shop's address, e.g. https://www.example-shop.nl",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "name": "webshop_check"
    },
    {
      "description": "Free. Use right before paying an x402 seller: screens the payTo wallet against the OFAC list, checks that payTo is a wallet this seller lists in the x402 Bazaar or Circle catalogue (catches a swapped or injected payTo), looks up the seller's payer history, age and uptime, and checks the amount against the seller's listed price and your budget. Returns allow, review or deny with reasons and a signed verdict. Input: url of the resource, pay_to from its 402, optional amount_usd, max_usd, network, mode (strict: deny instead of review on a wallet mismatch or missing pay_to).",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "amount_usd": {
            "description": "Amount you are about to pay in USD, e.g. 0.05",
            "type": "string"
          },
          "max_usd": {
            "description": "Your budget per call in USD",
            "type": "string"
          },
          "mode": {
            "description": "strict: deny on a payTo the seller does not list or a missing pay_to",
            "enum": [
              "standard",
              "strict"
            ],
            "type": "string"
          },
          "network": {
            "description": "Network from the 402, e.g. eip155:8453",
            "type": "string"
          },
          "pay_to": {
            "description": "payTo address from the 402 challenge",
            "type": "string"
          },
          "url": {
            "description": "The x402 resource URL you are about to pay",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "type": "object"
      },
      "name": "x402_pay_guard"
    },
    {
      "description": "Use before an agent pays an x402 endpoint it has not used before: reads the seller's own 402 challenge, screens every payTo wallet against the OFAC list, checks the domain (age, setup), Factline's daily uptime probes and, with company, the register record and EU/UN/UK/US sanctions. Returns allow, review or deny, plus a trust-provider block (decision, score, evidence, ttl). Input: url, optional wallet, company, country. Costs 0.01 USDC via x402, or 5 credits of a Factline API key. The first 5 paid-tool calls a day are free, no payment or key needed.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "api_key": {
            "description": "Factline API key (fl_live_...) from get_trial_key: pass it here right after you get one, no reconnect needed",
            "type": "string"
          },
          "company": {
            "description": "Company behind the seller",
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "url": {
            "description": "The x402 endpoint or origin you are about to pay",
            "type": "string"
          },
          "wallet": {
            "description": "payTo wallet to screen",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "x402_payee_check"
    },
    {
      "description": "Free. Use when looking for an x402 API to pay for a task, or to see if a seller is used and up: sellers from the Coinbase x402 Bazaar ranked by unique payers (30 days), with Factline's daily check that their endpoints answer a valid 402, speed and networks. q is one word to filter (sanctions, weather) or plain words for what you need (an API for flight prices).",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "limit": {
            "type": "string"
          },
          "network": {
            "description": "e.g. solana or eip155:8453",
            "type": "string"
          },
          "q": {
            "description": "Search text, e.g. sanctions",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "x402_sellers"
    }
  ]
}

What the leaf hashes

{"body":"13b3c99ccd580c329195bfb2e2dfe7a8851ca3bd4423cf5295e352ac08cd3471","id":3365652,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793861973961422,"prev":2099580,"subject":"0d6669d1-3cfe-43ef-a0bd-70ae83129a85","subject_kind":"endpoint"}

Proof

Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (322504 rows).

  1. 0xe13118b6cede74392dfb6dbe7655319cc2a49928b68c36d19ecbe9c4c802f6a6
  2. 0x58ad3d2dd4b99df1d05d5849b1ffc9de84682ebc4f40af3b98fbdd06bf7c786f
  3. 0xbbd9da3dd30ee34bf1146bacfcfb3c5451d315c589e0b61e9a24268cced35afd
  4. 0xe039a2456aa81aa9d3204f7d3333060b053ce80c21c67bf5676f50d4f3c2fd36
  5. 0xcf0eca7e36d5be68860e197647cda445ca71ae6554c6e9d5182057d92f671870
  6. 0xc29eefc22854879a09e4f2d75c8affa8e006e5cdb70e0ecde864a25fca787fae
  7. 0x4888c7da406863ae68a471474883a16b28ccf6027eebb363e962e5c1d97b3294
  8. 0x11a2abb22ebb648673102324d7a267e49a1f8a608b7dd6f3938058c375e735ed
  9. 0x9967c66a30c7cacae0ddcef4c91dd5e6c0198330eac45160a13c3a726310d7dd
  10. 0xe99a1a7a5987a466aefbd4b5ae0a42419504877bd299488f864351c47e877e64
  11. 0xecc4b429549d9f9ffc5d96f8c7add6fbb65cf8c645a36247cce4243bb8bfb59f
  12. 0x0107a14bfc55e73be0bf9b73b7baf9f12450a25cbad8175493fedf4d8d0ccb27
  13. 0x53360dd4a714944f94296b461a01bcc564310b05565b05aea6e1a71feee1a57f
  14. 0xce27876666d433e301388ab9a229faf79cf58e8e5e9d26b51a8919e49ef7c4fb
  15. 0xb5004928d173812cab4255917f4c361aae718a32a8e6208a7de15d84417a441d
  16. 0x706c875c10714e921f12357b889e8f8c61b62dcf68745f3b7e23aa127226e76c
  17. 0x595efddb5b196a921c775c54d0aa541065f1802bfefb8bd003a60b16925c4b58
Day root
0x9f0215efb0252701dc86d5600ce95f276cccc716759bf112525ae863f698d128
Chained
0xc54ddff800630c6cd9656f99e7d6a61adce99bf1cea37121600598b0a9a720d2
Published
On Arc Testnet, block 70942081: 0x88f612ad94ca63af4e4e9faab9f34b665b41f03828afac1571ad013cc62bba94

How to check it · This row as JSON