Playground
What the answers actually look like.
validate_vat_number
Structure and checksum only — no network, no register.
Request
{
"vatNumber": "BE0123456749"
}Response
{
"valid": true,
"issue": "ok",
"countryCode": "BE",
"number": "0123456749",
"normalized": "BE0123456749",
"message": "Structurally valid Belgium VAT number."
}Charged — The tool ran and answered.
Example data — no live source was queried.
verify_vat_vies
Live status against the official EU VIES register, with provenance.
Request
{
"vatNumber": "BE0123456749"
}Response
{
"vatNumber": "BE0123456749",
"countryCode": "BE",
"state": "valid",
"provenance": {
"source": "EU VIES",
"checkedAt": "2026-07-27T12:00:00.000Z",
"expiresAt": "2026-07-28T12:00:00.000Z"
}
}Charged — The tool ran and answered.
Example data — no live source was queried.
verify_vat_vies
The same call when the source cannot answer. The state is unavailable — not invalid, and not a hidden no.
Request
{
"vatNumber": "BE0123456749"
}Response
{
"vatNumber": "BE0123456749",
"countryCode": "BE",
"state": "unavailable",
"provenance": {
"source": "EU VIES",
"checkedAt": "2026-07-27T12:00:00.000Z"
},
"note": "The source could not answer. No claim is made about this VAT number."
}Not charged — A provider outage is never charged — the tool could not run.
Example data — no live source was queried.
lookup_peppol_participant
Whether a receiver is reachable on the Peppol network.
Request
{
"vatId": "BE0123456749",
"countryCode": "BE"
}Response
{
"identifier": "BE0123456749",
"scheme": "0208",
"status": "registered",
"registered": true,
"supportsBis30Invoice": true,
"source": "Peppol SML/SMP",
"checkedAt": "2026-07-27T12:00:00.000Z"
}Charged — The tool ran and answered.
Example data — no live source was queried.
validate_invoice
Full structural report with computed totals — never fails fast.
Request
{
"invoice": {
"invoiceNumber": "INV-2026-0001",
"issueDate": "2026-07-27",
"dueDate": "2026-08-26",
"currency": "EUR",
"supplier": {
"name": "Example Seller BV",
"countryCode": "BE",
"vatId": "BE0123456749",
"street": "Teststraat 1",
"city": "Gent",
"postalZone": "9000"
},
"customer": {
"name": "Example Buyer NV",
"countryCode": "BE",
"vatId": "BE0123456749",
"street": "Proefweg 2",
"city": "Antwerpen",
"postalZone": "2000"
},
"lines": [
{
"description": "Consulting",
"quantity": 2,
"unitPrice": 500,
"vatPercent": 21
}
]
}
}Response
{
"valid": true,
"issues": [],
"totals": {
"currency": "EUR",
"taxExclusiveAmount": "1000.00",
"taxAmount": "210.00",
"payableAmount": "1210.00"
}
}Charged — The tool ran and answered.
Example data — no live source was queried.
get_einvoice_readiness
Your OWN workspace configuration. It takes no company or VAT number and says nothing about a counterparty.
Request
{
"verifyWithProvider": false
}Response
{
"state": "sandbox_ready",
"environment": "sandbox",
"ready": [
"Provider connection configured.",
"Sender identifier registered."
],
"missing": [],
"nextAction": "Run a sandbox invoice to confirm the end-to-end path.",
"availability": {
"outgoingSend": false,
"inboundReceive": false
}
}Charged — The tool ran and answered.
Example data — no live source was queried.
The receipt
Every accepted call returns one of these. This is the real envelope shape.
{
"version": "2",
"keyId": "canary-ed25519-demo-not-a-published-key",
"alg": "Ed25519",
"kind": "execution",
"receiptId": "rcpt_example_0001",
"subject": "dev:example",
"clientId": "client_example",
"tool": "verify_vat_vies",
"requestId": "req_example_0001",
"idempotencyKey": "idem_example_0001",
"policyVersion": "2026-07-27.1",
"scopeDecision": "granted",
"budgetDecision": "charged",
"paymentRail": "none",
"entitlementRef": "ent_example",
"provider": "EU VIES",
"providerStatus": "valid",
"requestHash": "0000000000000000000000000000000000000000000000000000000000000000",
"resultHash": "1111111111111111111111111111111111111111111111111111111111111111",
"createdAt": "2026-07-27T12:00:00.000Z",
"completion": "succeeded",
"retryStatus": "first_attempt",
"signature": "EXAMPLE-SIGNATURE-THIS-RECEIPT-IS-NOT-SIGNED-AND-WILL-NOT-VERIFY"
}How you verify a real one
- 1. Fetch the public key from https://mcp.jithox.com/receipts/public-key.pem.
- 2. Rebuild the signing input: the receipt's canonical fields, sorted, with the signature excluded.
- 3. Verify the Ed25519 signature against that input.
- 4. The key is published, so this works offline and forever — including after a key rotation, because retired public keys stay published.
What this page is not
- · No live source was queried for any example on this page.
- · The values are synthetic. They are not a statement about any real company.
- · The example receipt is unsigned and will not verify.
- · Nothing here creates an account, a credential or a charge.
Run it against the real sources
25 live calls over 14 days, no card.
Start the free trial