Skip to main content
Glama

Discover Norwegian experiences

discover_experiences
Read-onlyIdempotent

Search the opplevagent.no curated marketplace of Norwegian experiences and activities. Filtrer på fylke (county), kategori, vær, sesong, innendørs/utendørs, gruppestørrelse, pris og varighet. / Filter by county, category, weather, season, indoor/outdoor, group size, price, and duration. Also supports near-me search via lat/lng (+ optional radius_km): when given, results include a rounded distance_km and a geo_precision flag ('address' = exact, 'kommune' = approximate municipality centroid) and are sorted nearest-first. Returns title, category, location (fylke/kommune), description, and booking URL if available. Only verified experiences from active providers (Brreg-checked) are returned. Covers Norway only: pass the user's request in query; for a place outside Norway (e.g. Kenya) the tool returns no experiences, and the answer is that Opplevagent only covers Norway. Food-product shopping such as buying stockfish is outside this tool's scope. Pass that intent in query; an out_of_scope response must not be retried as a general discovery search. Examples: 'hva kan vi finne på i Troms om vinteren?' (fylke='Troms', season='winter'), 'wildlife experiences' (category='dyreliv_safari'), 'outdoor activities in Oslo for 4 people', 'experiences within 50km of lat 69.65 / lng 18.95'.

Input Schema

