Skip to main content
Glama

TracePass DPP templates (regulatory schemas)

tracepass_templates
Read-onlyIdempotent

Discover the regulatory field schema for each DPP category — what a COMPLIANT passport must contain, per the governing EU regulation. Read-only reference data. Use this to advise on requirements before creating products/passports, and to gap-check a draft against the rules.

Actions (pass via action, with args):

  • list — args: {}. Lists all 13 categories with their field count, required-field count, and governing regulation (name + number + effective/mandatory dates).

  • get — args: { category }. Full field schema for one category: every field's key, label, dataType, whether it is REQUIRED, its access level (public/restricted/authority), enum options, validation bounds, and — where known — the regulation article/annex that mandates it. category is one of: battery, textile, electronics, construction, steel, detergents, paints-coatings, packaging, furniture, tyres, jewelry, toys, fmcg.

BATTERY — required-ness is per-category, so required alone is the wrong answer. Resolve it in this order:

  1. SCOPE FIRST. Only EV, LMT and industrial_gt_2kwh batteries owe a passport at all (Art. 77(1), Reg (EU) 2023/1542). For portable, SLI or industrial_lte_2kwh, NO field is required — do not list mandatory fields for them; say the battery is out of scope.

  2. Then requiredBy[batteryCategory] where the field carries that map (required | conditional | notApplicable).

  3. Then fall back to required. The map is keyed ONLY by the three in-scope categories, so skipping step 1 falls through to required and invents an obligation the Regulation does not impose. Note also that EV and LMT report state-of-health through MUTUALLY EXCLUSIVE field sets — an EV battery must leave the remaining-capacity cluster empty and an LMT battery must leave stateOfCertifiedEnergy empty, so no single battery ever fills every field.

Input Schema

NameRequiredDescriptionDefault
argsNoArguments for the chosen action; `category` is required for get, ignored for list.
actionYesList all DPP category templates, or get one template by category.

Output Schema

NameRequiredDescriptionDefault
idNoThe resource's TracePass id, when the response is a single entity.
pageNoCurrent page number (list actions).
errorNoMachine-readable error code, when the API rejected the request.
itemsNoThe page of results, when the action is a list.
limitNoPage size (list actions).
totalNoTotal matching records across all pages (list actions).
resultNoWraps a non-object response body (e.g. a QR code string).
messageNoHuman-readable error or status detail, when present.
totalPagesNoTotal number of pages (list actions).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedOutput schema / properties / error / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / error / type
      Removed value: -"string"
    • addedOutput schema / properties / message / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / message / type
      Removed value: -"string"
  2. Changed1 schema field changed
    • changedInput schema / properties / args / properties / category / description
      Previous value: -"DPP category to fetch (required for get): battery | textile | electronics | construction | steel | chemicals | packaging | furniture | tyres | jewelry | toys | fmcg."New value: +"DPP category to fetch (required for get): battery | textile | electronics | construction | steel | detergents | paints-coatings | packaging | furniture | tyres | jewelry | toys | fmcg."
  3. Changed6 schema fields changed
    • addedInput schema / properties / action / description
      Added value: +"List all DPP category templates, or get one template by category."
    • removedInput schema / properties / args / additionalProperties
      Removed value: -{}
    • changedInput schema / properties / args / description
      Previous value: -"Action-specific arguments — see the description for each action's shape."New value: +"Arguments for the chosen action; `category` is required for get, ignored for list."
    • addedInput schema / properties / args / properties
      Added value: +{
      +  "category": {
      +    "description": "DPP category to fetch (required for get): battery | textile | electronics | construction | steel | chemicals | packaging | furniture | tyres | jewelry | toys | fmcg.",
      +    "type": "string"
      +  }
      +}
    • removedInput schema / properties / args / propertyNames
      Removed value: -{
      -  "type": "string"
      -}
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "error": {
      +      "description": "Machine-readable error code, when the API rejected the request.",
      +      "type": "string"
      +    },
      +    "id": {
      +      "description": "The resource's TracePass id, when the response is a single entity.",
      +      "type": "string"
      +    },
      +    "items": {
      +      "description": "The page of results, when the action is a list.",
      +      "items": {},
      +      "type": "array"
      +    },
      +    "limit": {
      +      "description": "Page size (list actions).",
      +      "type": "number"
      +    },
      +    "message": {
      +      "description": "Human-readable error or status detail, when present.",
      +      "type": "string"
      +    },
      +    "page": {
      +      "description": "Current page number (list actions).",
      +      "type": "number"
      +    },
      +    "result": {
      +      "description": "Wraps a non-object response body (e.g. a QR code string)."
      +    },
      +    "total": {
      +      "description": "Total matching records across all pages (list actions).",
      +      "type": "number"
      +    },
      +    "totalPages": {
      +      "description": "Total number of pages (list actions).",
      +      "type": "number"
      +    }
      +  },
      +  "type": "object"
      +}
  4. First observed

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing load-bearing domain behavior: per-category required-ness, the Art. 77(1) scope gate that makes portable/SLI/low-capacity industrial batteries out-of-scope, and the mutually exclusive EV vs LMT state-of-health field sets. It also warns that skipping the scope step 'invents an obligation the Regulation does not impose' — exactly the kind of failure mode an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then action/args blocks, then the critical battery caveat — a sensible order. The length is largely justified by genuinely tricky battery semantics, though a few clauses overlap with what the annotations and schema already state.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return-value detail is not required, and the annotations already carry the safety profile. The description nonetheless supplies the domain-specific rules (scope gating, per-category required logic, mutually exclusive field clusters) that no structured field covers, making it fully sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents action and category, giving a baseline of 3. The description earns above baseline by enumerating the 13 category values, spelling out which args each action takes, and describing what each returns (field counts, required counts, governing regulation).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'Discover the regulatory field schema for each DPP category' — and immediately scopes it as read-only reference data describing what a compliant passport must contain. This clearly separates it from mutation-oriented siblings like tracepass_products and tracepass_passports.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly gives when-to-use: 'advise on requirements before creating products/passports' and 'gap-check a draft against the rules', routing the agent here as a pre-flight reference rather than to the product/passport tools. The battery section further prescribes a concrete resolution order (scope first, then requiredBy, then required).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.