Skip to main content
Glama

expand_kg_pois

Read-only

Attraktionen / Tourismus-POIs FÜR einen Place aus dem OSM-Knowledge-Graph (Ausdehnung einer Stadt-/Region-OSM-ID auf die POIs darin). Für „was kann ich in X unternehmen" ist dieses Werkzeug die Auskunft — erst verorten, dann abfragen: die osm_id der Region stammt aus search_place. Tool-Semantik-Abgrenzung: dieses Tool = „WELCHE Attraktionen gibt es IN diesem Place" (KG-basiert). NICHT nearby (das ist Vicinity — „Dinge im Radius um EINEN Punkt"). NICHT search_place (das ist Place- Disambiguierung — „WELCHER Ort ist gemeint"). NICHT resolve_location (Transit-Halte). When to use: Region-Tourismus — DE: „was kann ich in unternehmen", „was gibt es in zu sehen", „Sehenswürdigkeiten in ". EN: „what can I do in ", „attractions in ". Nach search_place(<REGION>) mit der zurückgegebenen osmRel-ID aufrufen. When NOT to use: Vicinity-zu-Punkt (Radius um Koordinaten) → nearby; Detail-Info zu EINEM bereits gefundenen POI → get_poi_details; Place- Auflösung Name→ID → search_place; Wetter/Tide → get_current_weather/get_tide. Required args: osm_id (i64 — die osmRel-ID der Stadt/Region aus einem search_place/places-Treffer, z.B. 1187768 für Wangerland; osmNode als Fallback). Optional: limit (Default 8, clamped 1..=20), types (schema.org-Keywords als Substring-Filter, z.B. ["TouristAttraction"], ["Museum"], ["Event"] — case-insensitive; leer = alle Aktivitäts-/ Tourismus-Klassen), include_address (bool, Default true — löst die Postadresse je Entity auf), family_only (bool, Default false — nur family-taugliche POIs, je mit den tag-belegten Feldern family/indoor/family_categories) und, nur zusammen damit, indoor_only (bool — davon nur die Indoor-/Schlechtwetter-tauglichen). Unterkünfte ausgeschlossen: dieses Tool ist der Aktivitäts-/„unternehmen"- Pfad — Unterkünfte (tourism=hotel/hostel/guest_house/motel/apartment/… ) werden backend-seitig AUSGESCHLOSSEN (ein Hotel ist keine Unternehmung); auch ein Hotel-types-Filter liefert hier nichts. Für Hotels/Pensionen → search_tourism(type=accommodation) (kuratierte Unterkünfte). Typical chain: search_place(<REGION>) → THIS_TOOL(osm_id=) → (optional get_poi_details(osm_id) pro Treffer für tiefere Details). Multi-call: ein Call pro Region/Typ-Filter; Bursting nicht nötig (das Tool fan-out't intern über alle containedInPlace-Entities). Anti-Fab note: POI-Name, type, Beschreibung, Adresse kommen AUSSCHLIESSLICH aus pois[] dieses Aufrufs. returned: 0 / pois: [] heißt: für dieses Gebiet ist nichts abrufbar — so wiedergeben („Ich konnte für aktuell keine Attraktionen abrufen"). OSM-KG-Coverage: deutschlandweit; Tag-Dichte variiert je Region wie in OSM üblich. Returns {place_osm_id, total_contained, tourism_candidates, returned, pois:[{name, type, types, description?, address?, uri, coord?, opening_hours?, fee?, source:'osm'}], attribution?}. Die optionalen Felder je POI sind tag-belegt oder abwesend, nie geraten. attribution (additiv, top-level): die ODbL-Namensnennung der gelieferten OSM-Daten (ODbL) — {id:'ODbL-1.0', notice:'© OpenStreetMap contributors', url:'https://www.openstreetmap.org/copyright'}. EINMAL pro Antwort (nicht pro POI) und nur wenn pois nicht leer ist. Nennst du diese POIs, nenne „OpenStreetMap" als Quelle. „Kinderfreundlich" ist ein Daten-Fakt (Kategorie/Tag-belegt), kein Modell-Raten.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of enriched tourism entities to return (default 8, clamped to 1..=20).
typesNoOptional schema.org type keywords to narrow the result, e.g. ["TouristAttraction"], ["Hotel"], or ["Event"]. Matched case-insensitively as substrings against each entity's schema.org rdf:type. When omitted, all tourism-relevant entities (attractions, hotels, events, gastronomy) are returned.
osm_idYesOpenStreetMap relation/node ID of the city/region (e.g. 1187768 for Wangerland). Use the osmRel id from a `places` result (preferred) or osmNode as fallback.
family_onlyNoFamily mode: query the OSM family allowlist (playground/zoo/aquarium/beach/water_park/…) and keep/rank only family-suitable POIs, each carrying the derived `family`/`indoor`/ `family_categories` fields. Defaults to false (the full region expansion).
indoor_onlyNoRestrict the family result to indoor (rain-safe) POIs (aquarium/indoor_play). Only meaningful with `family_only=true`.
include_addressNoWhether to also resolve each entity's structured postal address (locality, region, postal code) with an extra lookup. Defaults to true.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint/openWorldHint/destructiveHint=false), it discloses non-obvious behavior: accommodations are excluded server-side even when filtered for, empty results must be reported as such rather than invented, per-POI optional fields are tag-backed or absent (never guessed), and an ODbL attribution object appears once per non-empty response. This is genuinely useful context an agent could not derive from the 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.

Conciseness4/5

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

Front-loaded with purpose before the routing apparatus, and the bold section headers make the long text navigable. It is nevertheless verbose, with repetitive capitalized emphasis (WELCHE/WELCHER/WELCHER) and some restatement of the when/when-not split, which costs it the top score.

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 6-parameter, no-output-schema tool this covers everything an agent needs: required vs optional args with defaults and clamps, the exclusion rule, error/empty-state handling, result field shape, attribution obligation, and OSM coverage caveats. Nothing material is left dangling.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it notes the hotel-type example in the schema yields nothing here (backend accommodation exclusion), states the osm_id provenance (osmRel ID from search_place, osmNode fallback), and flags that indoor_only is only meaningful together with family_only. It stops short of extending meaning for every parameter, so not a 5.

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: expands a city/region OSM ID into the tourism POIs contained in it, naming the OSM Knowledge Graph as the source. It explicitly distinguishes itself from three siblings (nearby, search_place, resolve_location) with a labelled 'Tool-Semantik-Abgrenzung' section, so an agent can position it without opening any schema.

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

Usage Guidelines5/5

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

Provides dedicated 'When to use' and 'When NOT to use' blocks with concrete German and English trigger phrases ('was kann ich in <REGION> unternehmen'), plus routing rules to nearby for radius queries, get_poi_details for one POI, and search_tourism for hotels. The Typical chain (search_place → this tool → get_poi_details) and multi-call guidance remove all inference.

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