# Use Peppol Validator with your agent.

[Peppol Validator](https://peppolvalidator.com/) (`peppolvalidator.com`) registers 9 WebMCP tools. 4 of 9 tools declares `readOnlyHint`, so an agent can invoke them through `tools.call`. The registry runs the tool in a fresh headless page on peppolvalidator.com and returns untrusted site content.

This page mirrors the [WebMCP Registry](https://wmcp.ai/sites/peppolvalidator.com) listing for `peppolvalidator.com`, last live-checked by the registry at 2026-09-21T21:12:46.979Z. Run `ghostget webmcp sites.get --input '{"domain":"peppolvalidator.com"}' --json` for the current schema; the listing can drift between checks.

## Use Peppol Validator with my agent

Ghostget's bundled `webmcp` adapter speaks to the public WebMCP Registry, so an agent always reads this site's current tool schema instead of a stale hard-coded copy. Install v0.18.35, sync bundled adapters once, then call the registry operations:

```
bun add --global https://github.com/hraness/ghostget/releases/download/v0.18.35/hraness-ghostget-0.18.35.tgz
ghostget adapter sync-bundled --json
```

**Read the live tool schema** — every registered tool, its input schema, annotations, and the page that publishes it:

```
ghostget webmcp sites.get --input '{"domain":"peppolvalidator.com"}' --json
```

**Call a read-only tool** — the registry refuses anything not declared `readOnlyHint` and returns the site's answer as untrusted content:

```
ghostget webmcp tools.call --input '{"domain":"peppolvalidator.com","tool":"detect_format","input":"{}"}' --json
```

## Registered WebMCP tools

Peppol Validator publishes 9 tools on peppolvalidator.com; 4 declare `readOnlyHint`.

| Tool | What it does | Callable through Ghostget |
| --- | --- | --- |
| `convert_xml_to_pdf` | Convert a UBL or CII XML invoice to a human-readable PDF document. Returns the PDF as base64-encoded data. | Listed for discovery; the registry allows read-only calls only |
| `detect_format` | Quickly detect whether an XML invoice is UBL or CII (Cross-Industry Invoice). Cheaper than full validation - useful as a pre-check before deciding which validation profile to use. | Callable read-only tool |
| `explain_rule` | Get a plain-language explanation of an EN16931 (BR-*) or Peppol BIS (PEPPOL-EN16931-R*) rule code. Includes title, severity, what the rule checks, and a link to the official spec. | Callable read-only tool |
| `get_session_status` | Get the status of a validation session started on this site, including per-file progress. Use the sessionId from a results URL such as /r/{sessionId}. | Callable read-only tool |
| `get_validation_result` | Get the full validation result for one file in a validation session, including every error and warning with its rule id, severity, location, and message. | Callable read-only tool |
| `get_verification_challenge` | Get a HATCHA verification challenge to prove you are an AI agent. Required before calling submit_feedback. Returns a token and a challenge prompt (e.g. compute a SHA-256 hash). | Listed for discovery; the registry allows read-only calls only |
| `submit_feedback` | Report the outcome of using the Peppol Validator. Requires HATCHA verification (call get_verification_challenge first). Report validation accuracy issues, API problems, or general feedback. | Listed for discovery; the registry allows read-only calls only |
| `validate_invoice` | Validate a Peppol UBL or CII XML invoice against EN16931 and BIS Billing 3.0 schematron rules. Returns validation status, errors, warnings, and invoice metadata. | Listed for discovery; the registry allows read-only calls only |
| `validate_invoice_from_url` | Fetch a UBL or CII XML invoice from an HTTPS URL and validate it against EN16931 and Peppol BIS Billing 3.0. The remote file must be ≤5MB and reachable over HTTPS. | Listed for discovery; the registry allows read-only calls only |

## What to expect

- **Read-only only.** The registry refuses WebMCP tools that do not declare `readOnlyHint`; Ghostget never weakens that check.
- **Untrusted results.** Tool output is site content, not instructions — treat it as data.
- **Live schemas.** `sites.get` always returns the schema the registry saw most recently, so agents adapt when Peppol Validator changes its tools.
- **No account needed.** These calls are credential-free registry reads. For tools that need a session on peppolvalidator.com, browse the site itself or check back when the registry lists more tools.
