Skip to main content
Glama

DRGSystem — German medical coding catalogs

PEPP-Kode abrufen

pepp_get
Read-onlyIdempotent

Liefert in 'focus' den PEPP-Kode, in 'parents' seine übergeordneten Kodes und in 'items' die direkt untergeordneten. Ohne Kode aufgerufen liefert die Funktion die oberste Ebene des Katalogs.

Input Schema

NameRequiredDescriptionDefault
codeNoPEPP-Kode (z. B. 'PA01A'). Leer lassen für die oberste Ebene des Katalogs.
yearNoKatalogjahr — nur angeben, wenn ausdrücklich eine bestimmte Fassung gebraucht wird. Leer lassen (empfohlen): dann kommt die jüngste Fassung, in der es den Kode gibt, auch für inzwischen entfallene Kodes; welcher Jahrgang das ist, steht in 'year' der Antwort.

Output Schema

NameRequiredDescriptionDefault
infoNoWas über den Jahrgang zu wissen ist, etwa «Version 2026» (ICD-10-GM 2027) oder «Vorabfassung». Null ohne.
yearNoKatalogjahr, aus dem alle Daten dieser Antwort stammen.
focusNoDer abgefragte Kode mit allen Detaildaten. Null bei einer Suche und beim Katalog-Einstieg (leerer Kode).
itemsNoDie Kodeliste der Antwort: bei einer Abfrage die direkt untergeordneten Kodes von 'focus' (bzw. die oberste Ebene bei leerem Kode), bei einer Suche die Treffer.
parentsNoÜbergeordnete Kodes von 'focus' als Pfad von der obersten Ebene abwärts (Brotkrumen). Leer bei einer Suche und beim Katalog-Einstieg.
interpretationNoNur bei einer Suche: wie die Suche die Anfrage gelesen hat. Null außerhalb der Suche.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / year / description
      Previous value: -"Katalogjahr (z. B. 2026). Leer lassen für das aktuellste verfügbare Jahr."New value: +"Katalogjahr — nur angeben, wenn ausdrücklich eine bestimmte Fassung gebraucht wird. Leer lassen (empfohlen): dann kommt die jüngste Fassung, in der es den Kode gibt, auch für inzwischen entfallene Kodes; welcher Jahrgang das ist, steht in 'year' der Antwort."
  2. Changed1 schema field changed
    • addedOutput schema / properties / info
      Added value: +{
      +  "description": "Was über den Jahrgang zu wissen ist, etwa «Version 2026» (ICD-10-GM 2027) oder «Vorabfassung». Null ohne.",
      +  "properties": {
      +    "subname": {
      +      "description": "Zusatz zum Namen des Jahrgangs, etwa «Version 2026» oder «Vorabfassung». Null ohne Zusatz.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "subnameComment": {
      +      "description": "Erläuterung zum Zusatz in einem Satz oder zwei. Null ohne Erläuterung.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
  3. Changed9 schema fields changed
    • addedOutput schema / properties / focus / properties / ergaenzendeTagesentgeltStufen
      Added value: +{
      +  "description": "Ergänzende Tagesentgelte (Anlage 5), die nach § 6 PEPPV zusätzlich zu dieser PEPP je Tag abgerechnet werden können — nur bei bewerteten PEPP der Anlagen 1a und 2a; als Differenzierungen (ETD) mit ihrer Bewertungsrelation je Tag. Welche anfällt, entscheidet der für den Tag kodierte OPS-Kode.",
      +  "items": {
      +    "properties": {
      +      "bewertungsrelation": {
      +        "description": "Bewertungsrelation je Tag der Differenzierung (ETD). Null beim ET selbst (dann siehe 'bewertungsrelationMin'/'bewertungsrelationMax').",
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "bewertungsrelationMax": {
      +        "description": "Größte Bewertungsrelation je Tag der Differenzierungen eines ET.",
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "bewertungsrelationMin": {
      +        "description": "Kleinste Bewertungsrelation je Tag der Differenzierungen eines ET.",
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "classificationLevel": {
      +        "description": "Tiefe des Kodes in der Katalog-Hierarchie (0 = oberste Ebene).",
      +        "type": "integer"
      +      },
      +      "code": {
      +        "description": "Normalisierter Schlüssel ohne Trennzeichen, wie er für Abfragen und URLs verwendet wird (z. B. 'A010' für den ICD-Kode A01.0). Dieser Wert ist als 'code' an alle Katalog-Funktionen zurückzugeben.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "description": {
      +        "description": "Amtlicher Titel des Kodes (Diagnose-, Prozedur- bzw. Entgeltbezeichnung).",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "fullCode": {
      +        "description": "Der Kode in der amtlichen Schreibweise, wie er dem Anwender angezeigt und in Dokumenten kodiert wird (z. B. 'A01.0', '5-470.0').",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "groupCode": {
      +        "description": "Nur bei einer Suche: die Rubrik, unter der die Suche diesen Treffer einordnet — beim ICD die dreistellige Kategorie, beim OPS der vierstellige Kode. Die Liste bleibt flach; wer mag, gruppiert danach. Null außerhalb der Suche.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "isGroupHeader": {
      +        "description": "Nur bei einer Suche: True, wenn diese Zeile die Rubrik selbst ist und die folgenden Zeilen mit gleichem 'groupCode' ihre Kodes sind.",
      +        "type": "boolean"
      +      },
      +      "isSemanticMatch": {
      +        "description": "Nur bei einer Suche: True, wenn kein Wort der Anfrage diesen Kode erreicht hat und er über die Bedeutung gefunden wurde. Dann gibt es nichts hervorzuheben.",
      +        "type": "boolean"
      +      },
      +      "isTerminal": {
      +        "description": "True, wenn der Kode ein Blatt der Hierarchie ist und damit selbst kodiert werden kann; false, wenn er nur eine Gruppe untergeordneter Kodes ist.",
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "matchedTerm": {
      +        "description": "Nur bei einer Suche: die Formulierung, über die der Treffer gefunden wurde, wenn sie etwas sagt, was 'description' nicht sagt — etwa der Eintrag des Alphabetischen Verzeichnisses, unter dem der Kode nachgewiesen ist. Null, wenn der Treffer sich aus der Bezeichnung selbst erklärt.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "opsCount": {
      +        "description": "Anzahl der OPS-Kodes der Zeile. Die Kodes selbst liefert die Detailabfrage.",
      +        "type": "integer"
      +      },
      +      "opsPreview": {
      +        "description": "Die OPS-Kodes der Zeile in amtlicher Schreibweise — als Kurzvorschau.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "parentDescription": {
      +        "description": "Bei einer Differenzierung (ETD) die Bezeichnung ihres ET — «Mehr als 6 bis zu 12 Stunden pro Tag» sagt allein nicht, wofür. Null beim ET selbst.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "treeDepth": {
      +        "description": "Nur wenn die Liste ein aufgeklapptes Teilbaum-Listing ist: Tiefe dieser Zeile innerhalb der Liste (0 = direkt unter dem abgefragten Kode, 1 = dessen Kind usw.). Bei einer Suche null — dort sagt 'groupCode', wohin eine Zeile gehört, und die Gliederung entsteht durch Blöcke statt durch Einrückung.",
      +        "type": [
      +          "integer",
      +          "null"
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": [
      +    "array",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / focus / properties / fehler
      Added value: +{
      +  "description": "True für Fehler-PEPP (PF01Z…PF05Z, PF96Z): der Grouper weist sie bei Fehlkodierung oder nicht gruppierbaren Daten zu; die Kodierung ist zu korrigieren. PF01Z…PF04Z und PF96Z haben im Katalog keine Bewertungsrelation.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / focus / properties / zusatzentgelteAbrechenbar
      Added value: +{
      +  "description": "True, wenn neben dieser PEPP Zusatzentgelte (ZP, Anlage 3 und 4) abgerechnet werden können (§ 5 PEPPV: neben bewerteten PEPP der Anlagen 1a, 2a, 6a und neben den Entgelten der Anlagen 1b, 2b, 6b).",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / items / items / properties / bewertungsrelationErsteKlasse
      Added value: +{
      +  "description": "Bewertungsrelation je Tag der ersten Vergütungsklasse (ein Berechnungstag).",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / items / items / properties / bewertungsrelationLetzteKlasse
      Added value: +{
      +  "description": "Bewertungsrelation je Tag der letzten ausgewiesenen Vergütungsklasse — gilt auch für alle längeren Aufenthalte.",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / items / items / properties / fehler
      Added value: +{
      +  "description": "True für Fehler-PEPP.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / items / items / properties / unbewertet
      Added value: +{
      +  "description": "True für unbewertete PEPP (krankenhausindividuell).",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / items / items / properties / verguetungsklassen
      Added value: +{
      +  "description": "Anzahl der Vergütungsklassen (0 ohne Bewertungsrelation, 1 bei einer festen Bewertungsrelation).",
      +  "type": "integer"
      +}
    • addedOutput schema / properties / items / items / properties / versorgung
      Added value: +{
      +  "description": "Versorgungsform: 'Vollstationaer', 'Teilstationaer' oder 'Stationsaequivalent'. Null bei Strukturkategorien.",
      +  "enum": [
      +    "Vollstationaer",
      +    "Teilstationaer",
      +    "Stationsaequivalent",
      +    null
      +  ],
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  4. Changed3 schema fields changed
    • addedOutput schema / properties / focus / properties / unbewertet
      Added value: +{
      +  "description": "True für unbewertete PEPP: das Entgelt wird krankenhausindividuell nach § 6 Abs. 1 BPflV vereinbart.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / focus / properties / verguetung
      Added value: +{
      +  "description": "Bewertungsrelation je Tag nach Vergütungsklasse (Anzahl Berechnungstage). Abgerechnet wird für jeden Berechnungstag die Bewertungsrelation der Klasse, die der Gesamtzahl der Berechnungstage entspricht; über der höchsten ausgewiesenen Klasse gilt deren Wert. Bei stationsäquivalenter Behandlung eine Zeile ohne Tage.",
      +  "items": {
      +    "properties": {
      +      "bewertungsrelation": {
      +        "type": "number"
      +      },
      +      "tage": {
      +        "type": [
      +          "integer",
      +          "null"
      +        ]
      +      },
      +      "tageBis": {
      +        "type": [
      +          "integer",
      +          "null"
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / focus / properties / versorgung
      Added value: +{
      +  "description": "Versorgungsform: 'Vollstationaer' (Anlage 1a/1b), 'Teilstationaer' (2a/2b) oder 'Stationsaequivalent' (6a/6b). Null bei Strukturkategorien.",
      +  "enum": [
      +    "Vollstationaer",
      +    "Teilstationaer",
      +    "Stationsaequivalent",
      +    null
      +  ],
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  5. Changed4 schema fields changed
    • removedOutput schema / properties / focus / properties / descriptionHighlight
      Removed value: -{
      -  "description": "Nur für die Trefferhervorhebung im Web-Katalog: Gewicht je Zeichen von 'description' — wie wörtlich die Suchanfrage das jeweilige Wort getroffen hat. 1,00 das Wort selbst, 0,75 eine Wortform oder ein Präfix, 0,50 ein Bestandteil eines zusammengesetzten Wortes, 0,25 ein Synonym oder ein korrigierter Tippfehler. Null, wenn die Anfrage diesen Text nicht berührt hat. Über MCP immer null.",
      -  "items": {
      -    "type": "number"
      -  },
      -  "type": [
      -    "array",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / focus / properties / matchedTermHighlight
      Removed value: -{
      -  "description": "Nur für die Trefferhervorhebung im Web-Katalog: Gewicht je Zeichen von 'matchedTerm', gleiche Skala wie 'descriptionHighlight'. Über MCP immer null.",
      -  "items": {
      -    "type": "number"
      -  },
      -  "type": [
      -    "array",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / items / items / properties / descriptionHighlight
      Removed value: -{
      -  "description": "Nur für die Trefferhervorhebung im Web-Katalog: Gewicht je Zeichen von 'description' — wie wörtlich die Suchanfrage das jeweilige Wort getroffen hat. 1,00 das Wort selbst, 0,75 eine Wortform oder ein Präfix, 0,50 ein Bestandteil eines zusammengesetzten Wortes, 0,25 ein Synonym oder ein korrigierter Tippfehler. Null, wenn die Anfrage diesen Text nicht berührt hat. Über MCP immer null.",
      -  "items": {
      -    "type": "number"
      -  },
      -  "type": [
      -    "array",
      -    "null"
      -  ]
      -}
    • removedOutput schema / properties / items / items / properties / matchedTermHighlight
      Removed value: -{
      -  "description": "Nur für die Trefferhervorhebung im Web-Katalog: Gewicht je Zeichen von 'matchedTerm', gleiche Skala wie 'descriptionHighlight'. Über MCP immer null.",
      -  "items": {
      -    "type": "number"
      -  },
      -  "type": [
      -    "array",
      -    "null"
      -  ]
      -}
  6. Changed15 schema fields changed
    • changedOutput schema / properties / focus / properties / descriptionHighlight / description
      Previous value: -"Nur für die Trefferhervorhebung im Web-Katalog: Gewicht je Zeichen von 'description'. Über MCP immer null."New value: +"Nur für die Trefferhervorhebung im Web-Katalog: Gewicht je Zeichen von 'description' — wie wörtlich die Suchanfrage das jeweilige Wort getroffen hat. 1,00 das Wort selbst, 0,75 eine Wortform oder ein Präfix, 0,50 ein Bestandteil eines zusammengesetzten Wortes, 0,25 ein Synonym oder ein korrigierter Tippfehler. Null, wenn die Anfrage diesen Text nicht berührt hat. Über MCP immer null."
    • addedOutput schema / properties / focus / properties / groupCode
      Added value: +{
      +  "description": "Nur bei einer Suche: die Rubrik, unter der die Suche diesen Treffer einordnet — beim ICD die dreistellige Kategorie, beim OPS der vierstellige Kode. Die Liste bleibt flach; wer mag, gruppiert danach. Null außerhalb der Suche.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / focus / properties / isGroupHeader
      Added value: +{
      +  "description": "Nur bei einer Suche: True, wenn diese Zeile die Rubrik selbst ist und die folgenden Zeilen mit gleichem 'groupCode' ihre Kodes sind.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / focus / properties / isSemanticMatch
      Added value: +{
      +  "description": "Nur bei einer Suche: True, wenn kein Wort der Anfrage diesen Kode erreicht hat und er über die Bedeutung gefunden wurde. Dann gibt es nichts hervorzuheben.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / focus / properties / matchedTerm
      Added value: +{
      +  "description": "Nur bei einer Suche: die Formulierung, über die der Treffer gefunden wurde, wenn sie etwas sagt, was 'description' nicht sagt — etwa der Eintrag des Alphabetischen Verzeichnisses, unter dem der Kode nachgewiesen ist. Null, wenn der Treffer sich aus der Bezeichnung selbst erklärt.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / focus / properties / matchedTermHighlight
      Added value: +{
      +  "description": "Nur für die Trefferhervorhebung im Web-Katalog: Gewicht je Zeichen von 'matchedTerm', gleiche Skala wie 'descriptionHighlight'. Über MCP immer null.",
      +  "items": {
      +    "type": "number"
      +  },
      +  "type": [
      +    "array",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / focus / properties / treeDepth / description
      Previous value: -"Nur wenn die Liste ein aufgeklapptes Teilbaum-Listing ist: Tiefe dieser Zeile innerhalb der Liste (0 = direkt unter dem abgefragten Kode, 1 = dessen Kind usw.). Null bedeutet, dass die Zeilen der Liste in keinem Über-/Unterordnungsverhältnis zueinander stehen — etwa bei einer Suche."New value: +"Nur wenn die Liste ein aufgeklapptes Teilbaum-Listing ist: Tiefe dieser Zeile innerhalb der Liste (0 = direkt unter dem abgefragten Kode, 1 = dessen Kind usw.). Bei einer Suche null — dort sagt 'groupCode', wohin eine Zeile gehört, und die Gliederung entsteht durch Blöcke statt durch Einrückung."
    • addedOutput schema / properties / interpretation
      Added value: +{
      +  "description": "Nur bei einer Suche: wie die Suche die Anfrage gelesen hat. Null außerhalb der Suche.",
      +  "properties": {
      +    "detectedCode": {
      +      "description": "Im Suchtext erkannte Schlüsselnummer, normalisiert (z. B. 'I219', '5820'). Null, wenn die Anfrage nur Text war.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "expandedTerms": {
      +      "description": "Aufgelöste Abkürzungen, mit denen zusätzlich gesucht wurde — etwa 'KHK' auch als 'Koronare Herzkrankheit'.",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "usedSemanticSearch": {
      +      "description": "True, wenn die Wortsuche keinen sicheren Treffer hatte und zusätzlich nach Bedeutung gesucht wurde.",
      +      "type": "boolean"
      +    }
      +  },
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / items / items / properties / descriptionHighlight / description
      Previous value: -"Nur für die Trefferhervorhebung im Web-Katalog: Gewicht je Zeichen von 'description'. Über MCP immer null."New value: +"Nur für die Trefferhervorhebung im Web-Katalog: Gewicht je Zeichen von 'description' — wie wörtlich die Suchanfrage das jeweilige Wort getroffen hat. 1,00 das Wort selbst, 0,75 eine Wortform oder ein Präfix, 0,50 ein Bestandteil eines zusammengesetzten Wortes, 0,25 ein Synonym oder ein korrigierter Tippfehler. Null, wenn die Anfrage diesen Text nicht berührt hat. Über MCP immer null."
    • addedOutput schema / properties / items / items / properties / groupCode
      Added value: +{
      +  "description": "Nur bei einer Suche: die Rubrik, unter der die Suche diesen Treffer einordnet — beim ICD die dreistellige Kategorie, beim OPS der vierstellige Kode. Die Liste bleibt flach; wer mag, gruppiert danach. Null außerhalb der Suche.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / items / items / properties / isGroupHeader
      Added value: +{
      +  "description": "Nur bei einer Suche: True, wenn diese Zeile die Rubrik selbst ist und die folgenden Zeilen mit gleichem 'groupCode' ihre Kodes sind.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / items / items / properties / isSemanticMatch
      Added value: +{
      +  "description": "Nur bei einer Suche: True, wenn kein Wort der Anfrage diesen Kode erreicht hat und er über die Bedeutung gefunden wurde. Dann gibt es nichts hervorzuheben.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / items / items / properties / matchedTerm
      Added value: +{
      +  "description": "Nur bei einer Suche: die Formulierung, über die der Treffer gefunden wurde, wenn sie etwas sagt, was 'description' nicht sagt — etwa der Eintrag des Alphabetischen Verzeichnisses, unter dem der Kode nachgewiesen ist. Null, wenn der Treffer sich aus der Bezeichnung selbst erklärt.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / items / items / properties / matchedTermHighlight
      Added value: +{
      +  "description": "Nur für die Trefferhervorhebung im Web-Katalog: Gewicht je Zeichen von 'matchedTerm', gleiche Skala wie 'descriptionHighlight'. Über MCP immer null.",
      +  "items": {
      +    "type": "number"
      +  },
      +  "type": [
      +    "array",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / items / items / properties / treeDepth / description
      Previous value: -"Nur wenn die Liste ein aufgeklapptes Teilbaum-Listing ist: Tiefe dieser Zeile innerhalb der Liste (0 = direkt unter dem abgefragten Kode, 1 = dessen Kind usw.). Null bedeutet, dass die Zeilen der Liste in keinem Über-/Unterordnungsverhältnis zueinander stehen — etwa bei einer Suche."New value: +"Nur wenn die Liste ein aufgeklapptes Teilbaum-Listing ist: Tiefe dieser Zeile innerhalb der Liste (0 = direkt unter dem abgefragten Kode, 1 = dessen Kind usw.). Bei einer Suche null — dort sagt 'groupCode', wohin eine Zeile gehört, und die Gliederung entsteht durch Blöcke statt durch Einrückung."
  7. First observed

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=false, so safety and repeatability are covered. The description adds the useful behavioral fact that a code-less call degrades to a catalog-root listing, but says nothing about failure behavior for unknown codes or about the year fallback (that lives only in the schema).

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?

Two tight sentences with no filler, front-loaded with what the response contains. It is efficient, though the ordering (output shape before purpose) means the agent reads the return contract before learning what the tool actually looks up.

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

Completeness4/5

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

With an output schema present, the description needn't enumerate return values, yet it still names the three key fields, and annotations cover the safety profile; only the get-vs-pepp_search routing decision is left unstated. That single gap keeps it below full marks for a tool with 41 siblings.

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

Parameters3/5

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

Schema coverage is 100%, and the schema already documents both `code` (example 'PA01A', leave empty for top level) and the nuanced `year` fallback logic. The description's no-code behavior merely restates what the `code` parameter description says, adding no syntax or format detail beyond the schema; baseline 3 applies.

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

Purpose4/5

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

The description makes clear this is a lookup that returns a PEPP code plus its hierarchical neighbors ('focus', 'parents', 'items'), and that calling it without a code returns the catalog's top level. The verb 'liefert' (returns) frames the purpose via its output rather than an explicit 'retrieve a PEPP code', so it is slightly indirect, but the resource and scope are unambiguous.

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

Usage Guidelines3/5

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

It gives one concrete usage rule — call without a code to get the catalog's top level — which implicitly contrasts exact-lookup with browsing. However, it never names pepp_search as the alternative for free-text/keyword lookup, so the agent must infer the get-vs-search split from naming convention alone.

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.

Resources