DEMO — FIXTURE DATA — NOT A LIVE COMPANY VERIFICATION
See the decision workflow
Three fixture scenarios show exactly what Jithox returns — computed by the same decision engine the production tools use. No live company is contacted; nothing you type is sent to VIES, Peppol, DNS or Stripe.
Two things to read correctly
Accepted is not a verdict. A call that returns HTTP 200 (and, in production, counts one check) only means Jithox ran the check — the business answer is decision.status, below. Unavailable is not invalid. When a provider can't answer, the status is unavailable — an unknown, never invalid or not_registered.
The three decisions
READY — evidence supports proceeding (within limitations)
Fixture Foods BV (fictional) — The receiver is registered on the production Peppol network and accepts BIS Billing 3.0.
Tool: lookup_peppol_participant · Input (fixture): {"countryCode":"BE","vatId":"BE0123456789"}
Decision: ready · canProceed true · requiresHumanReview false
Registered on the Peppol network and accepts BIS Billing 3.0 invoices.
blockingReasons: none
warnings: none
nextActions:
- Proceed with Peppol readiness for this receiver.
Full decision envelope (JSON)
{
"status": "ready",
"summary": "Registered on the Peppol network and accepts BIS Billing 3.0 invoices.",
"decision": {
"canProceed": true,
"requiresHumanReview": false,
"blockingReasons": [],
"warnings": [],
"nextActions": [
"Proceed with Peppol readiness for this receiver."
]
},
"evidence": [
{
"source": "peppol-smp",
"statement": "Registered; BIS Billing 3.0 accepted.",
"observedAt": "2026-07-16T09:00:00Z"
}
],
"limitations": [
"Technical readiness only: not a legal, fiscal or compliance guarantee, not proof a payment or a Peppol delivery will occur, and current only as of the stated check time."
],
"provenance": {
"source": "peppol-smp",
"network": "peppol-production",
"checkedAt": "2026-07-16T09:00:00Z",
"scheme": "0208"
},
"requestId": "demo-ready",
"receiptId": "demo-ready-receipt"
}Signed demo receipt (kind:"demo", key canary-ed25519-147dad7768ced8d7) is in the evaluation bundle — verify it offline (below).
NEEDS_REVIEW — a human must judge, not the agent
Example Widgets SPRL (fictional) — Registered on Peppol, but BIS Billing 3.0 acceptance is not advertised for the queried document type.
Tool: lookup_peppol_participant · Input (fixture): {"countryCode":"BE","vatId":"BE0987654321"}
Decision: needs_review · canProceed false · requiresHumanReview true
Registered on Peppol, but BIS Billing 3.0 acceptance is not confirmed.
blockingReasons: none
warnings:
- The receiver is registered but does not advertise BIS Billing 3.0 support for the queried document type.
nextActions:
- Confirm with the receiver which document types they accept.
Full decision envelope (JSON)
{
"status": "needs_review",
"summary": "Registered on Peppol, but BIS Billing 3.0 acceptance is not confirmed.",
"decision": {
"canProceed": false,
"requiresHumanReview": true,
"blockingReasons": [],
"warnings": [
"The receiver is registered but does not advertise BIS Billing 3.0 support for the queried document type."
],
"nextActions": [
"Confirm with the receiver which document types they accept."
]
},
"evidence": [
{
"source": "peppol-smp",
"statement": "Registered; BIS 3.0 support not advertised.",
"observedAt": "2026-07-16T09:00:00Z"
}
],
"limitations": [
"Technical readiness only: not a legal, fiscal or compliance guarantee, not proof a payment or a Peppol delivery will occur, and current only as of the stated check time."
],
"provenance": {
"source": "peppol-smp",
"network": "peppol-production",
"checkedAt": "2026-07-16T09:00:00Z",
"scheme": "0208"
},
"requestId": "demo-needs_review",
"receiptId": "demo-needs_review-receipt"
}Signed demo receipt (kind:"demo", key canary-ed25519-147dad7768ced8d7) is in the evaluation bundle — verify it offline (below).
UNAVAILABLE — an unknown, never a 'no'
Sample Traders GmbH (fictional) — VIES did not return a reliable answer (timeout). This is NOT 'invalid' and NOT 'not registered'.
Tool: verify_vat_vies · Input (fixture): {"vatNumber":"BE0123456749"}
Decision: unavailable · canProceed false · requiresHumanReview false
VIES could not be reached; no validity claim is made.
blockingReasons: none
warnings: none
nextActions:
- Retry later — VIES availability is outside Jithox's control.
Full decision envelope (JSON)
{
"status": "unavailable",
"summary": "VIES could not be reached; no validity claim is made.",
"decision": {
"canProceed": false,
"requiresHumanReview": false,
"blockingReasons": [],
"warnings": [],
"nextActions": [
"Retry later — VIES availability is outside Jithox's control."
]
},
"evidence": [],
"limitations": [
"Technical readiness only: not a legal, fiscal or compliance guarantee, not proof a payment or a Peppol delivery will occur, and current only as of the stated check time.",
"VIES did not answer (timeout); this is NOT 'invalid'."
],
"provenance": {
"source": "vies",
"checkedAt": "2026-07-16T09:00:00Z"
},
"requestId": "demo-unavailable",
"receiptId": "demo-unavailable-receipt"
}Signed demo receipt (kind:"demo", key canary-ed25519-147dad7768ced8d7) is in the evaluation bundle — verify it offline (below).
The five-tool workflow (order)
An agent calls only the tools a task needs — it does not always run all five.
| Tool | Why | Fixture example | Definitive? |
|---|---|---|---|
validate_vat_number | Local format + checksum (no network). | BE0123456749 → valid format (warns: run VIES next) | indicative (format only) |
verify_vat_vies | Live EU VIES active-registration check. | BE0123456749 → invalid (checksum-valid but not VIES-active — the teaching case) | definitive when VIES answers; else unavailable |
lookup_peppol_participant | Peppol SML/SMP reachability + BIS 3.0. | Fixture Foods → registered + BIS 3.0 | registered/not_registered are definitive; unavailable is not |
validate_invoice | Structural BIS 3.0 completeness + totals. | draft invoice → structural errors listed, if any | structural only — not tax/legal correctness |
get_einvoice_readiness | Composite readiness + next step. | combines the above into one decision | one decision status + nextActions |
Verify a demo receipt offline (2 minutes, no account)
curl -sO https://sanctions.mcp.jithox.com/demo/public-key.pem
curl -sO https://sanctions.mcp.jithox.com/receipts/verify-receipt.mjs
curl -s https://sanctions.mcp.jithox.com/demo/evaluation-bundle.json -o bundle.json
node -e "const b=require('./bundle.json');require('fs').writeFileSync('receipt.json',JSON.stringify(b.scenarios[0].receipt))"
node verify-receipt.mjs receipt.json public-key.pem # → VALID DEMO RECEIPT
A demo receipt verifies with the demo public key and prints VALID DEMO RECEIPT. The production verifier rejects it (unknown key id) — demo evidence can never be shown as a live verification. Alter any field and verification fails.
Integrate before you pay — the evaluation bundle
Download the evaluation bundle — three fixture inputs, their decisions, three signed demo receipts, the demo public key, offline verification and checksums. No production token, key, or customer data. Wire the decision semantics into your agent, then start the pilot for live checks.
Try the workflow with your agent
These prompts analyze the fixtures above; real production MCP calls require the €39 Developer Pilot + OAuth (this demo is a web page, not an MCP endpoint).
- Claude Code / Cursor / VS Code / OpenClaw / OpenAI / any MCP agent: paste a scenario's decision JSON and ask the agent to act on
decision.status,blockingReasonsandnextActions— never on the HTTP code. For live checks: connect the pilot (/agents).
Start the €39 developer pilot → Developer guide Contact: info.jithox@gmail.com