Skip to main content
Glama

get_tourism_details

Read-only

Kuratiertes Detail zu EINEM Niedersachsen-Hub-Treffer per id — Beschreibung, Öffnungszeiten, ECHTER Preis, Adresse, Medien. Für „was kostet der Eintritt für X", „wann hat X geöffnet" ist dieses Werkzeug die Auskunft, nicht das Allgemeinwissen. Tool-Semantik-Abgrenzung: dieses Tool = Detail zu EINEM kuratierten NDS-Treffer (dessen id/global_id). NICHT get_poi_details (das ist die OSM-Detail-Bridge per OSM-ID). NICHT search_tourism (das ist die kuratierte Region-/Typ-SUCHE die die id erst liefert). When to use: nach search_tourism lieferte einen Treffer mit id und die Anfrage will Detail/Preis/Öffnungszeiten — DE: „was kostet der Eintritt für ", „Öffnungszeiten von ", „erzähl mir mehr zu ". EN: „opening hours / price of ". When NOT to use: ohne vorherigen search_tourism-Treffer mit id (KEIN raten/erfinden einer id); OSM-POI-Detail per OSM-ID → get_poi_details; Region-Suche → search_tourism. Required args: id (die id ODER global_id aus einem search_tourism-Treffer, z.B. "e_101102405"). Optional: query (Region/ Name-Hint — dieselbe Region wie bei der Suche; die kuratierte Quelle hat KEINEN Objekt-per-id-Endpunkt, daher re-sucht das Detail diesen Scope und matcht die id; ohne Hint ggf. honest-empty für ids außerhalb der Default-Seite). Typical chain: search_tourism(region=<R>, type=event)get_tourism_details(id=<treffer.id>, query=<R>). Multi-call: ein Call pro id; nach search_tourism mit N Treffern pro Top-Treffer parallel rufbar. Anti-Fab note: Name, Beschreibung, Preis, Öffnungszeiten, Adresse kommen AUSSCHLIESSLICH aus sources[].subjects[].properties dieses Aufrufs. Wenn sources: [] → honest fallback („Zu diesem Treffer konnte ich keine Detail-Informationen abrufen"), NIEMALS aus Trainings-Wissen. Returns {id, sources:[{source, license?, subjects:[{subject, properties:{name, type, description?, opening_hours?, price?, address?, date?, media?, coord?, url?, hub_detail_url?}}]}], facts?}. Die Felder sind die schema.org-Felder des kuratierten Datensatzes: price aus priceRange/offers, opening_hours aus openingHoursSpecification, coord aus geo, url = schema.org-Link — alle additiv, present nur wo die Quelle sie trägt. Bei einer Tour (t_…) zusätzlich: path_on_map — ihr Verlauf als [{lat,lon}], ausgedünnt auf die Punkte, die seine Form tragen; das ist die zeichenbare Strecke, und NUR das Detail trägt sie (die Suche nicht). Dazu die Achsen des Datensatzes: length_m, duration_min, ascent_m/descent_m, round_trip, activities (wörtlich, als was er die Tour führt). Alle aus ET2014A.json, alle nur present wo die Quelle sie führt — eine fehlende Achse ist unbekannt, keine Null. facts (additiv, top-level): normalisierte Öffnungszeiten + Preis mit Pro-Feld-Provenance — kuratiert hat Quellen-Priorität VOR der OSM-Bridge get_poi_details. price.free=true bei explizit kostenlos/Eintritt frei, false bei einem Betrag; price.raw trägt den kuratierten Preis-String wörtlich. Fehlen opening_hours UND price → facts ABWESEND (ehrlich, nie erfunden). hub_detail_url (additiv, in properties, nur bei source: 'niedersachsen-hub'): die kanonische Entitätsseite dieses Datensatzes beim Niedersachsen-Hub, dem Nutzer nennbar — NICHT die Betreiber-Website, die daneben in url steht. Jeder Datensatz dieser Quelle, dessen Art beim Hub eine Eintragsseite hat, trägt sie schon im ersten Aufruf: POI (p_…), Tour (t_…), Veranstaltung (e_…), Unterkunft (h_…), Gastronomie (g_…), Gebiet (r_…). Ein Medien-Datensatz (m_…) hat keine solche Seite und trägt sie nicht. Fehlt sie, keine konstruieren. license (additiv, NEBEN source im sources[]-Eintrag — nicht in properties): {id?, url?, notice?, holder?} = Lizenz-Kennung, Lizenz-Text-URL, der WÖRTLICH wiederzugebende Lizenzverweis (DZT-copyrightNotice, § 3 der DZT-Nutzerbedingungen) und der zu nennende Urheber (das author- bzw. copyrightHolder-Feld des Datensatzes). Gibt er nichts an, ist das Feld abwesend — nie eine geratene Vorgabe-Lizenz. Nennst du einen Datensatz mit license.holder, nenne den Urheber mit.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesThe `id` or `global_id` of a curated record from a prior `search_tourism` result (e.g. "e_101102405").
queryNoRegion/name hint to scope the lookup — pass the same region you searched in `search_tourism`. The curated source has no object-by-id endpoint, so the details lookup re-searches that scope and matches the id; without the hint it may honest-empty for ids outside the broad default page.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the readOnly/openWorld/destructive annotations, it discloses honest-fallback behavior for empty sources, states that data never comes from training knowledge, explains that absent fields/facts/license are deliberately omitted, and documents the re-search scoping behavior. This is substantial additional behavioral context that annotations alone would not provide.

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 very long but well-structured with bold headings, front-loaded purpose, and uses sections. It earns most of its length through necessary edge-case and provenance rules, though some repeated 'additiv/abwesend' phrasing could be trimmed.

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?

With no output schema, the description fully documents the return shape (id, sources[].subjects[].properties, facts, hub_detail_url, license), tour-specific fields, and fallback semantics. Coverage is strong enough for an agent to invoke the tool correctly and interpret results without external knowledge.

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

Parameters5/5

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

Though schema coverage is 100%, the description adds critical semantics: id can be id or global_id from search_tourism and must not be guessed; query is a region/name hint because the source has no object-by-id endpoint and its absence can cause honest-empty. It also gives a concrete id example.

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?

The description opens with a specific verb and resource: 'Kuratiertes Detail zu EINEM Niedersachsen-Hub-Treffer per id' listing the fields (description, opening hours, price, address, media). It explicitly differentiates from get_poi_details and search_tourism, making the purpose unmistakable even among siblings.

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?

It provides dedicated 'When to use' and 'When NOT to use' sections, names alternatives (get_poi_details, search_tourism), and gives a typical chain plus multi-call guidance. The conditions for when not to use (no prior search_tourism hit, no guessing ids) are explicit and actionable.

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