{"serverId":"mcp-registry/io.github.contentfactory/eu-verify","tools":[{"name":"check_eori","fixed":{"name":"check_eori","description":"Live EORI (Economic Operators Registration and Identification) validation via the European Commission EOS/DDS2 service -- the number every business needs to clear customs in the EU. Query: ?eori=FR38347481400100 (2-letter country + up to 15 alphanumerics). Returns valid true/false plus registered name and address when the operator consented to publication. SOAP upstream, clean JSON out; 24h cache. Price: $0.003 USDC per call (x402).","inputSchema":{"type":"object","title":"check_eoriArguments","required":["eori"],"properties":{"eori":{"type":"string","title":"Eori"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":170,"tokensAfter":170},{"name":"check_insolvency_fr","fixed":{"name":"check_insolvency_fr","description":"Legal announcements from the French BODACC official gazette for one company, by SIREN (Luhn-validated). Query: ?siren=383474814 (required), famille=collective for insolvency proceedings (optional filter), limit=10 (1-20). Returns newest-first announcements with family, tribunal, judgment nature and date, and source URL; legal entities only (GDPR-safe). Zero announcements for a valid SIREN is a clean-record signal. Source: DILA open data, daily publications. Cached 1h. Price: $0.01 USDC per call ","inputSchema":{"type":"object","title":"check_insolvency_frArguments","required":["siren"],"properties":{"limit":{"type":"integer","title":"Limit","default":5},"siren":{"type":"string","title":"Siren"},"famille":{"type":"string","title":"Famille","default":""}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":225,"tokensAfter":225},{"name":"find_public_tenders_eu","fixed":{"name":"find_public_tenders_eu","description":"Fresh EU public procurement notices from TED (Tenders Electronic Daily, official Publications Office API, new notices daily). Query: ?cpv=48000000&country=FRA&days_back=7&limit=10 (cpv = 8-digit CPV code, country = 3-letter buyer country, all optional). Each notice: publication_number, publication_date, title, buyer_name, tender deadline, notice URL. 1h cache. Price: $0.01 USDC per call (x402).","inputSchema":{"type":"object","title":"find_public_tenders_euArguments","properties":{"cpv":{"type":"string","title":"Cpv","default":""},"limit":{"type":"integer","title":"Limit","default":5},"country":{"type":"string","title":"Country","default":""},"days_back":{"type":"integer","title":"Days Back","default":7}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":213,"tokensAfter":213},{"name":"invoice_ready_fr","fixed":{"name":"invoice_ready_fr","description":"One-call compliance check for the French e-invoicing reform (from 2026-09-01 the customer's SIREN is a mandatory invoice mention). Query: ?siren=552032534 or ?siret=55203253400041. Runs the Luhn checksum, confirms existence and active status in the official SIRENE registry, computes the FR VAT number and validates it live against VIES. Returns a single verdict: ready / not_ready / check_vat_manually (VIES flakiness never blocks the answer). 1h cache. Price: $0.02 USDC per call (x402).","inputSchema":{"type":"object","title":"invoice_ready_frArguments","required":["number"],"properties":{"number":{"type":"string","title":"Number"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":190,"tokensAfter":190},{"name":"lookup_company_fr","fixed":{"name":"lookup_company_fr","description":"Official French company registry search via recherche-entreprises.api.gouv.fr (INSEE Sirene data, updated daily). Query: ?q=airbus or ?q=383474814 (name or SIREN), optional per_page (1-10), page, code_postal, activite_principale (NAF, e.g. 70.10Z), etat_administratif (A active / C ceased). Returns SIREN, legal form, NAF, HQ address, employee range, status and published finances per company. Personal data on directors is stripped (GDPR). 24h cache. Price: $0.005 USDC per call (x402).","inputSchema":{"type":"object","title":"lookup_company_frArguments","required":["q"],"properties":{"q":{"type":"string","title":"Q"},"per_page":{"type":"integer","title":"Per Page","default":3}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":203,"tokensAfter":203},{"name":"lookup_company_uk","fixed":{"name":"lookup_company_uk","description":"Official UK Companies House data in one paid call. Search: ?q=tesco returns matching companies (number, status, type, incorporation date). Profile: ?number=00445790 returns the full profile PLUS current officers and PSC (persons with significant control, the UK quasi-UBO register): names, roles, natures of control, risk flags (insolvency history, charges, overdue filings) and typed insolvency cases when history exists. Statutory register data, minimized. 24h cache. Price: $0.01 USDC per call (x4","inputSchema":{"type":"object","title":"lookup_company_ukArguments","properties":{"q":{"type":"string","title":"Q","default":""},"limit":{"type":"integer","title":"Limit","default":5},"number":{"type":"string","title":"Number","default":""}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":219,"tokensAfter":219},{"name":"lookup_financials_fr","fixed":{"name":"lookup_financials_fr","description":"Annual accounts filed with the French RNE (INPI). Query: ?siren=552032534 (9 digits, Luhn-validated). Returns the filing history -- closing date, filing date, type (complet/simplifie/consolide), public or confidential -- which is a KYB signal in itself. For the latest public filing it adds headline figures (revenue, operating and net result, total assets, equity) when the liasse scheme is mapped, else says not_covered rather than guessing. 24h cache. Price: $0.03 USDC per call (x402).","inputSchema":{"type":"object","title":"lookup_financials_frArguments","required":["siren"],"properties":{"siren":{"type":"string","title":"Siren"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":191,"tokensAfter":191},{"name":"lookup_lei","fixed":{"name":"lookup_lei","description":"Legal entity reference data from the GLEIF LEI golden copy (updated daily, CC0). Direct lookup: ?lei=529900FCMZ4LKXFD0R69. Search: ?name=airbus&country=FR&limit=5. Each result: lei, legal_name, entity_status, registration_status (ISSUED/LAPSED), jurisdiction, legal_form_id, hq_city/country, next_renewal_date. 24h cache. Price: $0.005 USDC per call (x402).","inputSchema":{"type":"object","title":"lookup_leiArguments","properties":{"lei":{"type":"string","title":"Lei","default":""},"name":{"type":"string","title":"Name","default":""},"limit":{"type":"integer","title":"Limit","default":3},"country":{"type":"string","title":"Country","default":""}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":192,"tokensAfter":192},{"name":"validate_email","fixed":{"name":"validate_email","description":"One-call email verification for lead qualification and list hygiene: RFC 5322 syntax check, then a live MX lookup over DNS-over-HTTPS (Cloudflare, Google fallback). Detects non-existent domains (NXDOMAIN), null-MX domains that refuse mail (RFC 7505), and returns prioritized MX hosts. Query: ?email=someone@example.com. Verdict: deliverable | risky | undeliverable. 1h cache per address. Price: $0.005 USDC per call (x402).","inputSchema":{"type":"object","title":"validate_emailArguments","required":["email"],"properties":{"email":{"type":"string","title":"Email"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":170,"tokensAfter":170},{"name":"validate_iban","fixed":{"name":"validate_iban","description":"Deterministic IBAN check before a SEPA/international transfer: format regex, per-country length (public SWIFT registry, ~85 countries) and ISO 7064 mod-97 checksum. Query: ?iban=FR1420041010050500013M02606 (spaces/dashes tolerated). Returns valid, country, bban, and a precise failure reason. Pure offline computation, 1y cache. Price: $0.001 USDC per call (x402).","inputSchema":{"type":"object","title":"validate_ibanArguments","required":["iban"],"properties":{"iban":{"type":"string","title":"Iban"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":152,"tokensAfter":152},{"name":"validate_siret_fr","fixed":{"name":"validate_siret_fr","description":"Instant pre-validation of French company numbers before invoicing or costly Sirene API calls. Auto-detects SIREN (9 digits) vs SIRET (14 digits), applies the INSEE Luhn rule and the documented La Poste exception (356000000*: digit sum mod 5). Query: ?number=44306184100047 (spaces/dots/dashes tolerated). Returns valid, type, siren, nic and the rule applied. Pure offline computation, 1y cache. Price: $0.001 USDC per call (x402).","inputSchema":{"type":"object","title":"validate_siret_frArguments","required":["number"],"properties":{"number":{"type":"string","title":"Number"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":174,"tokensAfter":174},{"name":"validate_vat_eu","fixed":{"name":"validate_vat_eu","description":"Live intra-EU VAT number validation via the European Commission VIES REST API (real-time query of the member state registry). Query: ?cc=IE&vat=6388047V (cc = member state code incl. EL/XI, vat = number without country prefix). Returns is_valid, the trader name and address as registered (when the member state publishes them) and request_date (compliance timestamp); 24h cache. Price: $0.005 USDC per call (x402).","inputSchema":{"type":"object","title":"validate_vat_euArguments","required":["country","vat"],"properties":{"vat":{"type":"string","title":"Vat"},"country":{"type":"string","title":"Country"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":182,"tokensAfter":182},{"name":"verify_address_fr","fixed":{"name":"verify_address_fr","description":"French address geocoding on the official Base Adresse Nationale (api-adresse.data.gouv.fr, Etalab/IGN, continuously updated). Forward: ?q=8 boulevard du port amiens with optional &type=housenumber|street|locality|municipality &citycode=80021 (INSEE filter). Reverse: ?lat=49.897&lon=2.290. &limit=1-10 (default 3). Each match returns normalized label, confidence score, lat/lon, street, postcode, city, INSEE citycode and context. No match returns 400 (not billed). Cached 24h. Price: $0.001 USDC per","inputSchema":{"type":"object","title":"verify_address_frArguments","required":["q"],"properties":{"q":{"type":"string","title":"Q"},"limit":{"type":"integer","title":"Limit","default":3}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":205,"tokensAfter":205}],"toolsChanged":13,"tokensSaved":0,"todo":[{"tool":"business_days_fr","params":["add","start"]},{"tool":"check_eori","params":["eori"]},{"tool":"check_insolvency_fr","params":["limit","siren","famille"]},{"tool":"find_public_tenders_eu","params":["cpv","limit","country","days_back"]},{"tool":"invoice_ready_fr","params":["number"]},{"tool":"lei_ownership","params":["lei"]},{"tool":"lookup_company_fr","params":["q","per_page"]},{"tool":"lookup_company_uk","params":["q","limit","number"]},{"tool":"lookup_financials_fr","params":["siren"]},{"tool":"lookup_lei","params":["lei","name","limit","country"]},{"tool":"screen_sanctions","params":["name","lists","threshold"]},{"tool":"validate_email","params":["email"]},{"tool":"validate_iban","params":["iban"]},{"tool":"validate_siret_fr","params":["number"]},{"tool":"validate_vat_eu","params":["vat","country"]},{"tool":"verify_address_fr","params":["q","limit"]},{"tool":"verify_company_eu","params":["id","lei","vat","eori","domain","country"]},{"tool":"verify_supplier_fr","params":["number"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}