Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Removed "precheck_vat"; changed the definition of "check_company", "check_iban", "check_three_way_match" and 5 more (9 tools before, 8 now)
⟨25 unchanged words⟩ or unknown companies FAIL. Returns the registered name. Use a CRO company number, not a company name or VAT number. Source uncertainty returns UNAVAILABLE, not a pass. Use check_vat for VIES registration, verify_supplier_payment for claimed-name/identity reconciliation, or decide_supplier_payment for a complete signed invoice decision. No invoice is approved here. Free: 1 attempts per UTC day per IP, shared REST/MCP; failures count. Then 0.01 USDC with explicit approval.
⟨4 unchanged words⟩ properties":{"cro_number":{"description":"IrishCROCompanies Registration Office companynumber.number as a string. Preserve leading zeros; do not supply a name, VAT number or foreign registry ID.","maxLength":16,"minLength":1,"title ⟨10 unchanged words⟩ "properties":{"request":{"$ref":"#/$defs/CompanyCheckRequest","description":"Check an Irish company status (CRO): supply this structured object using the nested schema, not a JSON-encoded string."}},"required":["request"],"title ⟨3 unchanged words⟩
⟨23 unchanged words⟩ code. Irish (IE) IBANs pass by default. Use only for bank-account identifier syntax/country checks, not account ownership, bank Confirmation of Payee or supplier identity. Use check_vat for VAT registration, check_company for CRO status, and decide_supplier_payment for the complete signed invoice decision. No bank transfer occurs. Free: 1 attempts per UTC day per IP, shared REST/MCP; failures count. Then 0.005 USDC with explicit approval.
⟨5 unchanged words⟩ :{"iban":{"description":"IBAN tovalidatevalidate;(spacesallowed).and lowercase are normalized. Checks checksum/length/country only, not account ownership.","examples":["IE29AIBK93115212345678"],"maxLength":40,"minLength":5,"title":" ⟨9 unchanged words⟩ "properties":{"request":{"$ref":"#/$defs/IbanCheckRequest","description":"Validate an IBAN: supply this structured object using the nested schema, not a JSON-encoded string."}},"required":["request"],"title ⟨3 unchanged words⟩
⟨26 unchanged words⟩ Checks caller-supplied documents, not independently verified ERP records. Returns PASSED or FAILED and a reason code; no CRO/VIES lookup, signature validation or bank transfer is performed by this tool. Use decide_supplier_payment when document matching must be combined with supplier identity, VAT, payee and signature checks. Requires an explicitly approved service fee.
⟨139 unchanged words⟩ number"},{"type":"string"}],"description":"Positive ordered or invoiced quantity; send an exact decimal string.","title":"Quantity"},"sku":{"description":"Item identifier used consistently across invoice, PO and receipt.","minLength":1,"title":"Sku","type" ⟨6 unchanged words⟩ number"},{"type":"string"}],"description":"Nonnegative unit price in the document currency; send an exact decimal string.","title":"Unit Price"}},"required":[ ⟨100 unchanged words⟩ properties":{"goods_receipt":{"$ref":"#/$defs/GoodsReceipt","description":"Goods receipt linked to the same PO; supply received SKU quantities and supplier CRO number."},"invoice":{"$ref":"#/$defs/Invoice","description":"Invoice document fields, including reference numbers, currency, amount, payee name and line items."},"purchase_order":{"$ref":"#/$defs/PurchaseOrder"
⟨19 unchanged words⟩ or UNAVAILABLE (VIES outage) with a reasoncode.code and available consultation/audit evidence. Use for one VAT number, not company-name matching or invoice approval. check_company checks CRO status; verify_supplier_payment reconciles claimed supplier identity and VAT; decide_supplier_payment runs the full signed invoice workflow. An outage is uncertainty, not invalid registration; do not auto-pay to retry. Free: 1 attempts per UTC day per IP, shared REST/MCP; failures count. Then 0.01 USDC with explicit approval.
⟨7 unchanged words⟩ ":"Irish VAT number, with or withouttheIEprefix.prefix; spaces and lowercase are normalized. Not a CRO number or company name.","maxLength":20,"minLength":2,"title ⟨10 unchanged words⟩ "properties":{"request":{"$ref":"#/$defs/VatCheckRequest","description":"Check an Irish VAT number: supply this structured object using the nested schema, not a JSON-encoded string."}},"required":["request"],"title ⟨3 unchanged words⟩
⟨25 unchanged words⟩ RSA signature) and returns exactly one ofDOCUMENTS_CONSISTENTEXECUTE_PAYMENT, REJECT_PAYMENT or FLAG_FOR_HUMAN_REVIEW with per-check results, reason ⟨39 unchanged words⟩ money. Register a signing key first via /v1/agent-keys. Use this for the complete signed invoice/PO/GRN workflow, not verify_supplier_payment's separate identity/VAT contract or get_verification retrieval. Provider uncertainty requires review, not execution; retain independent payment approval. Supply a stable transaction_id for retries and never automatically repay.
⟨139 unchanged words⟩ number"},{"type":"string"}],"description":"Positive ordered or invoiced quantity; send an exact decimal string.","title":"Quantity"},"sku":{"description":"Item identifier used consistently across invoice, PO and receipt.","minLength":1,"title":"Sku","type" ⟨6 unchanged words⟩ number"},{"type":"string"}],"description":"Nonnegative unit price in the document currency; send an exact decimal string.","title":"Unit Price"}},"required":[ ⟨10 unchanged words⟩ properties":{"goods_receipt":{"$ref":"#/$defs/GoodsReceipt","description":"Caller-supplied goods receipt with quantities received against the same PO."
RetrieveReadaan existing identity/VAT verificationresultcreatedbelongingbytoverify_supplier_payment (POST /v1/verifications). Supply its returned verification_id UUID, not a request_id, transaction_id, invoice number or A2A task ID. Returns the stored RELEASE/REVIEW/BLOCK/INSUFFICIENT_EVIDENCE result without rerunning registry checks. The same authenticatedtenant. Requirestenant must own the result: use the original paying wallet for x402, or an authorized bearer token with verification.read scope.Missing or other-tenant IDs return not found. This does not retrieve decide_supplier_payment decisions and does not create a verification. Retrieval has its own service fee; inspect terms and obtain spending approval before paying. Do not retry payment automatically or infer invoice-payment authorization from a stored advisory result.
⟨17 unchanged words⟩ per tenant; rotate by registering a new key_id. Returns key_id and registered=true. Use before decide_supplier_payment and use the same tenant/paying wallet for registration and decision. This is not a supplier check, API-key creation or payment authorization. Keep the RSA private key local; a conflicting existing key_id returns a conflict. Inspect and approve the registration fee before calling.
{"additionalProperties":false,"properties":{"key_id":{"description":"Caller-chosen RSA public-key identifier, unique within your tenant. Reuse it in signature.key_id; rotate with a new ID.","maxLength":128,"minLength":1,"title":"Key Id","type":"string"},"public_key_pem":{"description":"PEM-encoded RSA public key, at least 2048 bits. Never send a private key, wallet key or certificate.","maxLength":16384,"minLength":1,"title": ⟨12 unchanged words⟩
VerifyUseaforsupplier'ssupplier identity and VATregistration andreconciliation,returnnot theadvisoryfull signed five-gate invoice decision.IdentityregistryReconcilescheckstheareclaimedroutedlegaltoname, company registration number and VAT number against
Free Irish VAT format and check-letter precheck on your number, not a demo. Local validation only: no registration/company verification or payment authorization. 20 attempts per UTC day per IP, shared with REST. Invalid MCP arguments count when they reach tools/call; malformed protocol messages do not. No wallet required. A valid format can optionally continue to paid live EU VIES check_vat, only after explicit spending approval; invalid numbers must be corrected first.
Added "precheck_vat"; changed the definition of "decide_supplier_payment" (8 tools before, 9 now)
⟨25 unchanged words⟩ RSA signature) and returns exactly one ofEXECUTE_PAYMENTDOCUMENTS_CONSISTENT, REJECT_PAYMENT or FLAG_FOR_HUMAN_REVIEW with per-check results, reason ⟨47 unchanged words⟩
Free Irish VAT format and check-letter precheck on your number, not a demo. Local validation only: no registration/company verification or payment authorization. 20 attempts per UTC day per IP, shared with REST. Invalid MCP arguments count when they reach tools/call; malformed protocol messages do not. No wallet required. A valid format can optionally continue to paid live EU VIES check_vat, only after explicit spending approval; invalid numbers must be corrected first.
Removed "precheck_vat"; changed the definition of "decide_supplier_payment" (9 tools before, 8 now)
⟨25 unchanged words⟩ RSA signature) and returns exactly one ofDOCUMENTS_CONSISTENTEXECUTE_PAYMENT, REJECT_PAYMENT or FLAG_FOR_HUMAN_REVIEW with per-check results, reason ⟨47 unchanged words⟩
Free Irish VAT format and check-letter precheck on your number, not a demo. Local validation only: no registration/company verification or payment authorization. 20 attempts per UTC day per IP, shared with REST. Invalid MCP arguments count when they reach tools/call; malformed protocol messages do not. No wallet required. A valid format can optionally continue to paid live EU VIES check_vat, only after explicit spending approval; invalid numbers must be corrected first.
Changed the definition of "decide_supplier_payment"
⟨25 unchanged words⟩ RSA signature) and returns exactly one ofEXECUTE_PAYMENTDOCUMENTS_CONSISTENT, REJECT_PAYMENT or FLAG_FOR_HUMAN_REVIEW with per-check results, reason ⟨47 unchanged words⟩
Added "precheck_vat"; removed "verify_payout"
Free Irish VAT format and check-letter precheck on your number, not a demo. Local validation only: no registration/company verification or payment authorization. 20 attempts per UTC day per IP, shared with REST. Invalid MCP arguments count when they reach tools/call; malformed protocol messages do not. No wallet required. A valid format can optionally continue to paid live EU VIES check_vat, only after explicit spending approval; invalid numbers must be corrected first.
Checks a supplier's payout address before you pay it. Checks that the address is well formed (EVM), screens it against the OFAC SDN list of digital currency addresses, and compares it with the payout addresses this account has verified for the same supplier_id. Returns verified, a risk score from 0.00 (safe) to 1.00 (high risk), and an action: PROCEED, REVIEW or BLOCK. The first payout to a supplier has no baseline yet, so historical_match is WARN. Three calls a day per IP are free.
Added "verify_payout"; changed the definition of "check_company", "check_iban", "check_three_way_match" and 5 more (8 tools before, 9 now)
⟨25 unchanged words⟩ or unknown companies FAIL. Returns the registered name.Use a CRO company number, not a company name or VAT number. Source uncertainty returns UNAVAILABLE, not a pass. Use check_vat for VIES registration, verify_supplier_payment for claimed-name/identity reconciliation, or decide_supplier_payment for a complete signed invoice decision. No invoice is approved here. Free: 10 attempts per UTC day per IP, shared REST/MCP; failures count. Then 0.01 USDC with explicit approval.
⟨4 unchanged words⟩ properties":{"cro_number":{"description":"IrishCompanies Registration OfficeCRO companynumber as a string. Preserve leading zeros; do not supply a name, VAT number or foreign registry ID.number.","maxLength":16,"minLength":1,"title ⟨10 unchanged words⟩
Added "check_company", "check_iban", "check_three_way_match" and 3 more; changed the definition of "get_verification" and "verify_supplier_payment" (2 tools before, 8 now)
RetrieveReadaan existing identity/VAT verificationresultcreatedbelongingbytoverify_supplier_payment (POST /v1/verifications). Supply its returned verification_id UUID, not a request_id, transaction_id, invoice number or A2A task ID. Returns the stored RELEASE/REVIEW/BLOCK/INSUFFICIENT_EVIDENCE result without rerunning registry checks. The same authenticatedtenant. Requirestenant must own
Removed "check_company", "check_iban", "check_three_way_match" and 3 more; changed the definition of "get_verification" and "verify_supplier_payment" (8 tools before, 2 now)
Read an existing identity/VAT verification created by verify_supplier_payment (POST /v1/verifications). Supply its returned verification_id UUID, notRetrieve arequest_id, transaction_id, invoice number or A2A task ID. Returns the stored RELEASE/REVIEW/BLOCK/INSUFFICIENT_EVIDENCEverification resultwithout rerunning registry checks. The same authenticated tenant mustbelongingownto theresult:authenticatedusetenant. Requires theoriginal paying wallet for x402, or an authorized bearer token withverification.read scope.Missing or other-tenant IDs return not found. This does not retrieve decide_supplier_payment decisions and does not create a verification. Retrieval has its own service fee; inspect terms and obtain spending approval before paying. Do not retry payment automatically or infer invoice-payment authorization from a stored advisory result.
Certificate recorded, valid to 2026-12-26
Authorization not required
Changed the definition of "check_company", "check_iban", "check_three_way_match" and 5 more
⟨25 unchanged words⟩ or unknown companies FAIL. Returns the registered name. Use a CRO company number, not a company name or VAT number. Source uncertainty returns UNAVAILABLE, not a pass. Use check_vat for VIES registration, verify_supplier_payment for claimed-name/identity reconciliation, or decide_supplier_payment for a complete signed invoice decision. No invoice is approved here. Free: 10 attempts per UTC day per IP ⟨10 unchanged words⟩
⟨4 unchanged words⟩ properties":{"cro_number":{"description":"IrishCROCompanies Registration Office companynumber.number as a string. Preserve leading zeros; do not supply a name, VAT number or foreign registry ID.
Changed the definition of "check_company", "check_iban" and "check_vat"
⟨25 unchanged words⟩ or unknown companies FAIL. Returns the registered name. Free: 10 attempts per UTC day per IP, shared REST/MCP; failures count. Then 0.01 USDC with explicit approval.
⟨23 unchanged words⟩ code. Irish (IE) IBANs pass by default. Free: 10 attempts per UTC day per IP, shared REST/MCP; failures count. Then 0.005 USDC with explicit approval.
Changed the definition of "check_three_way_match", "decide_supplier_payment" and "register_signing_key"
⟨18 unchanged words⟩ and quantities received. Stateless; you attach the documents. Checks caller-supplied documents, not independently verified ERP records.
⟨38 unchanged words⟩ results, reason codes and a confidence score. The legacy CONFIRMATION_OF_PAYEE result means a payee-name comparison with the CRO legal name and IBAN validation, not bank Confirmation of Payee. ERP_THREE_WAY_MATCH compares caller-supplied documents, not independently verified ERP records. Decides only; never moves money. Register a signing key first via /v1/agent-keys.
Unknown → Live
First tool surface recorded: 8 tools (server version 1.30.0)
https://supplier-payment-verifier-production.up.railway.app/mcp (mcp_streamable_http) — from mcp_registry, with the record
Showing the latest 16 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
{"properties":{"verification_id":{"description":"UUID returned as verification_id by verify_supplier_payment or POST /v1/verifications. Use a result owned by the same tenant/original paying wallet; do not supply request_id, transaction_id, an invoice number or an A2A task ID.","format":"uuid","title":"Verification Id" ⟨8 unchanged words⟩
⟨237 unchanged words⟩ title":"Claimed Address"},"claimed_legal_name":{"description":"Legal supplier name claimed on the invoice, to reconcile with registry evidence.","maxLength":300,"minLength":1,"title":" ⟨11 unchanged words⟩ type":"null"}],"default":null,"description":"Irish CRO company number, supplied as a string; not a VAT number.","title":"Company Registration Number"},"country_code":{"description":"Uppercase ISO country code. Company-registry verification currently supports IE only.","pattern":"^[A-Z]{2}$","title ⟨39 unchanged words⟩ type":"null"}],"default":null,"description":"Claimed supplier VAT identifier for VIES reconciliation. Irish VAT validation is supported.","title":"Vat Number"}},"required":[ ⟨148 unchanged words⟩ },"policy_id":{"const":"eu-b2b-payment-v1","description":"Verification policy identifier; always eu-b2b-payment-v1.","title":"Policy Id","type":"string"},"request_id":{"description":"Caller-generated unique request UUID used for idempotency. This is not the returned verification_id used for retrieval.","format":"uuid","title":"Request Id" ⟨13 unchanged words⟩ },"schema_version":{"const":"1.0","description":"Request schema version; always the literal string 1.0.","title":"Schema Version","type":"string"},"supplier":{"$ref":"#/$defs/SupplierInput","description":"Claimed supplier identity and Irish identifiers to reconcile with CRO/VIES; not the signed invoice-decision supplier object."},"transaction":{"anyOf":[{"$ref ⟨14 unchanged words⟩
⟨23 unchanged words⟩ code. Irish (IE) IBANs pass by default.Use only for bank-account identifier syntax/country checks, not account ownership, bank Confirmation of Payee or supplier identity. Use check_vat for VAT registration, check_company for CRO status, and decide_supplier_payment for the complete signed invoice decision. No bank transfer occurs. Free: 10 attempts per UTC day per IP, shared REST/MCP; failures count. Then 0.005 USDC with explicit approval.
⟨5 unchanged words⟩ :{"iban":{"description":"IBAN tovalidate;validate (spacesand lowercase are normalized. Checks checksum/length/country only, not account ownership.","examples":["IE29AIBK93115212345678allowed)."],"maxLength":40,"minLength":5,"title" ⟨9 unchanged words⟩ "properties":{"request":{"$ref":"#/$defs/IbanCheckRequest","description":"Validate an IBAN: supply this structured object using the nested schema, not a JSON-encoded string."}},"required":["request"],"title ⟨3 unchanged words⟩
⟨26 unchanged words⟩ Checks caller-supplied documents, not independently verified ERP records.Returns PASSED or FAILED and a reason code; no CRO/VIES lookup, signature validation or bank transfer is performed by this tool. Use decide_supplier_payment when document matching must be combined with supplier identity, VAT, payee and signature checks. Requires an explicitly approved service fee.
⟨139 unchanged words⟩ number"},{"type":"string"}],"description":"Positive ordered or invoiced quantity; send an exact decimal string.","title":"Quantity"},"sku":{"description":"Item identifier used consistently across invoice, PO and receipt.","minLength":1,"title":"Sku","type" ⟨6 unchanged words⟩ number"},{"type":"string"}],"description":"Nonnegative unit price in the document currency; send an exact decimal string.","title":"Unit Price"}},"required":[ ⟨100 unchanged words⟩ properties":{"goods_receipt":{"$ref":"#/$defs/GoodsReceipt","description":"Goods receipt linked to the same PO; supply received SKU quantities and supplier CRO number."},"invoice":{"$ref":"#/$defs/Invoice","description":"Invoice document fields, including reference numbers, currency, amount, payee name and line items."},"purchase_order":{"$ref":"#/$defs/PurchaseOrder","description":"Purchase order to compare with the invoice; supply the expected supplier, currency, amount and ordered items."},"supplier_cro_number":{"description":"Expected supplier CRO number to match against the supplied PO and goods receipt; not looked up in CRO by this tool.","maxLength":16,"minLength":1,"title":" ⟨14 unchanged words⟩ "properties":{"request":{"$ref":"#/$defs/ThreeWayMatchRequest","description":"3-way match PO, goods receipt and invoice: supply this structured object using the nested schema, not a JSON-encoded string."}},"required":["request"],"title ⟨3 unchanged words⟩
⟨19 unchanged words⟩ or UNAVAILABLE (VIES outage) with a reasoncode and available consultation/audit evidence. Use for one VAT number, not company-name matching or invoice approval. check_company checks CRO status; verify_supplier_payment reconciles claimed supplier identity and VAT; decide_supplier_payment runs the full signed invoice workflow. An outage is uncertainty, not invalid registration; do not auto-pay to retry. Free: 10 attempts per UTC day per IP, shared REST/MCP; failures count. Then 0.01 USDC with explicit approval.code.
⟨7 unchanged words⟩ ":"Irish VAT number, with or withoutIE prefix; spaces and lowercase are normalized. Not a CRO number orthecompanyIEname.prefix.","maxLength":20,"minLength":2,"title ⟨10 unchanged words⟩ "properties":{"request":{"$ref":"#/$defs/VatCheckRequest","description":"Check an Irish VAT number: supply this structured object using the nested schema, not a JSON-encoded string."}},"required":["request"],"title ⟨3 unchanged words⟩
⟨79 unchanged words⟩ money. Register a signing key first via /v1/agent-keys.Use this for the complete signed invoice/PO/GRN workflow, not verify_supplier_payment's separate identity/VAT contract or get_verification retrieval. Provider uncertainty requires review, not execution; retain independent payment approval. Supply a stable transaction_id for retries and never automatically repay.
⟨139 unchanged words⟩ number"},{"type":"string"}],"description":"Positive ordered or invoiced quantity; send an exact decimal string.","title":"Quantity"},"sku":{"description":"Item identifier used consistently across invoice, PO and receipt.","minLength":1,"title":"Sku","type" ⟨6 unchanged words⟩ number"},{"type":"string"}],"description":"Nonnegative unit price in the document currency; send an exact decimal string.","title":"Unit Price"}},"required":[ ⟨10 unchanged words⟩ properties":{"goods_receipt":{"$ref":"#/$defs/GoodsReceipt","description":"Caller-supplied goods receipt with quantities received against the same PO."},"invoice":{"$ref":"#/$defs/Invoice","description":"Invoice being reviewed, including payee name, amount, currency, PO/GRN references and line items."},"purchase_order":{"$ref":"#/$defs/PurchaseOrder","description":"Caller-supplied purchase order to compare with the invoice; no ERP lookup is performed."},"signature":{"$ref":"#/$defs/SignatureEnvelope","description":"RSA-PSS SHA-256 signature of the normalized canonical request without signature, using a previously registered public-key ID in the same tenant."},"supplier":{"$ref":"#/$defs/Supplier","description":"Supplier CRO number, Irish VAT number and claimed payment IBAN for all five gates."},"transaction_id":{"description":"Stable caller transaction identifier for the same business request. Reuse on retries; changed content with the same ID conflicts.","maxLength":64,"minLength":1,"title":" ⟨159 unchanged words⟩ additionalProperties":false,"properties":{"cro_number":{"description":"Irish CRO company number for the invoice supplier; preserve it as a string.","maxLength":16,"minLength":1,"title":"Cro Number","type":"string"},"iban":{"description":"Supplier's claimed payment IBAN. Validation does not independently establish account ownership.","maxLength":40,"minLength":1,"title":"Iban","type":"string"},"vat_number":{"description":"Supplier Irish VAT number to validate and check against EU VIES, not a CRO number.","maxLength":20,"minLength":1,"title":" ⟨12 unchanged words⟩ "properties":{"payment_request":{"$ref":"#/$defs/PaymentRequest","description":"Decide: pay this supplier invoice or not: supply this structured object using the nested schema, not a JSON-encoded string."}},"required":["payment_request"],"title ⟨3 unchanged words⟩
Read an existing identity/VAT verification created by verify_supplier_payment (POST /v1/verifications). Supply its returned verification_id UUID, notRetrieve arequest_id, transaction_id, invoice number or A2A task ID. Returns the stored RELEASE/REVIEW/BLOCK/INSUFFICIENT_EVIDENCEverification resultwithout rerunning registry checks. The same authenticated tenant mustbelongingownto theresult:authenticatedusetenant. Requires theoriginal paying wallet for x402, or an authorized bearer token withverification.read scope.Missing or other-tenant IDs return not found. This does not retrieve decide_supplier_payment decisions and does not create a verification. Retrieval has its own service fee; inspect terms and obtain spending approval before paying. Do not retry payment automatically or infer invoice-payment authorization from a stored advisory result.
{"properties":{"verification_id":{"description":"UUID returned as verification_id by verify_supplier_payment or POST /v1/verifications. Use a result owned by the same tenant/original paying wallet; do not supply request_id, transaction_id, an invoice number or an A2A task ID.","format":"uuid","title":"Verification Id" ⟨8 unchanged words⟩
⟨17 unchanged words⟩ per tenant; rotate by registering a new key_id.Returns key_id and registered=true. Use before decide_supplier_payment and use the same tenant/paying wallet for registration and decision. This is not a supplier check, API-key creation or payment authorization. Keep the RSA private key local; a conflicting existing key_id returns a conflict. Inspect and approve the registration fee before calling.
{"additionalProperties":false,"properties":{"key_id":{"description":"Caller-chosen RSA public-key identifier, unique within your tenant. Reuse it in signature.key_id; rotate with a new ID.","maxLength":128,"minLength":1,"title":"Key Id","type":"string"},"public_key_pem":{"description":"PEM-encoded RSA public key, at least 2048 bits. Never send a private key, wallet key or certificate.","maxLength":16384,"minLength":1,"title": ⟨12 unchanged words⟩
UseVerifyforasuppliersupplier's identity and VATreconciliation, not the full signed five-gate invoiceregistrationdecision.andReconcilesreturn theclaimed legal name, companyadvisoryregistrationdecision. IdentitynumberregistryandchecksVATarenumberroutedagainstto the IrishCompanies RegistrationCROOfficefor(IE)and the EU VIESonly. VATservice, and returns an advisory RELEASE, REVIEW, BLOCK or INSUFFICIENT_EVIDENCE decision with per-check results and reason codesisplusverified independentlyverification_id.throughUseEUdecide_supplier_paymentVIES.forRequires thesigned invoice/PO/GRNverification.submitworkflowscope. transaction,individual check tools for one check,customer_assertions andget_verificationpayment_destination are onlytoevaluatedretrievewhen paymentthischecksstoredareresult.enabledThisoncreatestheaservice;verificationotherwiseandthey maycall external sources; it never executes or authorises a bank payment. Requires explicit x402 service-fee approval or an authorized bearer token; do not automatically retry paidbecalls.omitted.
⟨237 unchanged words⟩ title":"Claimed Address"},"claimed_legal_name":{"description":"Legal supplier name claimed on the invoice, to reconcile with registry evidence.","maxLength":300,"minLength":1,"title":" ⟨11 unchanged words⟩ type":"null"}],"default":null,"description":"Irish CRO company number, supplied as a string; not a VAT number.","title":"Company Registration Number"},"country_code":{"description":"Uppercase ISO country code. Company-registry verification currently supports IE only.","pattern":"^[A-Z]{2}$","title ⟨39 unchanged words⟩ type":"null"}],"default":null,"description":"Claimed supplier VAT identifier for VIES reconciliation. Irish VAT validation is supported.","title":"Vat Number"}},"required":[ ⟨148 unchanged words⟩ },"policy_id":{"const":"eu-b2b-payment-v1","description":"Verification policy identifier; always eu-b2b-payment-v1.","title":"Policy Id","type":"string"},"request_id":{"description":"Caller-generated unique request UUID used for idempotency. This is not the returned verification_id used for retrieval.","format":"uuid","title":"Request Id" ⟨13 unchanged words⟩ },"schema_version":{"const":"1.0","description":"Request schema version; always the literal string 1.0.","title":"Schema Version","type":"string"},"supplier":{"$ref":"#/$defs/SupplierInput","description":"Claimed supplier identity and Irish identifiers to reconcile with CRO/VIES; not the signed invoice-decision supplier object."},"transaction":{"anyOf":[{"$ref ⟨14 unchanged words⟩
Checks a supplier's payout address before you pay it. Checks that the address is well formed (EVM), screens it against the OFAC SDN list of digital currency addresses, and compares it with the payout addresses this account has verified for the same supplier_id. Returns verified, a risk score from 0.00 (safe) to 1.00 (high risk), and an action: PROCEED, REVIEW or BLOCK. The first payout to a supplier has no baseline yet, so historical_match is WARN. Three calls a day per IP are free.
{"properties":{"verification_id":{"description":"UUID returned as verification_id by verify_supplier_payment or POST /v1/verifications. Use a result owned by the same tenant/original paying wallet; do not supply request_id, transaction_id, an invoice number or an A2A task ID.","format":"uuid","title":"Verification Id" ⟨8 unchanged words⟩
VerifyUseaforsupplier'ssupplier identity and VATregistration andreconciliation,returnnot theadvisoryfull signed five-gate invoice decision.IdentityregistryReconcilescheckstheareclaimedroutedlegaltoname, company registration number and VAT number against the IrishCROCompaniesforRegistration Office (IE)only.and the EU VIES VATisservice,verified independentlyandthroughreturnsEUanVIES.advisoryRequiresRELEASE, REVIEW, BLOCK or INSUFFICIENT_EVIDENCE decision with per-check results and reason codes plus verification_id. Use decide_supplier_payment for theverification.submitsignedscope. transactioninvoice/PO/GRN workflow,customer_assertionsindividualandcheckpayment_destinationtoolsarefor one check, and get_verification onlyevaluatedtowhen paymentretrievechecksthisarestoredenabledresult.onThisthecreatesservice;aotherwiseverificationtheyand maybecallomitted.external sources; it never executes or authorises a bank payment. Requires explicit x402 service-fee approval or an authorized bearer token; do not automatically retry paid calls.
⟨237 unchanged words⟩ title":"Claimed Address"},"claimed_legal_name":{"description":"Legal supplier name claimed on the invoice, to reconcile with registry evidence.","maxLength":300,"minLength":1,"title":" ⟨11 unchanged words⟩ type":"null"}],"default":null,"description":"Irish CRO company number, supplied as a string; not a VAT number.","title":"Company Registration Number"},"country_code":{"description":"Uppercase ISO country code. Company-registry verification currently supports IE only.","pattern":"^[A-Z]{2}$","title ⟨39 unchanged words⟩ type":"null"}],"default":null,"description":"Claimed supplier VAT identifier for VIES reconciliation. Irish VAT validation is supported.","title":"Vat Number"}},"required":[ ⟨148 unchanged words⟩ },"policy_id":{"const":"eu-b2b-payment-v1","description":"Verification policy identifier; always eu-b2b-payment-v1.","title":"Policy Id","type":"string"},"request_id":{"description":"Caller-generated unique request UUID used for idempotency. This is not the returned verification_id used for retrieval.","format":"uuid","title":"Request Id" ⟨13 unchanged words⟩ },"schema_version":{"const":"1.0","description":"Request schema version; always the literal string 1.0.","title":"Schema Version","type":"string"},"supplier":{"$ref":"#/$defs/SupplierInput","description":"Claimed supplier identity and Irish identifiers to reconcile with CRO/VIES; not the signed invoice-decision supplier object."},"transaction":{"anyOf":[{"$ref ⟨14 unchanged words⟩
Looks up an Irish company by CRO number in the Companies Registration Office open data. PASSED only if the company status is NORMAL; dissolved, liquidated or unknown companies FAIL. Returns the registered name. Use a CRO company number, not a company name or VAT number. Source uncertainty returns UNAVAILABLE, not a pass. Use check_vat for VIES registration, verify_supplier_payment for claimed-name/identity reconciliation, or decide_supplier_payment for a complete signed invoice decision. No invoice is approved here. Free: 10 attempts per UTC day per IP, shared REST/MCP; failures count. Then 0…
Cheapest call. Validates an IBAN (ISO 13616 mod-97 checksum, length and country) before you pay it. Returns PASSED or FAILED with a reason code. Irish (IE) IBANs pass by default. Use only for bank-account identifier syntax/country checks, not account ownership, bank Confirmation of Payee or supplier identity. Use check_vat for VAT registration, check_company for CRO status, and decide_supplier_payment for the complete signed invoice decision. No bank transfer occurs. Free: 10 attempts per UTC day per IP, shared REST/MCP; failures count. Then 0.005 USDC with explicit approval.
Checks that a purchase order, goods receipt and invoice agree on supplier, currency, amount, line items, unit prices and quantities received. Stateless; you attach the documents. Checks caller-supplied documents, not independently verified ERP records. Returns PASSED or FAILED and a reason code; no CRO/VIES lookup, signature validation or bank transfer is performed by this tool. Use decide_supplier_payment when document matching must be combined with supplier identity, VAT, payee and signature checks. Requires an explicitly approved service fee.
Validates the Irish VAT number format and check letter, then confirms registration live with EU VIES. Returns PASSED, FAILED or UNAVAILABLE (VIES outage) with a reason code and available consultation/audit evidence. Use for one VAT number, not company-name matching or invoice approval. check_company checks CRO status; verify_supplier_payment reconciles claimed supplier identity and VAT; decide_supplier_payment runs the full signed invoice workflow. An outage is uncertainty, not invalid registration; do not auto-pay to retry. Free: 10 attempts per UTC day per IP, shared REST/MCP; failures coun…
Flagship. Independent third-party decision for an Irish supplier invoice. Runs five gates (CRO status NORMAL, EU VIES VAT, payee-name and IBAN check, PO/GRN/invoice 3-way match, RSA signature) and returns exactly one of EXECUTE_PAYMENT, REJECT_PAYMENT or FLAG_FOR_HUMAN_REVIEW with per-check results, reason codes and a confidence score. The legacy CONFIRMATION_OF_PAYEE result means a payee-name comparison with the CRO legal name and IBAN validation, not bank Confirmation of Payee. ERP_THREE_WAY_MATCH compares caller-supplied documents, not independently verified ERP records. Decides only; neve…
Registers an RSA public key (2048-bit or larger, PEM) used to sign payment-decision requests. Keys are immutable per tenant; rotate by registering a new key_id. Returns key_id and registered=true. Use before decide_supplier_payment and use the same tenant/paying wallet for registration and decision. This is not a supplier check, API-key creation or payment authorization. Keep the RSA private key local; a conflicting existing key_id returns a conflict. Inspect and approve the registration fee before calling.
{"properties":{"verification_id":{"description":"UUID returned as verification_id by verify_supplier_payment or POST /v1/verifications. Use a result owned by the same tenant/original paying wallet; do not supply request_id, transaction_id, an invoice number or an A2A task ID.","format":"uuid","title":"Verification Id" ⟨8 unchanged words⟩
UseVerifyforasuppliersupplier's identity and VATreconciliation, not the full signed five-gate invoiceregistrationdecision.andReconcilesreturn theclaimed legal name, companyadvisoryregistrationdecision. IdentitynumberregistryandchecksVATarenumberroutedagainstto the IrishCompanies RegistrationCROOfficefor(IE)and the EU VIESonly. VATservice, and returns an advisory RELEASE, REVIEW, BLOCK or INSUFFICIENT_EVIDENCE decision with per-check results and reason codesisplusverified independentlyverification_id.throughUseEUdecide_supplier_paymentVIES.forRequires thesigned invoice/PO/GRNverification.submitworkflowscope. transaction,individual check tools for one check,customer_assertions andget_verificationpayment_destination are onlytoevaluatedretrievewhen paymentthischecksstoredareresult.enabledThisoncreatestheaservice;verificationotherwiseandthey maycall external sources; it never executes or authorises a bank payment. Requires explicit x402 service-fee approval or an authorized bearer token; do not automatically retry paidbecalls.omitted.
⟨237 unchanged words⟩ title":"Claimed Address"},"claimed_legal_name":{"description":"Legal supplier name claimed on the invoice, to reconcile with registry evidence.","maxLength":300,"minLength":1,"title":" ⟨11 unchanged words⟩ type":"null"}],"default":null,"description":"Irish CRO company number, supplied as a string; not a VAT number.","title":"Company Registration Number"},"country_code":{"description":"Uppercase ISO country code. Company-registry verification currently supports IE only.","pattern":"^[A-Z]{2}$","title ⟨39 unchanged words⟩ type":"null"}],"default":null,"description":"Claimed supplier VAT identifier for VIES reconciliation. Irish VAT validation is supported.","title":"Vat Number"}},"required":[ ⟨148 unchanged words⟩ },"policy_id":{"const":"eu-b2b-payment-v1","description":"Verification policy identifier; always eu-b2b-payment-v1.","title":"Policy Id","type":"string"},"request_id":{"description":"Caller-generated unique request UUID used for idempotency. This is not the returned verification_id used for retrieval.","format":"uuid","title":"Request Id" ⟨13 unchanged words⟩ },"schema_version":{"const":"1.0","description":"Request schema version; always the literal string 1.0.","title":"Schema Version","type":"string"},"supplier":{"$ref":"#/$defs/SupplierInput","description":"Claimed supplier identity and Irish identifiers to reconcile with CRO/VIES; not the signed invoice-decision supplier object."},"transaction":{"anyOf":[{"$ref ⟨14 unchanged words⟩
Looks up an Irish company by CRO number in the Companies Registration Office open data. PASSED only if the company status is NORMAL; dissolved, liquidated or unknown companies FAIL. Returns the registered name. Use a CRO company number, not a company name or VAT number. Source uncertainty returns UNAVAILABLE, not a pass. Use check_vat for VIES registration, verify_supplier_payment for claimed-name/identity reconciliation, or decide_supplier_payment for a complete signed invoice decision. No invoice is approved here. Free: 10 attempts per UTC day per IP, shared REST/MCP; failures count. Then 0…
Cheapest call. Validates an IBAN (ISO 13616 mod-97 checksum, length and country) before you pay it. Returns PASSED or FAILED with a reason code. Irish (IE) IBANs pass by default. Use only for bank-account identifier syntax/country checks, not account ownership, bank Confirmation of Payee or supplier identity. Use check_vat for VAT registration, check_company for CRO status, and decide_supplier_payment for the complete signed invoice decision. No bank transfer occurs. Free: 10 attempts per UTC day per IP, shared REST/MCP; failures count. Then 0.005 USDC with explicit approval.
Checks that a purchase order, goods receipt and invoice agree on supplier, currency, amount, line items, unit prices and quantities received. Stateless; you attach the documents. Checks caller-supplied documents, not independently verified ERP records. Returns PASSED or FAILED and a reason code; no CRO/VIES lookup, signature validation or bank transfer is performed by this tool. Use decide_supplier_payment when document matching must be combined with supplier identity, VAT, payee and signature checks. Requires an explicitly approved service fee.
Validates the Irish VAT number format and check letter, then confirms registration live with EU VIES. Returns PASSED, FAILED or UNAVAILABLE (VIES outage) with a reason code and available consultation/audit evidence. Use for one VAT number, not company-name matching or invoice approval. check_company checks CRO status; verify_supplier_payment reconciles claimed supplier identity and VAT; decide_supplier_payment runs the full signed invoice workflow. An outage is uncertainty, not invalid registration; do not auto-pay to retry. Free: 10 attempts per UTC day per IP, shared REST/MCP; failures coun…
Flagship. Independent third-party decision for an Irish supplier invoice. Runs five gates (CRO status NORMAL, EU VIES VAT, payee-name and IBAN check, PO/GRN/invoice 3-way match, RSA signature) and returns exactly one of EXECUTE_PAYMENT, REJECT_PAYMENT or FLAG_FOR_HUMAN_REVIEW with per-check results, reason codes and a confidence score. The legacy CONFIRMATION_OF_PAYEE result means a payee-name comparison with the CRO legal name and IBAN validation, not bank Confirmation of Payee. ERP_THREE_WAY_MATCH compares caller-supplied documents, not independently verified ERP records. Decides only; neve…
Registers an RSA public key (2048-bit or larger, PEM) used to sign payment-decision requests. Keys are immutable per tenant; rotate by registering a new key_id. Returns key_id and registered=true. Use before decide_supplier_payment and use the same tenant/paying wallet for registration and decision. This is not a supplier check, API-key creation or payment authorization. Keep the RSA private key local; a conflicting existing key_id returns a conflict. Inspect and approve the registration fee before calling.
⟨23 unchanged words⟩ code. Irish (IE) IBANs pass by default. Use only for bank-account identifier syntax/country checks, not account ownership, bank Confirmation of Payee or supplier identity. Use check_vat for VAT registration, check_company for CRO status, and decide_supplier_payment for the complete signed invoice decision. No bank transfer occurs. Free: 10 attempts per UTC day per IP ⟨10 unchanged words⟩
⟨5 unchanged words⟩ :{"iban":{"description":"IBAN tovalidatevalidate;(spacesallowed).and lowercase are normalized. Checks checksum/length/country only, not account ownership.","examples":["IE29AIBK93115212345678"],"maxLength":40,"minLength":5,"title":" ⟨9 unchanged words⟩ "properties":{"request":{"$ref":"#/$defs/IbanCheckRequest","description":"Validate an IBAN: supply this structured object using the nested schema, not a JSON-encoded string."}},"required":["request"],"title ⟨3 unchanged words⟩
⟨26 unchanged words⟩ Checks caller-supplied documents, not independently verified ERP records. Returns PASSED or FAILED and a reason code; no CRO/VIES lookup, signature validation or bank transfer is performed by this tool. Use decide_supplier_payment when document matching must be combined with supplier identity, VAT, payee and signature checks. Requires an explicitly approved service fee.
⟨139 unchanged words⟩ number"},{"type":"string"}],"description":"Positive ordered or invoiced quantity; send an exact decimal string.","title":"Quantity"},"sku":{"description":"Item identifier used consistently across invoice, PO and receipt.","minLength":1,"title":"Sku","type" ⟨6 unchanged words⟩ number"},{"type":"string"}],"description":"Nonnegative unit price in the document currency; send an exact decimal string.","title":"Unit Price"}},"required":[ ⟨100 unchanged words⟩ properties":{"goods_receipt":{"$ref":"#/$defs/GoodsReceipt","description":"Goods receipt linked to the same PO; supply received SKU quantities and supplier CRO number."},"invoice":{"$ref":"#/$defs/Invoice","description":"Invoice document fields, including reference numbers, currency, amount, payee name and line items."},"purchase_order":{"$ref":"#/$defs/PurchaseOrder","description":"Purchase order to compare with the invoice; supply the expected supplier, currency, amount and ordered items."},"supplier_cro_number":{"description":"Expected supplier CRO number to match against the supplied PO and goods receipt; not looked up in CRO by this tool.","maxLength":16,"minLength":1,"title":" ⟨14 unchanged words⟩ "properties":{"request":{"$ref":"#/$defs/ThreeWayMatchRequest","description":"3-way match PO, goods receipt and invoice: supply this structured object using the nested schema, not a JSON-encoded string."}},"required":["request"],"title ⟨3 unchanged words⟩
⟨19 unchanged words⟩ or UNAVAILABLE (VIES outage) with a reasoncode.code and available consultation/audit evidence. Use for one VAT number, not company-name matching or invoice approval. check_company checks CRO status; verify_supplier_payment reconciles claimed supplier identity and VAT; decide_supplier_payment runs the full signed invoice workflow. An outage is uncertainty, not invalid registration; do not auto-pay to retry. Free: 10 attempts per UTC day per ⟨11 unchanged words⟩
⟨7 unchanged words⟩ ":"Irish VAT number, with or withouttheIEprefix.prefix; spaces and lowercase are normalized. Not a CRO number or company name.","maxLength":20,"minLength":2,"title ⟨10 unchanged words⟩ "properties":{"request":{"$ref":"#/$defs/VatCheckRequest","description":"Check an Irish VAT number: supply this structured object using the nested schema, not a JSON-encoded string."}},"required":["request"],"title ⟨3 unchanged words⟩
⟨79 unchanged words⟩ money. Register a signing key first via /v1/agent-keys. Use this for the complete signed invoice/PO/GRN workflow, not verify_supplier_payment's separate identity/VAT contract or get_verification retrieval. Provider uncertainty requires review, not execution; retain independent payment approval. Supply a stable transaction_id for retries and never automatically repay.
⟨139 unchanged words⟩ number"},{"type":"string"}],"description":"Positive ordered or invoiced quantity; send an exact decimal string.","title":"Quantity"},"sku":{"description":"Item identifier used consistently across invoice, PO and receipt.","minLength":1,"title":"Sku","type" ⟨6 unchanged words⟩ number"},{"type":"string"}],"description":"Nonnegative unit price in the document currency; send an exact decimal string.","title":"Unit Price"}},"required":[ ⟨10 unchanged words⟩ properties":{"goods_receipt":{"$ref":"#/$defs/GoodsReceipt","description":"Caller-supplied goods receipt with quantities received against the same PO."},"invoice":{"$ref":"#/$defs/Invoice","description":"Invoice being reviewed, including payee name, amount, currency, PO/GRN references and line items."},"purchase_order":{"$ref":"#/$defs/PurchaseOrder","description":"Caller-supplied purchase order to compare with the invoice; no ERP lookup is performed."},"signature":{"$ref":"#/$defs/SignatureEnvelope","description":"RSA-PSS SHA-256 signature of the normalized canonical request without signature, using a previously registered public-key ID in the same tenant."},"supplier":{"$ref":"#/$defs/Supplier","description":"Supplier CRO number, Irish VAT number and claimed payment IBAN for all five gates."},"transaction_id":{"description":"Stable caller transaction identifier for the same business request. Reuse on retries; changed content with the same ID conflicts.","maxLength":64,"minLength":1,"title":" ⟨159 unchanged words⟩ additionalProperties":false,"properties":{"cro_number":{"description":"Irish CRO company number for the invoice supplier; preserve it as a string.","maxLength":16,"minLength":1,"title":"Cro Number","type":"string"},"iban":{"description":"Supplier's claimed payment IBAN. Validation does not independently establish account ownership.","maxLength":40,"minLength":1,"title":"Iban","type":"string"},"vat_number":{"description":"Supplier Irish VAT number to validate and check against EU VIES, not a CRO number.","maxLength":20,"minLength":1,"title":" ⟨12 unchanged words⟩ "properties":{"payment_request":{"$ref":"#/$defs/PaymentRequest","description":"Decide: pay this supplier invoice or not: supply this structured object using the nested schema, not a JSON-encoded string."}},"required":["payment_request"],"title ⟨3 unchanged words⟩
RetrieveReadaan existing identity/VAT verificationresultcreatedbelongingbytoverify_supplier_payment (POST /v1/verifications). Supply its returned verification_id UUID, not a request_id, transaction_id, invoice number or A2A task ID. Returns the stored RELEASE/REVIEW/BLOCK/INSUFFICIENT_EVIDENCE result without rerunning registry checks. The same authenticatedtenant. Requirestenant must own the result: use the original paying wallet for x402, or an authorized bearer token with verification.read scope.Missing or other-tenant IDs return not found. This does not retrieve decide_supplier_payment decisions and does not create a verification. Retrieval has its own service fee; inspect terms and obtain spending approval before paying. Do not retry payment automatically or infer invoice-payment authorization from a stored advisory result.
{"properties":{"verification_id":{"description":"UUID returned as verification_id by verify_supplier_payment or POST /v1/verifications. Use a result owned by the same tenant/original paying wallet; do not supply request_id, transaction_id, an invoice number or an A2A task ID.","format":"uuid","title":"Verification Id" ⟨8 unchanged words⟩
⟨17 unchanged words⟩ per tenant; rotate by registering a new key_id. Returns key_id and registered=true. Use before decide_supplier_payment and use the same tenant/paying wallet for registration and decision. This is not a supplier check, API-key creation or payment authorization. Keep the RSA private key local; a conflicting existing key_id returns a conflict. Inspect and approve the registration fee before calling.
{"additionalProperties":false,"properties":{"key_id":{"description":"Caller-chosen RSA public-key identifier, unique within your tenant. Reuse it in signature.key_id; rotate with a new ID.","maxLength":128,"minLength":1,"title":"Key Id","type":"string"},"public_key_pem":{"description":"PEM-encoded RSA public key, at least 2048 bits. Never send a private key, wallet key or certificate.","maxLength":16384,"minLength":1,"title": ⟨12 unchanged words⟩
VerifyUseaforsupplier'ssupplier identity and VATregistration andreconciliation,returnnot theadvisoryfull signed five-gate invoice decision.IdentityregistryReconcilescheckstheareclaimedroutedlegaltoname, company registration number and VAT number against the IrishCROCompaniesforRegistration Office (IE)only.and the EU VIES VATisservice,verified independentlyandthroughreturnsEUanVIES.advisoryRequiresRELEASE, REVIEW, BLOCK or INSUFFICIENT_EVIDENCE decision with per-check results and reason codes plus verification_id. Use decide_supplier_payment for theverification.submitsignedscope. transactioninvoice/PO/GRN workflow,customer_assertionsindividualandcheckpayment_destinationtoolsarefor one check, and get_verification onlyevaluatedtowhen paymentretrievechecksthisarestoredenabledresult.onThisthecreatesservice;aotherwiseverificationtheyand maybecallomitted.external sources; it never executes or authorises a bank payment. Requires explicit x402 service-fee approval or an authorized bearer token; do not automatically retry paid calls.
⟨237 unchanged words⟩ title":"Claimed Address"},"claimed_legal_name":{"description":"Legal supplier name claimed on the invoice, to reconcile with registry evidence.","maxLength":300,"minLength":1,"title":" ⟨11 unchanged words⟩ type":"null"}],"default":null,"description":"Irish CRO company number, supplied as a string; not a VAT number.","title":"Company Registration Number"},"country_code":{"description":"Uppercase ISO country code. Company-registry verification currently supports IE only.","pattern":"^[A-Z]{2}$","title ⟨39 unchanged words⟩ type":"null"}],"default":null,"description":"Claimed supplier VAT identifier for VIES reconciliation. Irish VAT validation is supported.","title":"Vat Number"}},"required":[ ⟨148 unchanged words⟩ },"policy_id":{"const":"eu-b2b-payment-v1","description":"Verification policy identifier; always eu-b2b-payment-v1.","title":"Policy Id","type":"string"},"request_id":{"description":"Caller-generated unique request UUID used for idempotency. This is not the returned verification_id used for retrieval.","format":"uuid","title":"Request Id" ⟨13 unchanged words⟩ },"schema_version":{"const":"1.0","description":"Request schema version; always the literal string 1.0.","title":"Schema Version","type":"string"},"supplier":{"$ref":"#/$defs/SupplierInput","description":"Claimed supplier identity and Irish identifiers to reconcile with CRO/VIES; not the signed invoice-decision supplier object."},"transaction":{"anyOf":[{"$ref ⟨14 unchanged words⟩
⟨20 unchanged words⟩ UNAVAILABLE (VIES outage) with a reason code. Free: 10 attempts per UTC day per IP, shared REST/MCP; failures count. Then 0.01 USDC with explicit approval.
{"additionalProperties":false,"properties":{"key_id":{"maxLength":128,"minLength":1,"title":"Key Id","type":"string"},"public_key_pem":{"maxLength":16384,"minLength":1,"title":"Public Key Pem","type": ⟨8 unchanged words⟩