{"serverId":"mcp-registry/io.github.trondbjoroy/norway-location-transport-mcp","tools":[{"name":"find_addresses_near","fixed":{"name":"find_addresses_near","description":"Find all official addresses within a radius of a coordinate (Kartverket). Each result includes its distance from the point. Good for 'what is at this location?'.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["latitude","longitude"],"properties":{"latitude":{"type":"number","maximum":72,"minimum":57,"description":"Latitude in decimal degrees (WGS84). Norway spans about 57–72°N."},"radius_m":{"type":"integer","default":100,"maximum":1000,"minimum":1,"description":"Search radius in metres"},"longitude":{"type":"number","maximum":35,"minimum":-2,"description":"Longitude in decimal degrees (WGS84). Norway spans about 4–31°E."},"max_results":{"type":"integer","default":20,"maximum":50,"minimum":1,"description":"Maximum number of addresses to return"}}},"annotations":{"readOnlyHint":true},"title":"Find addresses near a coordinate"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":239,"tokensAfter":239},{"name":"find_docking_stations","fixed":{"name":"find_docking_stations","description":"Find shared-mobility docking stations (e.g. city bike stations) near a coordinate (Entur Mobility), with available vehicle and free-dock counts per station.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["latitude","longitude"],"properties":{"count":{"type":"integer","default":10,"maximum":50,"minimum":1,"description":"Maximum number of stations to return"},"range_m":{"type":"integer","default":500,"maximum":3000,"minimum":10,"description":"Search radius in metres"},"latitude":{"type":"number","maximum":90,"minimum":-90,"description":"Latitude in decimal degrees (WGS84)"},"longitude":{"type":"number","maximum":180,"minimum":-180,"description":"Longitude in decimal degrees (WGS84)"}}},"annotations":{"readOnlyHint":true},"title":"Find docking stations nearby"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":221,"tokensAfter":221},{"name":"find_place_names_near","fixed":{"name":"find_place_names_near","description":"Find the nearest official named features to a coordinate (Kartverket). Each result includes its feature type and distance from the point.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["latitude","longitude"],"properties":{"latitude":{"type":"number","maximum":72,"minimum":57,"description":"Latitude in decimal degrees (WGS84). Norway spans about 57–72°N."},"radius_m":{"type":"integer","default":1000,"maximum":20000,"minimum":1,"description":"Search radius in metres"},"longitude":{"type":"number","maximum":35,"minimum":-2,"description":"Longitude in decimal degrees (WGS84). Norway spans about 4–31°E."},"max_results":{"type":"integer","default":10,"maximum":50,"minimum":1,"description":"Maximum number of features to return"}}},"annotations":{"readOnlyHint":true},"title":"Find place names near a coordinate"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":233,"tokensAfter":233},{"name":"find_shared_vehicles","fixed":{"name":"find_shared_vehicles","description":"Find free-floating shared vehicles (city bikes, e-scooters, car share, mopeds) near a coordinate across all Norwegian operators (Entur Mobility). Each result shows the operator, type, battery, and location.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["latitude","longitude"],"properties":{"count":{"type":"integer","default":20,"maximum":50,"minimum":1,"description":"Maximum number of vehicles to return"},"range_m":{"type":"integer","default":300,"maximum":2000,"minimum":10,"description":"Search radius in metres"},"latitude":{"type":"number","maximum":90,"minimum":-90,"description":"Latitude in decimal degrees (WGS84)"},"longitude":{"type":"number","maximum":180,"minimum":-180,"description":"Longitude in decimal degrees (WGS84)"},"form_factors":{"type":"array","items":{"type":"string"},"description":"Filter by type. Common values: BICYCLE, SCOOTER, CAR, MOPED, CARGO_BICYCLE, OTHER."}}},"annotations":{"readOnlyHint":true},"title":"Find shared vehicles nearby"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":278,"tokensAfter":278},{"name":"find_stops_near","fixed":{"name":"find_stops_near","description":"Reverse-geocode a coordinate to the nearest public transport stop places (Entur), each with its distance. Use the returned IDs with the departure and trip tools.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["latitude","longitude"],"properties":{"latitude":{"type":"number","maximum":90,"minimum":-90,"description":"Latitude in decimal degrees (WGS84)"},"radius_m":{"type":"integer","default":1000,"maximum":5000,"minimum":1,"description":"Search radius in metres"},"longitude":{"type":"number","maximum":180,"minimum":-180,"description":"Longitude in decimal degrees (WGS84)"},"max_results":{"type":"integer","default":5,"maximum":10,"minimum":1,"description":"Maximum number of stops to return"}}},"annotations":{"readOnlyHint":true},"title":"Find stop places near a coordinate"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":222,"tokensAfter":222},{"name":"get_departures","fixed":{"name":"get_departures","description":"Get the next departures from a stop place (Entur), including realtime delays and cancellations. Each departure shows line, destination, scheduled and expected times, delay, platform, and whether it is cancelled.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["stop_place_id"],"properties":{"count":{"type":"integer","default":10,"maximum":50,"minimum":1,"description":"How many upcoming departures to return"},"stop_place_id":{"type":"string","pattern":"^NSR:StopPlace:\\d+$","description":"Entur Stop Place ID, e.g. 'NSR:StopPlace:59872'. Get one from resolve_stop_place."}}},"annotations":{"readOnlyHint":true},"title":"Get next departures from a stop"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":187,"tokensAfter":187},{"name":"get_elevation","fixed":{"name":"get_elevation","description":"Get the terrain elevation (metres above sea level) at a coordinate from the Norwegian national elevation model (Kartverket DTM). Covers mainland Norway.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["latitude","longitude"],"properties":{"latitude":{"type":"number","maximum":72,"minimum":57,"description":"Latitude in decimal degrees (WGS84). Norway spans about 57–72°N."},"longitude":{"type":"number","maximum":35,"minimum":-2,"description":"Longitude in decimal degrees (WGS84). Norway spans about 4–31°E."}}},"annotations":{"readOnlyHint":true},"title":"Get elevation at a coordinate"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":169,"tokensAfter":169},{"name":"get_elevation_profile","fixed":{"name":"get_elevation_profile","description":"Sample the terrain elevation evenly along a path of coordinates (Kartverket DTM) and return the profile plus total distance, ascent, and descent. Useful for hikes and routes. Give the path vertices in order; `samples` controls resolution.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["path"],"properties":{"path":{"type":"array","items":{"type":"object","required":["latitude","longitude"],"properties":{"latitude":{"type":"number","maximum":72,"minimum":57,"description":"Latitude in decimal degrees (WGS84). Norway spans about 57–72°N."},"longitude":{"type":"number","maximum":35,"minimum":-2,"description":"Longitude in decimal degrees (WGS84). Norway spans about 4–31°E."}}},"maxItems":50,"minItems":2,"description":"Ordered path vertices (at least 2). The path is sampled evenly between them."},"samples":{"type":"integer","default":20,"maximum":50,"minimum":2,"description":"Number of evenly spaced points to sample along the whole path"}}},"annotations":{"readOnlyHint":true},"title":"Get an elevation profile along a path"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":292,"tokensAfter":292},{"name":"get_fare_zones","fixed":{"name":"get_fare_zones","description":"Get the fare (tariff) zone(s) a stop place belongs to (Entur). Fare zones set the ticket price for a journey.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["stop_place_id"],"properties":{"stop_place_id":{"type":"string","pattern":"^NSR:StopPlace:\\d+$","description":"Entur Stop Place ID, e.g. 'NSR:StopPlace:59872'. Get one from resolve_stop_place."}}},"annotations":{"readOnlyHint":true},"title":"Get fare zones for a stop"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":125,"tokensAfter":125},{"name":"get_realtime_status","fixed":{"name":"get_realtime_status","description":"Get a realtime health summary. For a stop, pass stop_place_id: it summarizes how many upcoming departures are on time, delayed, or cancelled. For a line, pass line_id: it reports how many vehicles are currently active and their delays.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"line_id":{"type":"string","description":"Line ID (e.g. 'ATB:Line:2_3', from get_departures) for a line-level summary"},"stop_place_id":{"type":"string","pattern":"^NSR:StopPlace:\\d+$","description":"Stop Place ID for a stop-level summary"}}},"annotations":{"readOnlyHint":true},"title":"Get realtime status for a stop or line"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":175,"tokensAfter":175},{"name":"get_stop_accessibility","fixed":{"name":"get_stop_accessibility","description":"Get accessibility information for a stop place (Entur): per-quay (platform) wheelchair access, and a summary. Note: Entur's free API exposes wheelchair access per quay; deeper equipment detail (elevators, tactile guidance) is only in Entur's authenticated Stop Register API and is not available here.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["stop_place_id"],"properties":{"stop_place_id":{"type":"string","pattern":"^NSR:StopPlace:\\d+$","description":"Entur Stop Place ID, e.g. 'NSR:StopPlace:59872'. Get one from resolve_stop_place."}}},"annotations":{"readOnlyHint":true},"title":"Get stop accessibility"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":180,"tokensAfter":180},{"name":"get_vehicle_positions","fixed":{"name":"get_vehicle_positions","description":"Get live positions of public transport vehicles (Entur realtime), filtered by operator codespace and/or line. Each vehicle shows its position, bearing, speed, and delay. Codespace examples: ATB (Trondheim), KOL (Stavanger), SKY (Bergen area). Get a line_id from get_departures.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"line_id":{"type":"string","description":"Line ID, e.g. 'ATB:Line:2_3'. Optional if codespace_id is given."},"max_results":{"type":"integer","default":50,"maximum":200,"minimum":1,"description":"Maximum number of vehicles to return"},"codespace_id":{"type":"string","description":"Operator codespace, e.g. 'ATB'. Optional if line_id is given."}}},"annotations":{"readOnlyHint":true},"title":"Get live vehicle positions"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":216,"tokensAfter":216},{"name":"list_quays","fixed":{"name":"list_quays","description":"List all quays (platforms/stopping points) at a stop place (Entur), with their public codes, coordinates, and wheelchair access.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["stop_place_id"],"properties":{"stop_place_id":{"type":"string","pattern":"^NSR:StopPlace:\\d+$","description":"Entur Stop Place ID, e.g. 'NSR:StopPlace:59872'. Get one from resolve_stop_place."}}},"annotations":{"readOnlyHint":true},"title":"List quays (platforms) for a stop"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":129,"tokensAfter":129},{"name":"lookup_admin_unit","fixed":{"name":"lookup_admin_unit","description":"Find which municipality (kommune) and county (fylke) a location falls in, with official codes (Kartverket). Give either a coordinate or a free-text address.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"address":{"type":"string","minLength":1,"description":"Free-text address, used if no coordinate is given"},"latitude":{"type":"number","maximum":72,"minimum":57,"description":"Latitude in decimal degrees (WGS84). Norway spans about 57–72°N."},"longitude":{"type":"number","maximum":35,"minimum":-2,"description":"Longitude in decimal degrees (WGS84). Norway spans about 4–31°E."}}},"annotations":{"readOnlyHint":true},"title":"Look up municipality and county"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":191,"tokensAfter":191},{"name":"lookup_property","fixed":{"name":"lookup_property","description":"Look up cadastral (matrikkel) identifiers for a property via the open address register (Kartverket): municipality number, gårdsnummer (gnr), bruksnummer (bnr), and festenummer. Give a free-text address or a coordinate. Full ownership data requires Kartverket's authenticated Matrikkel API; this returns the open address-linked identifiers.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"address":{"type":"string","minLength":1,"description":"Free-text address"},"latitude":{"type":"number","maximum":72,"minimum":57,"description":"Latitude in decimal degrees (WGS84). Norway spans about 57–72°N."},"longitude":{"type":"number","maximum":35,"minimum":-2,"description":"Longitude in decimal degrees (WGS84). Norway spans about 4–31°E."},"max_results":{"type":"integer","default":5,"maximum":20,"minimum":1,"description":"Maximum number of properties to return"}}},"annotations":{"readOnlyHint":true},"title":"Look up property (matrikkel) info"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":267,"tokensAfter":267},{"name":"resolve_stop_place","fixed":{"name":"resolve_stop_place","description":"Turn a place or address into Entur Stop Place IDs (public transport stops/stations). Use the returned ID with the departure, trip, accessibility, quay, and fare-zone tools.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["query"],"properties":{"query":{"type":"string","minLength":1,"description":"Place or stop name, e.g. 'Oslo S' or 'Bergen busstasjon'"},"max_results":{"type":"integer","default":5,"maximum":10,"minimum":1,"description":"Maximum number of stops to return"}}},"annotations":{"readOnlyHint":true},"title":"Resolve a place to a Stop Place ID"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":160,"tokensAfter":160},{"name":"search_address","fixed":{"name":"search_address","description":"Search official Norwegian addresses (Kartverket) and get coordinates. Use `query` for free text, or the specific fields for a structured search. Wildcards with `*` are supported (e.g. street 'Storg*'). Returns coordinates, postal code, municipality, and cadastral numbers for each match.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"query":{"type":"string","minLength":1,"description":"Free-text address, e.g. 'Karl Johans gate 1, Oslo'. Supports the * wildcard."},"number":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991,"description":"House number (nummer)"},"street":{"type":"string","description":"Street name (adressenavn). Supports the * wildcard."},"max_results":{"type":"integer","default":10,"maximum":50,"minimum":1,"description":"Maximum number of matches to return"},"postal_code":{"type":"string","description":"Postal code (postnummer), e.g. '0155'"},"municipality_number":{"type":"string","description":"4-digit municipality code (kommunenummer), e.g. '0301' for Oslo"}}},"annotations":{"readOnlyHint":true},"title":"Search Norwegian addresses"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":309,"tokensAfter":309},{"name":"search_place_names","fixed":{"name":"search_place_names","description":"Search official Norwegian place names (Kartverket Sentralt stedsnavnregister). Returns each name's feature type (e.g. Fjell, Innsjø, By), municipality, county, and coordinates. Supports the * wildcard and corrects small spelling errors.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["query"],"properties":{"query":{"type":"string","minLength":1,"description":"Place name to search for, e.g. 'Galdhøpiggen'. Supports the * wildcard."},"max_results":{"type":"integer","default":10,"maximum":50,"minimum":1,"description":"Maximum number of matches to return"}}},"annotations":{"readOnlyHint":true},"title":"Search Norwegian place names"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":183,"tokensAfter":183},{"name":"validate_address","fixed":{"name":"validate_address","description":"Check whether a free-text address exists in the official register and return its normalized form with coordinates. Uses fuzzy matching, so it also corrects small spelling errors. Returns `valid`, the best normalized match, and alternatives.","inputSchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["address"],"properties":{"address":{"type":"string","minLength":1,"description":"Address to validate, e.g. 'karl johans gt 1 oslo'"}}},"annotations":{"readOnlyHint":true},"title":"Validate and normalize an address"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":145,"tokensAfter":145}],"toolsChanged":19,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}