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.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "search_stations"
  }
}

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. Changed29 schema fields changed
    • removedOutput schema / properties / sourceNotices / additionalProperties / properties / fetchedAt / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / sourceNotices / additionalProperties / properties / fetchedAt / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / sourceNotices / additionalProperties / properties / parts / items / properties / fetchedAt / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / sourceNotices / additionalProperties / properties / parts / items / properties / fetchedAt / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / sourceNotices / additionalProperties / properties / parts / items / properties / stampedAt / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / sourceNotices / additionalProperties / properties / parts / items / properties / stampedAt / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / sourceNotices / additionalProperties / properties / parts / items / properties / stationLink / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / sourceNotices / additionalProperties / properties / parts / items / properties / stationLink / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / sourceNotices / additionalProperties / properties / parts / items / properties / textShort / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / sourceNotices / additionalProperties / properties / parts / items / properties / textShort / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / sourceNotices / additionalProperties / properties / stampedAt / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / sourceNotices / additionalProperties / properties / stampedAt / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / sourceNotices / additionalProperties / properties / stationLink / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / sourceNotices / additionalProperties / properties / stationLink / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / sourceNotices / additionalProperties / properties / textShort / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / sourceNotices / additionalProperties / properties / textShort / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / stations / items / properties / federalState / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / stations / items / properties / federalState / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / stations / items / properties / floodWarning / anyOf
      Previous value: -[
      -  {
      -    "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"
      -  }
      -]New value: +[
      +  {
      +    "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": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "sectionCode": {
      +        "type": "string"
      +      },
      +      "sectionName": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "provider",
      +      "providerLabel",
      +      "sectionCode",
      +      "sectionName",
      +      "level",
      +      "levelLabel",
      +      "publishedAt",
      +      "infoUrl"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / stations / items / properties / latestValue / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / stations / items / properties / latestValue / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / stations / items / properties / latestValueCentimeters / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / stations / items / properties / latestValueCentimeters / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / stations / items / properties / lhpClass / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / stations / items / properties / lhpClass / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / stations / items / properties / sourceNoticeId / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / stations / items / properties / sourceNoticeId / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / stations / items / properties / water / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / stations / items / properties / water / type
      Added value: +[
      +  "string",
      +  "null"
      +]
  2. 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"
      +]
  3. 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)"
  4. 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"
      +]
  5. 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"
      +}
  6. 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"
      +]
  7. 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"
  8. 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"
  9. First observed

TDQS

A3.7/5.0
Behavior4/5

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

The annotations already establish read-only, idempotent, open-world, and non-destructive behavior, so the description does not need to restate safety. It adds meaningful behavioral context beyond the annotations: latestValue is in the station's unit, every result names its data provider in sourceNotice, and that notice must be displayed with any passed-on value, class, or forecast. It still does not describe result limits, pagination, or behavior when no query or filter is provided.

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?

The description is front-loaded with the core search action and scope, followed by filter and attribution details. The attribution sentence is long and somewhat dense, but it conveys a required user-facing behavior rather than padding. Overall it is appropriately sized for a search tool with legal attribution requirements.

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 need not explain return fields, and the annotations cover the basic safety profile. The description supplies domain context, filter semantics, unit handling, and required source notices. However, because all parameters are optional and the tool is open-world, the definition should clarify what happens with an empty search and whether results are limited or paginated.

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 all four parameters and their enums/examples. The description reinforces that query covers station or water names and that the region can be a German federal state or country code, but it adds little syntax or semantic detail beyond what the schema provides. A baseline score of 3 is appropriate when the schema carries most parameter documentation.

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 gives a specific verb and resource: search stations. It also scopes the resource by geography and by several station types, including river gauges, groundwater wells, reservoirs, and coastal gauges. The sibling tool get_station is not named or contrasted, so the definition is clear on its own but does not explicitly differentiate itself from related retrieval tools.

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?

The description implies usage by saying the tool searches by name or water body and can be optionally filtered by region. It does not explicitly say when to use this versus get_station, get_readings, or get_flood_situation, nor does it state when not to use it. The guidance is therefore useful but only implied.

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