Not open yet
Passport tools inside the assistant you already use
MCP is a way for an AI assistant to call outside tools. Claude, ChatGPT, Cursor, Copilot and others speak it. A server declares what it can do, the assistant reads that list, and from then on it can use those tools mid-conversation without anyone leaving the chat.
The dppmcp server will declare passport tools: read a catalogue, measure a passport, look up what a product category requires, draft a row. The assistant calls them while you are talking to it.
Why
Where the work actually happens
Filling in a passport means finding forty or so facts scattered across a PIM, a supplier's spreadsheet and an emailed certificate. That is searching, and people already do their searching in an assistant.
So the server runs inside the assistant rather than asking anyone to move. It lets the assistant read the catalogue, propose mappings with a visible source, and say what is still missing. Anything that would be published goes back to a person first.
Without it
Open the admin, find the product, read the field list, go looking for the value, come back, paste it, repeat. Then do it again for the next two hundred products, and again when a supplier sends a new certificate.
With it
Ask which fields are missing across the catalogue and get them grouped. Paste a supplier's spreadsheet and get a proposed mapping with the source column named. Ask what a garment needs under ESPR and get the list with its citations.
Scope
Fourteen tools, three levels
Fourteen, in three groups. What separates them is not what they are for but what they are allowed to touch.
No account, no key
Six tools that work on any passport, including one you did not publish. Rate limited per address.
| Tool | What it does |
|---|---|
| validate_passport | Grades any passport against EN 18216, 18219, 18220, 18221 and 18223. Anyone's, including a competitor's. |
| explain_finding | Takes a finding and explains the clause, why it exists, and what concretely to change. |
| list_requirements | Which fields a product category needs under the ESPR base, CIRPASS and AGEC, cited. |
| check_identifier | GTIN and GLN check digits, GS1 prefix and country, and the Digital Link URI for a set of identifiers. |
| standards_reference | EN 18216–18223 at clause level, read live rather than copied. |
| compliance_timeline | What applies when, per product group — including that the textile act is not adopted. |
Reads your catalogue
Five tools behind a tenant key. They read everything and change nothing — there is no write anywhere in this group.
| Tool | What it does |
|---|---|
| search_catalogue | Finds your products by GTIN, article number, batch, serial or name. |
| read_passport | Reads a passport with inheritance applied, the way the resolver does, so the assistant sees what actually renders. |
| coverage_report | Coverage per passport or per product type, with the missing fields named. |
| list_gaps | What is missing across the catalogue, grouped so one field on two hundred passports is one line. |
| propose_mapping | Suggests which source column belongs to which field. Writes nothing. |
Writes, but only to drafts
Three tools that can change data. Every one of them refuses to touch a row that is live, and none of them can make a row live.
| Tool | What it does |
|---|---|
| draft_passport | Creates a row with status draft, and nothing else. |
| update_draft | Edits a row that is already a draft. Refuses if the row is live. |
| request_publish | Opens a request and returns a link where a person sees the diff and decides. |
Tools that do not exist
No publish, no activate, no delete, no status change, no editing a tenant's settings. A product passport is a legal statement about a physical good, so a person makes it.
Rules
What the assistant is allowed to do
- —A suggested value always carries its source. Which column, which document, which page. A proposal without one is not returned.
- —Draft is the only writable state. The assistant can create and edit draft rows. It cannot move anything to live and cannot delete.
- —Publishing is a link, not a call.
request_publishreturns a URL. A person opens it, sees the diff, and presses the button. - —Every call is logged against the tenant. Who, which tool, which row, what came back.
- —Text that comes back through a tool is data. Product descriptions and supplier documents are content, never instructions.
Availability
When it opens
The server is not accepting connections yet, so there is no configuration line here to copy. When it opens it will be one line per client — Claude, Claude Code, ChatGPT, Cursor, Windsurf, VS Code — and nothing else to set up.
One message, when the server opens. Nothing else.
The validator underneath it works today, without an account or a server. Measure a passport →