Answers EU Digital Product Passport questions: scope, required fields, registry and law changes.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
TracePass API key as a bearer token (tp_ prefix) or an OAuth 2.0 access token. Mint an API key in the dashboard under Developer -> API Keys.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Creates a **draft** passport in the user's own TracePass account from facts they stated. Use it whenever the user asks to create a passport, including "create and publish": create the draft, then say that publishing is done by the user in TracePass. It never publishes. If the result asks for an identifier, ask the user; never invent one. Use only what this tool returns: add no facts, dates or articles of your own, not even today's date. Keep every citation and the disclaimer line, and any "Planned, not law yet" or "being re-checked" label. Phrase answers about the product type, never as personal duties ("you must"). Never rank or recommend vendors. Never call this advice or yourself a consultant. If the result is not_covered, say so and point to the article given.
Product category key, one of the listed values. Map the user's product to the closest key (paint → paints-coatings, an e-bike battery → battery). Never pass the user's own words. If none fits, there is no passport template for it: say so instead of calling.
The product's name.
The product's GTIN (barcode number, 8–14 digits). Required for most passport types. If missing, the tool will ask the user for it.
Battery only: EV, LMT or industrial_gt_2kwh. Used to count the required fields for that battery type; ask the user rather than guess.
The specific unit's serial number, if the passport is per-unit.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Tool list last changed Oct 23, 2026.
Creates a **draft** passport in the user's own TracePass account from facts they stated. Use it whenever the user asks to create a passport, including "create and publish": create the draft, then say that publishing is done by the user in TracePass. It never publishes. If the result asks for an identifier, ask the user; never invent one. Use only what this tool returns: add no facts, dates or articles of your own, not even today's date. Keep every citation and the disclaimer line, and any "Planned, not law yet" or "being re-checked" label. Phrase answers about the product type, never as personal duties ("you must"). Never rank or recommend vendors. Never call this advice or yourself a consultant. If the result is not_covered, say so and point to the article given.
| Argument | Type | Description |
|---|---|---|
| gtin | string | The product's GTIN (barcode number, 8–14 digits). Required for most passport types. If missing, the tool will ask the user for it. |
| subType | string | Battery only: EV, LMT or industrial_gt_2kwh. Used to count the required fields for that battery type; ask the user rather than guess. |
| category* | string | Product category key, one of the listed values. Map the user's product to the closest key (paint → paints-coatings, an e-bike battery → battery). Never pass the user's own words. If none fits, there is no passport template for it: say so instead of calling. |
| productName* | string | The product's name. |
| serialNumber | string | The specific unit's serial number, if the passport is per-unit. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"category",
"productName"
],
"properties": {
"gtin": {
"type": "string",
"maxLength": 20,
"description": "The product's GTIN (barcode number, 8–14 digits). Required for most passport types. If missing, the tool will ask the user for it."
},
"subType": {
"type": "string",
"maxLength": 100,
"description": "Battery only: EV, LMT or industrial_gt_2kwh. Used to count the required fields for that battery type; ask the user rather than guess."
},
"category": {
"enum": [
"battery",
"construction",
"detergents",
"electronics",
"fmcg",
"furniture",
"jewelry",
"packaging",
"paints-coatings",
"steel",
"textile",
"toys",
"tyres"
],
"type": "string",
"description": "Product category key, one of the listed values. Map the user's product to the closest key (paint → paints-coatings, an e-bike battery → battery). Never pass the user's own words. If none fits, there is no passport template for it: say so instead of calling."
},
"productName": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "The product's name."
},
"serialNumber": {
"type": "string",
"maxLength": 100,
"description": "The specific unit's serial number, if the passport is per-unit."
}
}
}Deletes every stored company fact. Use it only when the user explicitly asks to delete their profile. This is a separate tool so the assistant asks for confirmation before running it. Use only what this tool returns: add no facts, dates or articles of your own, not even today's date. Keep every citation and the disclaimer line, and any "Planned, not law yet" or "being re-checked" label. Phrase answers about the product type, never as personal duties ("you must"). Never rank or recommend vendors. Never call this advice or yourself a consultant. If the result is not_covered, say so and point to the article given.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Shows the company facts the assistant has stored (categories, markets, role, own-brand flag, etc.) and when they were last updated. Use only what this tool returns: add no facts, dates or articles of your own, not even today's date. Keep every citation and the disclaimer line, and any "Planned, not law yet" or "being re-checked" label. Phrase answers about the product type, never as personal duties ("you must"). Never rank or recommend vendors. Never call this advice or yourself a consultant. If the result is not_covered, say so and point to the article given.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Explains the EU DPP Registry and the technical side: registration in the registry, identifiers, QR and data carriers, data formats (JSON, HTML, data models) and standards, and where passport data is kept. Each point carries the date of its source. For who owes, keeps or may hand off a passport, use scope_check. Use only what this tool returns: add no facts, dates or articles of your own, not even today's date. Keep every citation and the disclaimer line, and any "Planned, not law yet" or "being re-checked" label. Phrase answers about the product type, never as personal duties ("you must"). Never rank or recommend vendors. Never call this advice or yourself a consultant. If the result is not_covered, say so and point to the article given.
| Argument | Type | Description |
|---|---|---|
| topic* | string | The topic to answer. |
| locale | string | Language for the answer. Defaults to en. |
| category | string | Optional category filter (e.g. battery) for category-specific guidance. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"topic"
],
"properties": {
"topic": {
"enum": [
"registration",
"identifiers",
"data_carrier",
"data_format",
"standards",
"where_created",
"access"
],
"type": "string",
"description": "The topic to answer."
},
"locale": {
"enum": [
"en",
"bg",
"de",
"it"
],
"type": "string",
"description": "Language for the answer. Defaults to en."
},
"category": {
"type": "string",
"maxLength": 100,
"description": "Optional category filter (e.g. battery) for category-specific guidance."
}
}
}Use it when the user says an answer was wrong or unclear. Pass their words and the `ruleIds` of the answer. The report goes to a review queue. Use only what this tool returns: add no facts, dates or articles of your own, not even today's date. Keep every citation and the disclaimer line, and any "Planned, not law yet" or "being re-checked" label. Phrase answers about the product type, never as personal duties ("you must"). Never rank or recommend vendors. Never call this advice or yourself a consultant. If the result is not_covered, say so and point to the article given.
| Argument | Type | Description |
|---|---|---|
| what* | string | The user's own words describing what was wrong or unclear. |
| ruleIds | array | The ruleIds from the answer that was reported. Pass them from the result unchanged. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"what"
],
"properties": {
"what": {
"type": "string",
"maxLength": 2000,
"minLength": 1,
"description": "The user's own words describing what was wrong or unclear."
},
"ruleIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "The ruleIds from the answer that was reported. Pass them from the result unchanged."
}
}
}Lists the data a passport must contain for a product category, with the article requiring each field, who may see it, how often it changes, and whether it usually comes from the maker or a supplier. Call it without `group` for a summary (counts by group), then with a `group` for the fields. Use only what this tool returns: add no facts, dates or articles of your own, not even today's date. Keep every citation and the disclaimer line, and any "Planned, not law yet" or "being re-checked" label. Phrase answers about the product type, never as personal duties ("you must"). Never rank or recommend vendors. Never call this advice or yourself a consultant. If the result is not_covered, say so and point to the article given.
| Argument | Type | Description |
|---|---|---|
| group | string | Template group name. Omit for a summary; provide to list the fields. |
| locale | string | Language for field labels and descriptions. Defaults to en. |
| subType | string | Battery only: EV, LMT or industrial_gt_2kwh (an industrial battery over 2 kWh). Narrows the required fields to that battery type; an unknown value is refused with the allowed list. |
| category* | string | Product category key, one of the listed values. Map the user's product to the closest key (paint → paints-coatings, an e-bike battery → battery). Never pass the user's own words. If none fits, there is no passport template for it: say so instead of calling. |
Checks whether EU law requires a Digital Product Passport for a type of product, from when, and what the law requires of each role. Use it for "do I need a passport", "from when", "who is responsible", whether that responsibility can be handed to another company, who keeps and stores the passport and whether it must stay available after the company ceases, whether there is one passport per item, batch or model, and for repurposing, remanufacturing, waste or a battery inside another product. Pass whatever facts the user gave; if the result is needs_input, ask the user its questions in plain words and call again. The result's data.inScope is one of: yes, no, pending, depends. Use only what this tool returns: add no facts, dates or articles of your own, not even today's date. Keep every citation and the disclaimer line, and any "Planned, not law yet" or "being re-checked" label. Phrase answers about the product type, never as personal duties ("you must"). Never rank or recommend vendors. Never call this advice or yourself a consultant. If the result is not_covered, say so and point to the article given.
| Argument | Type | Description |
|---|---|---|
| role | string | The user's role in plain words, e.g. "maker", "importer", "reseller". The platform maps this to the act's term. |
| facts | object | Product facts the scope rules declare, e.g. {"battery.capacityKWh": 10}. Any other key is rejected, so pass only a fact you know the rules use (such as one a needs_input result asked for), and never the user's question or free text. |
| locale | string | Language for the answer text. Defaults to en. |
| category | string | Product category key, one of the listed values. Map the user's product to the closest key (paint → paints-coatings, an e-bike battery → battery); use "other" when no key fits. Never pass the user's own words. |
Saves or corrects company facts. Use it when the user states a lasting fact about their company (role, categories, markets, own-brand), or to save a `learnable` fact from a result. The update merges the given facts into the existing profile; it does not replace the whole profile. Use only what this tool returns: add no facts, dates or articles of your own, not even today's date. Keep every citation and the disclaimer line, and any "Planned, not law yet" or "being re-checked" label. Phrase answers about the product type, never as personal duties ("you must"). Never rank or recommend vendors. Never call this advice or yourself a consultant. If the result is not_covered, say so and point to the article given.
| Argument | Type | Description |
|---|---|---|
| role | string | The company's role in the supply chain per EU DPP regulations. |
| markets | array | ISO country codes where the company sells, or ["EU"]. |
| ownBrand | boolean | True if the company sells under its own brand or trademark. |
| products | array | Up to 50 representative products, used as defaults for passport creation. |
| sizeBand | string | Whether the company is an SME or a large enterprise. |
| categories | array | Product categories the company handles, e.g. ["battery", "textile"]. |
Reports changes in EU passport law and standards for the user's categories since a date (default: since they last asked). Use it for "what's new" or "has X been adopted". Items marked "Planned, not law yet" are upcoming obligations, not yet in force. Use only what this tool returns: add no facts, dates or articles of your own, not even today's date. Keep every citation and the disclaimer line, and any "Planned, not law yet" or "being re-checked" label. Phrase answers about the product type, never as personal duties ("you must"). Never rank or recommend vendors. Never call this advice or yourself a consultant. If the result is not_covered, say so and point to the article given.
| Argument | Type | Description |
|---|---|---|
| since | string | ISO date to look back from. Defaults to the date this account last called what_changed (first time: 90 days ago). |
| locale | string | Language for summaries. Defaults to en. |
| categories | array | Product categories to filter by. Defaults to the saved profile categories. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"since": {
"type": "string",
"description": "ISO date to look back from. Defaults to the date this account last called what_changed (first time: 90 days ago)."
},
"locale": {
"enum": [
"en",
"bg",
"de",
"it"
],
"type": "string",
"description": "Language for summaries. Defaults to en."
},
"categories": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100
},
"description": "Product categories to filter by. Defaults to the saved profile categories."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"category"
],
"properties": {
"group": {
"type": "string",
"maxLength": 100,
"description": "Template group name. Omit for a summary; provide to list the fields."
},
"locale": {
"enum": [
"en",
"bg",
"de",
"it"
],
"type": "string",
"description": "Language for field labels and descriptions. Defaults to en."
},
"subType": {
"type": "string",
"maxLength": 100,
"description": "Battery only: EV, LMT or industrial_gt_2kwh (an industrial battery over 2 kWh). Narrows the required fields to that battery type; an unknown value is refused with the allowed list."
},
"category": {
"enum": [
"battery",
"construction",
"detergents",
"electronics",
"fmcg",
"furniture",
"jewelry",
"packaging",
"paints-coatings",
"steel",
"textile",
"toys",
"tyres"
],
"type": "string",
"description": "Product category key, one of the listed values. Map the user's product to the closest key (paint → paints-coatings, an e-bike battery → battery). Never pass the user's own words. If none fits, there is no passport template for it: say so instead of calling."
}
}
}| placedOnMarket | object | When the product was or will be placed on the market. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"role": {
"type": "string",
"maxLength": 120,
"description": "The user's role in plain words, e.g. \"maker\", \"importer\", \"reseller\". The platform maps this to the act's term."
},
"facts": {
"type": "object",
"description": "Product facts the scope rules declare, e.g. {\"battery.capacityKWh\": 10}. Any other key is rejected, so pass only a fact you know the rules use (such as one a needs_input result asked for), and never the user's question or free text.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"locale": {
"enum": [
"en",
"bg",
"de",
"it"
],
"type": "string",
"description": "Language for the answer text. Defaults to en."
},
"category": {
"enum": [
"battery",
"construction",
"detergents",
"electronics",
"fmcg",
"furniture",
"jewelry",
"packaging",
"paints-coatings",
"steel",
"textile",
"toys",
"tyres",
"vehicles",
"other"
],
"type": "string",
"description": "Product category key, one of the listed values. Map the user's product to the closest key (paint → paints-coatings, an e-bike battery → battery); use \"other\" when no key fits. Never pass the user's own words."
},
"placedOnMarket": {
"type": "object",
"required": [
"date"
],
"properties": {
"date": {
"type": "string",
"description": "ISO date or partial date, e.g. \"2027-02\" or \"2027\"."
},
"precision": {
"enum": [
"day",
"month",
"year"
],
"type": "string"
}
},
"description": "When the product was or will be placed on the market."
}
}
}| dataSystems |
| string |
| Short description of the data systems the company uses (e.g. SAP, custom ERP). |
| salesChannels | array | Sales channels the company uses. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"role": {
"enum": [
"manufacturer",
"importer",
"distributor",
"authorised_representative",
"fulfilment_service_provider"
],
"type": "string",
"description": "The company's role in the supply chain per EU DPP regulations."
},
"markets": {
"type": "array",
"items": {
"type": "string",
"maxLength": 10
},
"description": "ISO country codes where the company sells, or [\"EU\"]."
},
"ownBrand": {
"type": "boolean",
"description": "True if the company sells under its own brand or trademark."
},
"products": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"category"
],
"properties": {
"name": {
"type": "string",
"maxLength": 255
},
"facts": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"category": {
"type": "string",
"maxLength": 100
}
}
},
"maxItems": 50,
"description": "Up to 50 representative products, used as defaults for passport creation."
},
"sizeBand": {
"enum": [
"sme",
"large"
],
"type": "string",
"description": "Whether the company is an SME or a large enterprise."
},
"categories": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100
},
"description": "Product categories the company handles, e.g. [\"battery\", \"textile\"]."
},
"dataSystems": {
"type": "string",
"maxLength": 200,
"description": "Short description of the data systems the company uses (e.g. SAP, custom ERP)."
},
"salesChannels": {
"type": "array",
"items": {
"enum": [
"own_shop",
"marketplace",
"retail",
"b2b",
"fulfilment"
],
"type": "string"
},
"description": "Sales channels the company uses."
}
}
}