Skip to main content
Glama

DRGSystem — German medical coding catalogs

Krankenhäuser durchsuchen

kh_search
Read-onlyIdempotent

Durchsucht das Krankenhausverzeichnis nach Institutionskennzeichen (IK), Name oder Ort. Die Treffer stehen in 'items'; Anschrift und Kontaktdaten liefert kh_get zum einzelnen Haus.

Input Schema

NameRequiredDescriptionDefault
yearNoKatalogjahr (z. B. 2026). Leer lassen für das aktuellste verfügbare Jahr.
limitNoMaximale Anzahl Treffer, 1 bis 100. Standard 25.
queryYesSuchbegriff: Institutionskennzeichen (IK), Name des Krankenhauses oder Ort (z. B. 'Charité', 'Leipzig').

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
    • 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"
      +  ]
      +}
  2. 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"
      -  ]
      -}
  3. Changed15 schema fields changed
    • 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"
      +}
  4. 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."
  5. First observed

TDQS

A4/5.0
Behavior3/5

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

The annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is fully covered without the description. The description adds only the result container name ('items'), which the output schema already provides, and the complementarity with kh_get. It says nothing about match behaviour (fuzzy vs. exact), sort order, or how the year parameter affects the result set.

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?

Two sentences, zero filler, and the search scope is front-loaded before the pointer to the follow-up tool. Every clause carries information.

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 annotations, a full input schema and an output schema present, the definition covers what an agent needs to select and invoke the tool. The only residual gap is describing what counts as a match and how the optional catalog year changes the result, which the description leaves entirely to the schema.

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 parameter meaning is already fully documented, including the year and limit semantics. The description restates the query options (IK, Name, Ort) with example values but adds no syntax or behavioural detail beyond the schema, which is the expected baseline.

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 ('Durchsucht das Krankenhausverzeichnis') plus the three searchable fields (IK, Name, Ort). It also distinguishes itself from the sibling kh_get by assigning address and contact details to that tool, so an agent can choose between them without opening a schema.

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?

The second sentence establishes the division of labour: this tool finds the hospitals, kh_get retrieves address and contact data for a single house. That is clear routing guidance, though it does not state any explicit exclusion (e.g. that kh_get needs an IK from this result) or behaviour when a query matches nothing.

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