Skip to main content
Glama

DRGSystem — German medical coding catalogs

Krankenhaus abrufen

kh_get
Read-onlyIdempotent

Liefert in 'focus' die vollständigen Angaben zu einem Krankenhaus: Name, Träger und Trägerart, Art der Zulassung, Anschrift, Kontakt, meldende Krankenkasse, aufgestellte Betten, Stufe der Notfallversorgung, Fachabteilungen nach § 301 SGB V mit Betten sowie die einzelnen Standorte. Anschrift, Betten und Standorte stammen aus dem Krankenhausverzeichnis und sind dem IK über den Namen zugeordnet ('zuordnung'); bei 'Keine' fehlen sie. Das Verzeichnis ist nach Bundesländern gegliedert: ohne Kennzeichen aufgerufen liefert die Funktion die Bundesländer, mit einem Länderschlüssel (z. B. '05') deren Krankenhäuser.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
codeNoInstitutionskennzeichen (IK) des Krankenhauses oder zweistelliger Länderschlüssel. Leer lassen für die Bundesländer.
yearNoKatalogjahr (z. B. 2026). Leer lassen für das aktuellste verfügbare Jahr.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
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. 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"
      -  ]
      -}
  2. Changed16 schema fields changed
    • changedInput schema / properties / code / description
      Previous value: -"Institutionskennzeichen (IK) des Krankenhauses oder Schlüssel eines Bundeslandes bzw. Kreises. Leer lassen für die Bundesländer."New value: +"Institutionskennzeichen (IK) des Krankenhauses oder zweistelliger Länderschlüssel. Leer lassen für die Bundesländer."
    • addedOutput schema / properties / focus / properties / beds
      Added value: +{
      +  "description": "Aufgestellte Betten über alle Standorte.",
      +  "type": [
      +    "integer",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / focus / properties / departments
      Added value: +{
      +  "description": "Fachabteilungen über alle Standorte zusammengezählt, absteigend nach Betten.",
      +  "items": {
      +    "$ref": "#/properties/focus/properties/sites/items/properties/departments/items"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / focus / properties / districtCode / description
      Previous value: -"Amtlicher Kreisschlüssel (Landkreis oder kreisfreie Stadt)."New value: +"Amtlicher Kreisschlüssel (Landkreis oder kreisfreie Stadt), ohne Länderschlüssel."
    • addedOutput schema / properties / focus / properties / einrichtungsTyp
      Added value: +{
      +  "description": "Art der Zulassung: 'Hochschulklinik', 'Plankrankenhaus', 'Versorgungsvertrag' (§ 108 Nr. 3 SGB V), 'OhneVersorgungsvertrag' oder 'Bundeswehrkrankenhaus'.",
      +  "enum": [
      +    "Hochschulklinik",
      +    "Plankrankenhaus",
      +    "Versorgungsvertrag",
      +    "OhneVersorgungsvertrag",
      +    "Bundeswehrkrankenhaus",
      +    null
      +  ],
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / focus / properties / hospitalName / description
      Previous value: -"Name des Krankenhauses laut Verzeichnis."New value: +"Name des Krankenhauses im Krankenhausverzeichnis; kann vom Namen in der IK-Liste ('description') abweichen."
    • addedOutput schema / properties / focus / properties / krankenkasse
      Added value: +{
      +  "description": "Krankenkasse, die für das Krankenhaus nach § 6a KHEntgG meldet (in der Regel die AOK).",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / focus / properties / notfallstufe
      Added value: +{
      +  "description": "Höchste Stufe der allgemeinen Notfallversorgung über alle Standorte.",
      +  "enum": [
      +    "Keine",
      +    "Basis",
      +    "Erweitert",
      +    "Umfassend",
      +    null
      +  ],
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / focus / properties / sites
      Added value: +{
      +  "description": "Standorte mit Anschrift, Betten, Notfallstufe und Fachabteilungen, absteigend nach Betten.",
      +  "items": {
      +    "properties": {
      +      "beds": {
      +        "description": "Jahresdurchschnittlich aufgestellte Betten. 0 bei einer reinen Tages- oder Nachtklinik.",
      +        "type": "integer"
      +      },
      +      "city": {
      +        "description": "Ort.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "departments": {
      +        "description": "Fachabteilungen nach § 301 SGB V mit aufgestellten Betten, absteigend nach Betten. Nur Hauptfachabteilungen mit vollstationären Betten.",
      +        "items": {
      +          "properties": {
      +            "beds": {
      +              "description": "Aufgestellte Betten.",
      +              "type": "integer"
      +            },
      +            "key": {
      +              "description": "Fachabteilungsschlüssel nach § 301 SGB V, vierstellig (z. B. '0100' Innere Medizin).",
      +              "type": "string"
      +            },
      +            "name": {
      +              "description": "Bezeichnung der Fachabteilung.",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "siteCount": {
      +              "description": "An wie vielen Standorten des Hauses die Fachabteilung Betten hat (nur in der Summe über das Haus; beim Standort 1).",
      +              "type": "integer"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "districtName": {
      +        "description": "Landkreis bzw. kreisfreie Stadt.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "email": {
      +        "description": "E-Mail-Adresse.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "houseNumber": {
      +        "description": "Hausnummer.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "municipalityKey": {
      +        "description": "Amtlicher Gemeindeschlüssel, achtstellig.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "name": {
      +        "description": "Name des Standorts.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "notfallModule": {
      +        "description": "Module der speziellen Notfallversorgung, an denen der Standort teilnimmt: 'Schwerverletzte', 'Kinder', 'Spezialversorgung', 'Schlaganfall', 'Herz' (Durchblutungsstörungen am Herzen).",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "notfallstufe": {
      +        "description": "Stufe der allgemeinen stationären Notfallversorgung nach § 136c Abs. 4 SGB V (G-BA-Notfallstufen): 'Keine', 'Basis' (Stufe 1), 'Erweitert' (Stufe 2), 'Umfassend' (Stufe 3). Null, wenn nicht angegeben.",
      +        "enum": [
      +          "Keine",
      +          "Basis",
      +          "Erweitert",
      +          "Umfassend",
      +          null
      +        ],
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "phone": {
      +        "description": "Telefonnummer.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "postalCode": {
      +        "description": "Postleitzahl.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "street": {
      +        "description": "Straße der Anschrift, ohne Hausnummer.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "website": {
      +        "description": "Internetadresse.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / focus / properties / sources
      Added value: +{
      +  "description": "Stand der Quellen.",
      +  "properties": {
      +    "ikListeStand": {
      +      "description": "Stand der InEK-Liste der Institutionskennzeichen mit der meldenden Krankenkasse.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "verzeichnisStand": {
      +      "description": "Stichtag des Krankenhausverzeichnisses der Statistischen Ämter, aus dem Anschrift, Träger, Standorte, Betten und Notfallstufen stammen.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / focus / properties / street / description
      Previous value: -"Straße der Anschrift, ohne Hausnummer."New value: +"Straße der Anschrift des Hauptstandorts (des bettenstärksten), ohne Hausnummer."
    • addedOutput schema / properties / focus / properties / traegerArt
      Added value: +{
      +  "description": "Art des Trägers: 'Oeffentlich', 'Freigemeinnuetzig' oder 'Privat'.",
      +  "enum": [
      +    "Oeffentlich",
      +    "Freigemeinnuetzig",
      +    "Privat",
      +    null
      +  ],
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / focus / properties / zuordnung
      Added value: +{
      +  "description": "Wie das Institutionskennzeichen dem Krankenhausverzeichnis zugeordnet ist: 'Krankenhaus' = ein ganzes Haus mit allen Standorten, 'Standort' = ein einzelner Standort eines Hauses (z. B. nach einer Fusion), 'Keine' = kein sicherer Eintrag gefunden — dann fehlen Anschrift, Betten und Standorte. Die Verbindung beruht auf dem Namen, denn das Verzeichnis führt kein IK.",
      +  "enum": [
      +    "Keine",
      +    "Krankenhaus",
      +    "Standort"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / items / items / properties / beds
      Added value: +{
      +  "description": "Aufgestellte Betten über alle Standorte.",
      +  "type": [
      +    "integer",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / items / items / properties / notfallstufe
      Added value: +{
      +  "description": "Höchste Stufe der allgemeinen Notfallversorgung über alle Standorte.",
      +  "enum": [
      +    "Keine",
      +    "Basis",
      +    "Erweitert",
      +    "Umfassend",
      +    null
      +  ],
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / items / items / properties / siteCount
      Added value: +{
      +  "description": "Anzahl der Standorte laut Krankenhausverzeichnis.",
      +  "type": "integer"
      +}
  3. Changed17 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"
      +  ]
      +}
    • addedOutput schema / properties / items / items / properties / city
      Added value: +{
      +  "description": "Ort der Anschrift.",
      +  "type": [
      +    "string",
      +    "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"
      +  ]
      +}
    • addedOutput schema / properties / items / items / properties / postalCode
      Added value: +{
      +  "description": "Postleitzahl der Anschrift.",
      +  "type": [
      +    "string",
      +    "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."
  4. First observed

TDQS

A4.1/5.0
Behavior4/5

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

The description adds meaningful behavioral context beyond the readOnly/idempotent annotations: output arrives in 'focus', address/beds/locations come from the hospital directory and are assigned via name, and 'Keine' signals missing data. It does not cover all edge cases such as invalid IK handling, but the annotation bar is low and the added provenance detail is valuable.

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

Conciseness5/5

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

The description is dense but purposeful: the first sentence defines the result content, the second explains provenance and missing-value behavior, and the third explains the state hierarchy. There is no fluff or tautological wording, and the most important information is front-loaded.

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?

For a two-optional-parameter read-only tool with an output schema and full parameter documentation, the description is complete enough. It explains the three call modes, data provenance, missing-value semantics, and the scope of returned data, so an agent can invoke it correctly without needing additional context.

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 description coverage is 100%, so the base expectation is 3. The description's mention of blank code returning states and state-key behavior largely restates what the `code` parameter schema already says ('Leer lassen für die Bundesländer'), so it adds limited new parameter-level meaning.

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 clearly states the resource and action: retrieving complete hospital data ('vollständigen Angaben zu einem Krankenhaus') and explicitly lists the returned fields. It distinguishes the tool by its code-based lookup (IK or state key) rather than free-text search, though it does not explicitly name kh_search as the alternative.

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

Usage Guidelines4/5

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

It gives concrete call-mode guidance: with no code it returns the states, with a state key it returns hospitals, and with an IK it returns a hospital. It does not explicitly state when to prefer kh_search or exclude query-based lookups, so it falls short of full alternative-routing guidance.

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