Skip to main content
Glama

Pegel suchen

search_stations
Read-onlyIdempotent

Search stations in Germany and its neighbouring countries — river gauges, groundwater wells, reservoirs, coastal gauges — by name or water body, optionally filtered by region (a German federal state or a country code). latestValue is given in the station's unit. Every result names the data provider in sourceNotice (search and flood situation: sourceNotices, keyed by sourceNoticeId); show that notice with any value, class or forecast you pass on, and the licence terms of the API require it.

Input Schema

NameRequiredDescriptionDefault
queryNoStation or water name, e.g. "Köln" or "Rhein"
localeNoLanguage for classification text (headline/description); defaults to German
waterClassNoOnly gauges of these classes: river, lake (lakes and reservoirs), coast (coast and tide), groundwater; omit for all
federalStateNoISO 3166-2 code for a German state, e.g. DE-NW; CH, AT, CZ, LU or FR for a country

Output Schema

NameRequiredDescriptionDefault
noteNoPresent when the result was capped
stationsYes
totalMatchesYesMatches before the result cap
sourceNoticesYesDistinct notices of the listed gauges by key; a gauge names its own in sourceNoticeId

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / waterClass
      Added value: +{
      +  "description": "Only gauges of these classes: river, lake (lakes and reservoirs), coast (coast and tide), groundwater; omit for all",
      +  "items": {
      +    "enum": [
      +      "river",
      +      "lake",
      +      "coast",
      +      "groundwater"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / stations / items / properties / waterClass
      Added value: +{
      +  "description": "river | lake | coast | groundwater — the group the gauge belongs to; measurementType says what it measures",
      +  "type": "string"
      +}
    • changedOutput schema / properties / stations / items / required
      Previous value: -[
      -  "id",
      -  "name",
      -  "water",
      -  "federalState",
      -  "measurementType",
      -  "latestValue",
      -  "unit",
      -  "latestValueCentimeters",
      -  "lhpClass",
      -  "floodWarning",
      -  "sourceNoticeId"
      -]New value: +[
      +  "id",
      +  "name",
      +  "water",
      +  "federalState",
      +  "measurementType",
      +  "waterClass",
      +  "latestValue",
      +  "unit",
      +  "latestValueCentimeters",
      +  "lhpClass",
      +  "floodWarning",
      +  "sourceNoticeId"
      +]
  2. Changed16 schema fields changed
    • addedOutput schema / properties / sourceNotices / additionalProperties / properties / fetchedAt
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "When the values were fetched, UTC"
      +}
    • addedOutput schema / properties / sourceNotices / additionalProperties / properties / form
      Added value: +{
      +  "description": "full-only: show the full text, never shorten; short-allowed",
      +  "type": "string"
      +}
    • addedOutput schema / properties / sourceNotices / additionalProperties / properties / id
      Added value: +{
      +  "description": "Key of the source record",
      +  "type": "string"
      +}
    • addedOutput schema / properties / sourceNotices / additionalProperties / properties / licence
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": {},
      +      "properties": {},
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / sourceNotices / additionalProperties / properties / parts
      Added value: +{
      +  "items": {
      +    "additionalProperties": {},
      +    "properties": {
      +      "fetchedAt": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "When the values were fetched, UTC"
      +      },
      +      "form": {
      +        "description": "full-only: show the full text, never shorten; short-allowed",
      +        "type": "string"
      +      },
      +      "id": {
      +        "description": "Key of the source record",
      +        "type": "string"
      +      },
      +      "licence": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": {},
      +            "properties": {},
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "permissionBasis": {
      +        "type": "string"
      +      },
      +      "rightsHolder": {
      +        "type": "string"
      +      },
      +      "sourceName": {
      +        "type": "string"
      +      },
      +      "sourceUrl": {
      +        "type": "string"
      +      },
      +      "stampedAt": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "The provider's own time stamp, UTC"
      +      },
      +      "stationLink": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Origin page of this gauge where one is required"
      +      },
      +      "text": {
      +        "description": "The full notice as plain text",
      +        "type": "string"
      +      },
      +      "textShort": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Shortened notice; null where it must never be shortened"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "form",
      +      "permissionBasis",
      +      "licence",
      +      "sourceName",
      +      "sourceUrl",
      +      "rightsHolder",
      +      "fetchedAt",
      +      "stampedAt",
      +      "stationLink",
      +      "text",
      +      "textShort"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / sourceNotices / additionalProperties / properties / permissionBasis
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / sourceNotices / additionalProperties / properties / rightsHolder
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / sourceNotices / additionalProperties / properties / sourceName
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / sourceNotices / additionalProperties / properties / sourceUrl
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / sourceNotices / additionalProperties / properties / stampedAt
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "The provider's own time stamp, UTC"
      +}
    • addedOutput schema / properties / sourceNotices / additionalProperties / properties / stationLink
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Origin page of this gauge where one is required"
      +}
    • addedOutput schema / properties / sourceNotices / additionalProperties / properties / text
      Added value: +{
      +  "description": "The full notice as plain text",
      +  "type": "string"
      +}
    • addedOutput schema / properties / sourceNotices / additionalProperties / properties / textShort
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Shortened notice; null where it must never be shortened"
      +}
    • addedOutput schema / properties / sourceNotices / additionalProperties / required
      Added value: +[
      +  "id",
      +  "form",
      +  "permissionBasis",
      +  "licence",
      +  "sourceName",
      +  "sourceUrl",
      +  "rightsHolder",
      +  "fetchedAt",
      +  "stampedAt",
      +  "stationLink",
      +  "text",
      +  "textShort",
      +  "parts"
      +]
    • changedOutput schema / properties / sourceNotices / description
      Previous value: -"Provider notices of the listed gauges by id; a gauge names its own in sourceNoticeId"New value: +"Distinct notices of the listed gauges by key; a gauge names its own in sourceNoticeId"
    • changedOutput schema / properties / stations / items / properties / sourceNoticeId / description
      Previous value: -"Key into sourceNotices; null if none applies"New value: +"Key into sourceNotices; null where no notice can be built (no value then)"
  3. Changed4 schema fields changed
    • addedOutput schema / properties / sourceNotices
      Added value: +{
      +  "additionalProperties": {
      +    "additionalProperties": {},
      +    "properties": {},
      +    "type": "object"
      +  },
      +  "description": "Provider notices of the listed gauges by id; a gauge names its own in sourceNoticeId",
      +  "propertyNames": {
      +    "type": "string"
      +  },
      +  "type": "object"
      +}
    • addedOutput schema / properties / stations / items / properties / sourceNoticeId
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Key into sourceNotices; null if none applies"
      +}
    • changedOutput schema / properties / stations / items / required
      Previous value: -[
      -  "id",
      -  "name",
      -  "water",
      -  "federalState",
      -  "measurementType",
      -  "latestValue",
      -  "unit",
      -  "latestValueCentimeters",
      -  "lhpClass",
      -  "floodWarning"
      -]New value: +[
      +  "id",
      +  "name",
      +  "water",
      +  "federalState",
      +  "measurementType",
      +  "latestValue",
      +  "unit",
      +  "latestValueCentimeters",
      +  "lhpClass",
      +  "floodWarning",
      +  "sourceNoticeId"
      +]
    • changedOutput schema / required
      Previous value: -[
      -  "totalMatches",
      -  "stations"
      -]New value: +[
      +  "totalMatches",
      +  "sourceNotices",
      +  "stations"
      +]
  4. Changed1 schema field changed
    • addedInput schema / properties / locale
      Added value: +{
      +  "description": "Language for classification text (headline/description); defaults to German",
      +  "enum": [
      +    "de",
      +    "en"
      +  ],
      +  "type": "string"
      +}
  5. Changed2 schema fields changed
    • addedOutput schema / properties / stations / items / properties / floodWarning
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": {},
      +      "properties": {
      +        "infoUrl": {
      +          "type": "string"
      +        },
      +        "level": {
      +          "description": "1 no particular vigilance … 4 exceptional flood",
      +          "type": "number"
      +        },
      +        "levelLabel": {
      +          "type": "string"
      +        },
      +        "provider": {
      +          "type": "string"
      +        },
      +        "providerLabel": {
      +          "description": "Credit line of the warning service",
      +          "type": "string"
      +        },
      +        "publishedAt": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "sectionCode": {
      +          "type": "string"
      +        },
      +        "sectionName": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "provider",
      +        "providerLabel",
      +        "sectionCode",
      +        "sectionName",
      +        "level",
      +        "levelLabel",
      +        "publishedAt",
      +        "infoUrl"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "The river section warning this gauge inherits; it describes the reach, not the gauge"
      +}
    • changedOutput schema / properties / stations / items / required
      Previous value: -[
      -  "id",
      -  "name",
      -  "water",
      -  "federalState",
      -  "measurementType",
      -  "latestValue",
      -  "unit",
      -  "latestValueCentimeters",
      -  "lhpClass"
      -]New value: +[
      +  "id",
      +  "name",
      +  "water",
      +  "federalState",
      +  "measurementType",
      +  "latestValue",
      +  "unit",
      +  "latestValueCentimeters",
      +  "lhpClass",
      +  "floodWarning"
      +]
  6. Changed1 schema field changed
    • changedInput schema / properties / federalState / description
      Previous value: -"ISO 3166-2 code for a German state, e.g. DE-NW; CH, AT or CZ for a country"New value: +"ISO 3166-2 code for a German state, e.g. DE-NW; CH, AT, CZ, LU or FR for a country"
  7. Changed2 schema fields changed
    • changedInput schema / properties / federalState / description
      Previous value: -"ISO 3166-2 code for a German state, e.g. DE-NW; CH or AT for a country"New value: +"ISO 3166-2 code for a German state, e.g. DE-NW; CH, AT or CZ for a country"
    • changedOutput schema / properties / stations / items / properties / unit / description
      Previous value: -"cm for rivers; m ü. NN / m ü. M. for wells and Swiss gauges"New value: +"cm over gauge zero; m ü. NN for wells; the datum unit (m ü. M., m ü. A.) for gauges reporting an absolute elevation"
  8. First observed

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/openWorld safety, but the description adds genuinely useful behavioral context beyond them: latestValue is expressed in the station's own unit, and every result carries a provider notice in sourceNotice that the API licence requires be shown. That attribution obligation is real operational guidance not present in structured fields.

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

Conciseness3/5

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

Purpose is front-loaded and the content is dense with useful facts, but the attribution clause is convoluted (the parenthetical 'search and flood situation: sourceNotices, keyed by sourceNoticeId') and the run-on final sentence makes the compliance requirement harder to parse than it needs to be.

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?

An output schema exists, so return shape needn't be explained, and the description still adds the two things an agent needs operationally: unit semantics for latestValue and the sourceNotice attribution duty. For a 0-required-param search tool with full annotation coverage, this is close to complete.

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 schema already documents query, locale, waterClass and federalState. The description restates the region-filter semantics (state or country code) and name/water-body lookup, but adds no syntax or format detail beyond the schema, so the baseline 3 applies.

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 (search) and resource (stations/gauges) and enumerates the concrete station types covered (river gauges, groundwater wells, reservoirs, coastal gauges). The plural search framing clearly contrasts with the singular get_station sibling, so an agent can distinguish them without opening schemas.

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?

Describes the lookup mode (by name or water body, optional region filter), which implies when to reach for it, but never states when NOT to use it or names alternatives like get_station for ID-based retrieval. Usage is inferable but not explicit.

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