Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
VIAFREI_MCP_URLNoEndpoint to relay to. Default https://mcp.viafrei.de/mcp. Equivalent to --url.https://mcp.viafrei.de/mcp
VIAFREI_MCP_TIMEOUT_MSNoPer-request timeout in milliseconds. Default 30000. Equivalent to --timeout.30000

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": true
}
resources
{
  "subscribe": true,
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
check_autobahn_trafficA

Returns jams, slow traffic, closures and roadworks in force this minute on up to 5 German motorways, with delay and speed. Use when the question is about the road now: Stau, a delay, how it looks, or which closures are reported; name every motorway (Munich→Berlin: A9). Do NOT use for whether a road is open or passable — check_road_status at any clock — nor a closure with no time word or a later one (tonight, the weekend); for Baustellen dated or geplant — find_roadworks_ahead; nor city streets, fuel (find_cheapest_fuel) or trains (get_train_departures). ~5 min old. Show the attribution line.

find_cheapest_fuelA

Returns the cheapest stations for one fuel grade near a place or coordinate: price per litre, brand, address, distance, open state. Use when the user asks where to fill up or what fuel costs. Do NOT use for charging an electric car (call find_charging_station), price history, or traffic (call check_autobahn_traffic). Radius ≤ 25 km, at most 10 stations. For a brand, a name, open now or at a named time, or nearest-first, call find_fuel_station. Each line names the age of its price and opening-hours claim. Prices are consumer information only; the attribution line and MTS-K note must be shown.

find_fuel_stationA

Finds filling stations around a place or coordinate under any combination of filters — grade, brand, name, open now, open at a time you name, open 24 h — sorted by distance, price or name. Use when the question is WHICH station: the closest diesel to a stop, an ARAL open tonight, what one forecourt sells. Do NOT use for the plain "where is fuel cheapest" question (call find_cheapest_fuel) or for charging an electric car (call find_charging_station). Every result carries the attribution and the MTS-K note, and says how old each price and opening-hours claim is.

find_parkingA

Returns parking near a place, a coordinate or along one motorway: rest areas with lorry spaces, car parks and park-and-ride sites, with total spaces and, where published, free spaces now and the reading's age. Use when someone asks where to park or leave the car for the train ("Parkhaus in Köln", "Rastplatz A3", "P+R"). Do NOT use for fuel (find_cheapest_fuel) or EV charging (find_charging_station). Radius ≤ 25 km, ≤ 10 sites per list; ODbL and CC BY-SA sources are separate lists (up to three). No "free now" means no published count, not full. Every answer carries each source's attribution.

check_road_statusA

Returns whether one German motorway or federal road is open, closed or restricted, now and in the coming days. Use when the question is whether the road is open or passable — "ist die A8 offen", "ist die A8 in diesem Moment gesperrt", "komme ich durch" — at any clock, plus closures tonight, at the weekend or with no time word. Do NOT use for jams and delays, a whole multi-motorway route, or what is reported on a motorway this minute — call check_autobahn_traffic; for roadworks over a date window — find_roadworks_ahead. One road per call, ≤ 14 days, ≤ 11 entries. Show the attribution line.

find_roadworks_aheadA

Returns the roadworks PLANNED on one German motorway inside a date window: the section and direction as published, what is restricted, and the start and end. Use when a date or window is named, the question says geplant, or someone asks how long a site lasts ("Baustellen auf der A7 in den Sommerferien?"). ONE road per call. Do NOT use when more than one motorway is named, for the situation this minute, or for Baustellen with neither date nor geplant — all three are check_autobahn_traffic; whether a road is open — call check_road_status. ≤ 92 days, max 20 sites. Show the attribution line.

find_charging_stationA

Returns EV charging sites near a place or coordinate with operator, connector types, maximum power, price per kWh where published, and how many points are free right now where the operator publishes live status. Use when an EV driver asks where to charge ("Wo kann ich laden?", "CCS 150 kW near Leipzig", "ist gerade eine Säule frei?"). Do NOT use for petrol or diesel — call find_cheapest_fuel; for E-Kennzeichen or Ladekarte rules — call get_driving_rules. Radius ≤ 25 km, ≤ 10 sites; availability is missing for most operators and is then unknown, never free. Show the attribution line.

find_placeA

Looks up a place name and returns every place that matches, each with its kind, official key (AGS/RS), population, English name and coordinate. Use when the person asks where somewhere is, when you need a coordinate for another tool, and above all to RECOVER after a tool reported a name as ambiguous — this is where you find out which Neustadt is which. Pass near to rank and separate same-named places by distance. Do NOT use to find a company, shop or landmark: call find_poi. At most 10 results, radius <= 200 km. Every result carries an attribution line that must be shown to the user.

find_poiA

Finds a named business or landmark — company, shop, clinic, hotel — and returns its address, category and coordinate. Use when the person names a THING rather than a town: "the adesso office in Dortmund", "the nearest Aldi". The coordinate it returns passes to any other tool as lat/lon. Do NOT use for a town, district or station (every tool's place resolves those), nor for fuel, charging or parking, which have their own tools. Give "in" (a town) when you can: far faster than searching nationwide. At most 10 results, radius <= 50 km. OpenStreetMap under ODbL 1.0; show the attribution line.

find_addressA

Looks up a street address and returns its coordinate, plus what OpenStreetMap holds under it. Use when the person gives a STREET AND NUMBER — "Hauptstraße 12, Fulda" — for the point, or to see what is mapped there. The coordinate passes to any other tool as lat/lon. Do NOT use for a town/district/station name alone (find_place) or a company/shop/landmark by name (find_poi) — needs a street and a number. At most 5 results; more than one means the door is mapped twice, not that the address is ambiguous. OpenStreetMap ODbL 1.0; show the attribution line.

describe_locationA

Turns a coordinate into words: the nearest address, settlement, Kreis, administrative area and motorway junction, each with its own distance. Use when you already HAVE a lat/lon and need to say where that is. Do NOT use to look up a place or address BY NAME — that is find_place, find_poi or find_address; this only goes coordinate to words. The gazetteer facts are the NEAREST point, not a boundary lookup — near a border it can differ, and the admin point can be a Regierungsbezirk, not a Land. OpenStreetMap ODbL 1.0 for the address; show the attribution line.

find_nearbyA

Overview of what is around a place or coordinate: nearby fuel stations, EV charging, parking, the nearest railway station and motorway junction, each with its distance. Use when someone asks "what is around me" or "what is near " — a broad look, not one category in depth. Do NOT use for a fuel grade's price (find_cheapest_fuel), charger/connector status (find_charging_station), parking kind/occupancy (find_parking), a NAME lookup (find_place/find_poi/find_address), or a coordinate's address (describe_location). Radius ≤ 15 km, up to 3 per category. Shows each source's attribution.

get_driving_rulesA

Returns the German road rules a visitor needs: low-emission zones (Umweltzone) and which Feinstaubplakette a city requires, speed limits (advisory 130), winter tyres, alcohol, the Sunday lorry ban, tolls (no car toll), Rettungsgasse, what must be in the car, and electric cars (E-Kennzeichen, ad-hoc payment, plugs). Use when someone drives through Germany or asks whether they may enter a city. Do NOT use for live traffic or closures: check_autobahn_traffic; to FIND a charger: find_charging_station. Optional city narrows to its zone. Sourced and dated; show the attribution. Not legal advice.

check_transit_disruptionA

Returns how punctual public transport is right now in one German region: the share of distinct trips at least once more than 5 minutes late, trips with a cancelled stop, the trend against the previous window, and how many trips that rests on. Use when the user asks whether buses and trains are running normally, or whether a strike or storm is disrupting local transport. Do NOT use for one line, trip or station — per-line realtime is unavailable; the region's figures are the answer. Region-wide aggregates only; window ≤ 120 min. CC BY-SA (share-alike): show the attribution line to the user.

check_weather_warningsA

Returns the official DWD weather warnings in force for a place or coordinate — storm, snow, ice, heavy rain, thunderstorm, heat — with the DWD's own Warnstufe 1–4, the area, the local validity window and the official text unaltered. Use when someone asks about weather for a trip, whether it is safe to drive somewhere, or about storm, snow or ice warnings. Do NOT use for a plain forecast (not offered: warnings only) or for closures and jams (call check_autobahn_traffic). Says so when the data is not current instead of reporting an all-clear. Show the result's attribution line to the user.

get_train_departuresA

Next departures from a German railway station, with platform, delay and cancellations. Use when asked when a train, S-Bahn or ICE leaves a named station, or whether THAT departure is late; vague later-today wording ("heute Abend") stays here. Whether ONE line is punctual ("ist die S1 pünktlich?") is NOT this tool, though it is rail and about delay — call check_transit_disruption. Do NOT use for buses, trams, a non-railway stop, another day or a time over 2 h away — get_departures. No destination filter: read the board. Max 15 departures, window 120 min. Results carry their attribution line.

get_departuresA

Scheduled departures from any German public-transport stop — bus, tram, U-Bahn, S-Bahn, train, ferry — with line, destination, platform. Use when someone asks when a bus, tram, U-Bahn or ferry goes, or for another DAY or a clock time over 2 h away: "Wann fährt der nächste Bus ab Fulda Bahnhof?" Do NOT use for a railway station's trains now or later today — get_train_departures. Planned times only: for "is my bus late?" give the plan and say so; regional punctuality check_transit_disruption. No destination filter: read the board. Window 48 h, 15 per call. Results carry their attribution line.

check_station_facilitiesA

Report whether a German railway station's lifts and escalators are working right now: each one, where it is, its state (in service / out of service / unknown) and the operator's own explanation. Use when someone asks about step-free access or a broken lift — "Funktioniert der Aufzug am Kölner Hauptbahnhof?", "is the lift at Hamburg Hbf working?", "Rolltreppe kaputt?", travelling with a wheelchair, a pram or heavy luggage. Do NOT use for train times, platforms or delays — call get_train_departures. At most 50 facilities, out-of-service ones first. Results carry their attribution line.

watch_situationA

Opens a watch so THIS conversation is told when something changes: a road reopening, a stop running late, a weather warning starting, a charge point turning free. Use when the person asks to be told later: "sag mir Bescheid, wenn die A8 wieder frei ist", "tell me when a charger is free". Do NOT use to look something up now (call check_road_status, check_autobahn_traffic or find_charging_station), and do NOT use when an e-mail, SMS or any alert outside this chat was asked for — we cannot send one; say so. Session-scoped. At most 10 watches, 24 h each. Results carry their attribution line.

stop_watchA

Ends a watch this conversation opened with watch_situation, so no further change notifications arrive for it. Use when the person no longer needs to be told — "du musst mir nichts mehr zur A8 sagen", "stop watching that charger". When they name the subject and not an id, take the id from viafrei://watches. Do NOT use to look a situation up (call check_road_status), to list what is running (read viafrei://watches), or to cancel anything outside this chat — there is nothing subscribed elsewhere. A watch id from another session is not found, never stopped. Results carry their attribution line.

Prompts

Interactive templates invoked by user choice

NameDescription
plan_departureBriefs a drive that is about to start: the official weather warnings at both ends, whether each motorway is open, and the jams in force this minute, ending in one go/no-go sentence. Use when the traveller asks whether to set off now, how the route looks today, or what is waiting on the A-roads. Do NOT use to weigh car against train — that is compare_travel_options; for a refuelling stop use plan_fuel_stop, for parking on arrival plan_arrival_parking. Show every result's attribution line.
compare_travel_optionsWeighs one trip by car against the same trip by rail: closures and live jams on the motorway side, the next departures and the region's punctuality on the rail side, as two paragraphs the traveller can compare. Use when the traveller has not decided how to travel. Do NOT use once the decision is made — brief the drive with plan_departure, the rail leg with plan_commute. The punctuality figures are share-alike and keep their own attribution; show every attribution line.
prepare_car_tripCollects what a driver must carry and know before driving in Germany and into one particular city: the low-emission-zone badge, speed limits, winter tyres, the alcohol limit, tolls, mandatory equipment and the rules for an electric car. Use when the traveller is a visitor, is renting a car, or asks whether a city needs a sticker. Do NOT use for the live road situation — that is plan_departure — or for where to leave the car, which is plan_arrival_parking. Show the attribution and the review date.
plan_fuel_stopFinds where this traveller fills up or charges on the way: the cheapest stations for one fuel grade around one place, or the charging points with the right connector and power, and the rest area beside them if they also need a break. Use when the tank or the battery is the question. Do NOT use to brief the whole route — that is plan_departure — and not for parking at the destination, which is plan_arrival_parking. Prices are consumer information for this traveller alone; show every attribution line and any purpose note verbatim.
plan_commutePlans one public-transport leg on the day itself: the next departures from the station with delays, platforms and cancellations, and whether the region's buses and trains are running normally at this hour. Use when the train is already the decision — a daily commute, or any leg where they need the next departures and nothing else. Do NOT use to weigh rail against driving — that is compare_travel_options — and not for motorway traffic, which is plan_departure. The punctuality figures are share-alike and stay in their own paragraph; show every attribution line.
plan_arrival_parkingFinds where to leave the car at the end of the drive: the car park in town, the park-and-ride at the edge with the onward departures, or the rest area if the traveller is early. Use when the drive is ending, or whenever someone asks where to put the car. Do NOT use for a refuelling or charging stop — that is plan_fuel_stop — and not for the live road situation, which is plan_departure. A facility that publishes no occupancy is reported as such, never as zero free spaces; show every attribution line.
find_a_placeResolves a bare name of unknown kind into a place, a named thing, or an address, trying each table in turn and stopping at the first that answers. Use when the traveller names something and you do not yet know whether it is a town, a company, or a street address — or to recover after a tool reported a name as ambiguous. Do NOT use once the kind is already known: a settlement name goes straight to find_place, a company or landmark to find_poi, a street address to find_address. Show every attribution line.
plan_local_errandAnswers "what is around here" for one place: the nearest fuel, EV charging, parking, railway station and motorway junction in one glance, then — only if the traveller wants more than the nearest one — the depth tool for that one category. Use when it is a quick local stop with nothing decided yet. Do NOT use once the traveller already knows what they need: a fuel grade's price is plan_fuel_stop or find_cheapest_fuel directly, a specific connector or live status is find_charging_station, parking kind or occupancy is find_parking. Show every attribution line.
explain_this_coordinateTurns a bare lat/lon into a sentence a traveller understands: the nearest address, settlement, Kreis, administrative area and motorway junction, each with its own distance. Use whenever you already hold a coordinate — from the traveller, or from another tool's result — and need to say where it is. Do NOT use to look a place up BY NAME: that is find_a_place, find_place, find_poi or find_address. The Kreis/admin-area facts are the nearest gazetteer POINT, not a boundary lookup — admin can be a Regierungsbezirk, not a Land. OpenStreetMap ODbL 1.0 for the address; show the attribution line.

Resources

Contextual data attached and managed by the client

NameDescription
attributionLicence and attribution text for every data source ViaFrei uses.
coverageWhich feeds, places and vehicles ViaFrei can answer for right now — licence, cadence and freshness per feed, which large cities hold no fuel price yet, plus what is deliberately not covered. Generated from the feed catalogue.
rules-driving-in-germanyCurated, sourced and dated: low-emission zones, speed, winter tyres, alcohol, tolls, the Sunday lorry ban, equipment, emergencies and electric driving. German and English in one document.
rules-low-emission-zonesWhich German cities run a low-emission zone, which Feinstaubplakette they require and where to buy it. Düsseldorf is named but excluded: its zone data is under a closed licence.
emergencyWhat to dial, how to form the Rettungsgasse, what to do in a breakdown or after a crash, and what the law requires you to carry. German and English.
rules-electric-drivingWhat an electric car needs in Germany: the E-Kennzeichen and why its privileges differ per city, the green plaque, the right to ad-hoc card payment, plug standards, how prices are shown, etiquette and what to do in an emergency.
feed-statusPer feed: is it still arriving? green (a cycle inside the feed's own freshness window), red (stale or errored) or grey (never ran here). Subscribe to be told when a feed changes colour.
watchesThe watches THIS conversation has open, with what each one is watching and when it expires. Session-scoped: another conversation's watches are not listed and cannot be reached.
gazetteerWhat the place index (gazetteer_places) holds: rows and last load per source and kind, how many carry an English name, and the sixteen Länder it can name — the coverage behind find_place/find_poi/find_nearby's place answers.
addressesWhat the OSM-derived address table (osm_addresses) holds per Bundesland — rows and the extract date — plus the ODbL § 4.6 offer owed to anyone who receives an address-derived result.

TDQS

A4.4/5.0

Scored across 20 tools

Disambiguation4/5

The descriptions do exceptional work with explicit 'Do NOT use' cross-references, so most tools have distinct purposes. However, several pairs are genuinely easy to confuse on first read — check_autobahn_traffic vs check_road_status vs find_roadworks_ahead, and get_train_departures vs get_departures — which rely heavily on the prose to separate.

Naming Consistency5/5

Names follow a consistent verb_noun pattern throughout (check_, find_, get_, describe_, watch_, stop_). The verb variety maps sensibly to the action (find for discovery, check for status), and there is no mixing of casing or arbitrary styles.

Tool Count4/5

20 tools is on the heavy side but the domain is genuinely broad (traffic, fuel, EV, parking, geocoding, transit, weather, watches, rules), and each tool appears to earn its place. Slightly over what one agent can comfortably hold, but not padded.

Completeness4/5

Coverage is strong across mobility data sources, with CRUD-like lifecycle on watches and multi-modal lookups. The notable gap is route planning/directions (A-to-B routing), which is a core navigation need, though the server explicitly declares its non-offerings so agents can work around them.

Maintenance

ActivityMaintained
ResponsivenessResponsive