NameRequiredDescriptionDefault
ageNoAge of the youngest participant. Filters out experiences with a minimum-age requirement above this. Example: 8
latNoOrigin latitude for a near-me search (decimal degrees). Must be given together with lng. Example: 69.65 (Tromsø)
lngNoOrigin longitude for a near-me search (decimal degrees). Must be given together with lat. Example: 18.95 (Tromsø)
sortNo'distance' — sort results ascending by distance from lat/lng. Already the default whenever lat/lng are given; this makes the request explicit.
fylkeNoNorwegian county (fylke). Examples: 'Oslo', 'Vestland', 'Troms', 'Rogaland'
limitNoMax results (default 20, max 50)
queryNoThe user's request in a few words, including any place they named — e.g. 'safari lodge in Kenya', 'northern lights in Tromsø'. Opplevagent only covers Norway: when this names a place outside Norway and no Norwegian fylke/kommune or coordinates are given, the tool returns no experiences and says so. Include the purchase intent too: buying stockfish is food retail, not an experience search.
seasonNoSeason filter: 'summer', 'winter', 'spring' or 'autumn' (the Norwegian words sommer/vinter/vår/høst work too). Year-round experiences are always included. Use this (not category or weather) when the user asks what to do in a season, e.g. 'Troms om vinteren' → fylke='Troms', season='winter'.
kommuneNoNorwegian municipality (kommune). Examples: 'Tromsø', 'Bergen', 'Stavanger'
weatherNoToday's weather, not the season: 'rain'/'snow' prefers indoor + weather-independent experiences. Examples: 'rain', 'clear'. For 'in winter' use season instead.
categoryNoExperience category slug — one of: 'kultur_historie' (culture/history, museums), 'natur_friluft' (nature/outdoors), 'adrenalin_action', 'sightseeing_transport' (sightseeing, cruises, cable cars), 'overnatting_opplevelse' (stays), 'dyreliv_safari' (wildlife, whale/moose safaris, dog sledding), 'vinter_sno' (winter & snow), 'mat_drikke' (food & drink), 'velvaere_spa' (wellness/spa). Call list_experience_categories for live counts. Omit category for a general 'what can we do' question. 'In winter' / 'om vinteren' is a season, not a category: use season='winter' — 'vinter_sno' covers only snow activities and would hide e.g. northern-lights cruises.
languageNoRequired language for the experience. Examples: 'no', 'en'
max_priceNoMaximum price per person in Norwegian kroner (NOK). Example: 500
radius_kmNoMax distance from lat/lng in kilometers. Only applies when lat/lng are given. Example: 50
group_sizeNoNumber of people in the group. Used to filter experiences by min/max group capacity. Example: 4
duration_maxNoMaximum duration in minutes. Example: 120 (2 hours)
indoor_outdoorNoIndoor/outdoor preference. Examples: 'indoor', 'outdoor', 'both'

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / query / description
      Previous value: -"The user's request in a few words, including any place they named — e.g. 'safari lodge in Kenya', 'northern lights in Tromsø'. Opplevagent only covers Norway: when this names a place outside Norway and no Norwegian fylke/kommune or coordinates are given, the tool returns no experiences and says so."New value: +"The user's request in a few words, including any place they named — e.g. 'safari lodge in Kenya', 'northern lights in Tromsø'. Opplevagent only covers Norway: when this names a place outside Norway and no Norwegian fylke/kommune or coordinates are given, the tool returns no experiences and says so. Include the purchase intent too: buying stockfish is food retail, not an experience search."
  2. Changed1 schema field changed
    • addedInput schema / properties / query
      Added value: +{
      +  "description": "The user's request in a few words, including any place they named — e.g. 'safari lodge in Kenya', 'northern lights in Tromsø'. Opplevagent only covers Norway: when this names a place outside Norway and no Norwegian fylke/kommune or coordinates are given, the tool returns no experiences and says so.",
      +  "type": "string"
      +}
  3. Changed3 schema fields changed
    • changedInput schema / properties / category / description
      Previous value: -"Experience category slug — one of: 'kultur_historie' (culture/history, museums), 'natur_friluft' (nature/outdoors), 'adrenalin_action', 'sightseeing_transport' (sightseeing, cruises, cable cars), 'overnatting_opplevelse' (stays), 'dyreliv_safari' (wildlife, whale/moose safaris, dog sledding), 'vinter_sno' (winter & snow), 'mat_drikke' (food & drink), 'velvaere_spa' (wellness/spa). Call list_experience_categories for live counts."New value: +"Experience category slug — one of: 'kultur_historie' (culture/history, museums), 'natur_friluft' (nature/outdoors), 'adrenalin_action', 'sightseeing_transport' (sightseeing, cruises, cable cars), 'overnatting_opplevelse' (stays), 'dyreliv_safari' (wildlife, whale/moose safaris, dog sledding), 'vinter_sno' (winter & snow), 'mat_drikke' (food & drink), 'velvaere_spa' (wellness/spa). Call list_experience_categories for live counts. Omit category for a general 'what can we do' question. 'In winter' / 'om vinteren' is a season, not a category: use season='winter' — 'vinter_sno' covers only snow activities and would hide e.g. northern-lights cruises."
    • changedInput schema / properties / season / description
      Previous value: -"Season filter: 'summer', 'winter', 'spring' or 'autumn' (the Norwegian words sommer/vinter/vår/høst work too). Year-round experiences are always included."New value: +"Season filter: 'summer', 'winter', 'spring' or 'autumn' (the Norwegian words sommer/vinter/vår/høst work too). Year-round experiences are always included. Use this (not category or weather) when the user asks what to do in a season, e.g. 'Troms om vinteren' → fylke='Troms', season='winter'."
    • changedInput schema / properties / weather / description
      Previous value: -"Weather suitability filter. 'rain'/'snow' prefers indoor + weather-independent experiences. Examples: 'rain', 'clear'"New value: +"Today's weather, not the season: 'rain'/'snow' prefers indoor + weather-independent experiences. Examples: 'rain', 'clear'. For 'in winter' use season instead."
  4. Changed2 schema fields changed
    • changedInput schema / properties / category / description
      Previous value: -"Experience category slug. Examples: 'natur_friluft', 'dyreliv_safari', 'mat_drikke', 'vinter'"New value: +"Experience category slug — one of: 'kultur_historie' (culture/history, museums), 'natur_friluft' (nature/outdoors), 'adrenalin_action', 'sightseeing_transport' (sightseeing, cruises, cable cars), 'overnatting_opplevelse' (stays), 'dyreliv_safari' (wildlife, whale/moose safaris, dog sledding), 'vinter_sno' (winter & snow), 'mat_drikke' (food & drink), 'velvaere_spa' (wellness/spa). Call list_experience_categories for live counts."
    • changedInput schema / properties / season / description
      Previous value: -"Season filter. Examples: 'summer', 'winter', 'spring', 'autumn'"New value: +"Season filter: 'summer', 'winter', 'spring' or 'autumn' (the Norwegian words sommer/vinter/vår/høst work too). Year-round experiences are always included."
  5. Changed4 schema fields changed
    • addedInput schema / properties / lat
      Added value: +{
      +  "description": "Origin latitude for a near-me search (decimal degrees). Must be given together with lng. Example: 69.65 (Tromsø)",
      +  "maximum": 90,
      +  "minimum": -90,
      +  "type": "number"
      +}
    • addedInput schema / properties / lng
      Added value: +{
      +  "description": "Origin longitude for a near-me search (decimal degrees). Must be given together with lat. Example: 18.95 (Tromsø)",
      +  "maximum": 180,
      +  "minimum": -180,
      +  "type": "number"
      +}
    • addedInput schema / properties / radius_km
      Added value: +{
      +  "description": "Max distance from lat/lng in kilometers. Only applies when lat/lng are given. Example: 50",
      +  "exclusiveMinimum": 0,
      +  "maximum": 5000,
      +  "type": "number"
      +}
    • addedInput schema / properties / sort
      Added value: +{
      +  "description": "'distance' — sort results ascending by distance from lat/lng. Already the default whenever lat/lng are given; this makes the request explicit.",
      +  "enum": [
      +    "distance"
      +  ],
      +  "type": "string"
      +}
  6. Added
  7. Removed
  8. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare read-only/idempotent/non-destructive and a closed world, so safety is covered. The description goes well beyond them: near-me results include a rounded distance_km and a geo_precision flag ('address' exact vs 'kommune' centroid), results are sorted nearest-first, only Brreg-verified providers with active status are returned, and out-of-scope requests produce a terminal out_of_scope response.

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 and well organized: scope, filters, geo behavior, return shape, then domain limits and examples. It is slightly wasteful in places — the filter list is duplicated in Norwegian and English, and the stockfish/out-of-scope rule is restated in the query parameter schema — but no sentence is filler.

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 17-parameter, zero-required tool with no output schema, the description supplies the return shape (title, category, fylke/kommune, description, booking URL), the domain boundary, the out-of-scope contract, and worked examples. An agent has everything needed to call it correctly on the first try.

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, and the description adds real value on top: it maps natural-language requests to parameter combinations (fylke='Troms', season='winter'), explains the season/weather/category distinction, and spells out the query field's dual role for place and purchase intent. It stops short of explaining a few fields (age, language, duration_max) beyond what the schema already says.

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 (search) and resource (curated marketplace of Norwegian experiences) plus the exact filter axes it supports. It explicitly distinguishes itself from siblings by naming list_experience_categories for live category counts and by framing itself as the discovery entry point that get_experience complements.

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?

Gives explicit routing rules: season vs weather vs category ('in winter' is a season, not a category), omit category for general 'what can we do' questions, use near-me only when lat/lng are supplied. It also states a hard boundary (Norway only) with the exact non-Norway behavior and warns that an out_of_scope response must not be retried as a general search.

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.