opplevagent-mcp
Server Details
Norwegian experiences marketplace MCP: activities by county, category, weather, season, group size.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- slookisen/lokal
- GitHub Stars
- 1
- Server Listing
- opplevagent-mcp
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.4/5 across 5 of 5 tools scored. Lowest: 3.9/5.
Each tool targets a distinct resource and action: discovery of experiences vs farm-sale producers, getting details for an experience, listing categories, and booking a farm-sale visit. No overlap in purpose; clear separation.
All tools follow a consistent verb_noun pattern in snake_case (book, discover, get, list). The nouns are domain-specific but the pattern is uniform, with no mixing of styles.
With 5 tools covering discovery, details, categories, and booking for two verticals, the count is well-scoped for a focused marketplace server. Not too many, not too few.
The set lacks a booking tool for experiences (only farm-sale booking is available) and does not provide detailed retrieval for farm-sale producers. Missing booking management tools for pending requests, creating a notable gap in the expected lifecycle.
Available Tools
5 toolsbook_gardssalgRequest a gårdssalg booking (pending — email confirmation required)AInspect
Submit a booking REQUEST for a Norwegian gårdssalg (farm-sale) producer discovered via discover_gardssalg. Send inn en reservasjonsforespørsel for et gårdssalg-besøk. IMPORTANT: this NEVER creates a confirmed booking — it creates a PENDING request, exactly like the producer's own website form. The PRODUCER reviews the request and responds (confirms, proposes another time, or declines); guest_email only receives a read-only status link, never anything that can finalize the booking. No payment is involved (pickup/visit, pay on arrival, as today). Only producers with an active booking status (see discover_gardssalg's booking.live field) can be booked — a paused/not-yet-onboarded producer is rejected with a clear message, never a silent failure. VIKTIG: oppretter ALDRI en bekreftet booking — kun en avventende forespørsel; produsenten mottar forespørselen og svarer (bekrefter, foreslår nytt tidspunkt eller avslår). Required: provider_id (from discover_gardssalg), slot_at (requested date/time), party_size, guest_name, guest_email. Optional: experience_id, guest_phone, notes. Example: book a table for 4 at provider '3f1b2c4d-...' for '2026-08-15T13:00' for 'Kari Nordmann' kari@example.no.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Optional free-text note to the producer (e.g. dietary needs, arrival details). | |
| slot_at | Yes | Requested visit date/time, local (Europe/Oslo), format 'YYYY-MM-DDTHH:MM'. Example: '2026-08-15T13:00'. This is a REQUEST — the producer may confirm, suggest another time, or decline. | |
| guest_name | Yes | Full name of the person the reservation is for. Example: 'Kari Nordmann' | |
| party_size | Yes | Number of people in the group (1-50). Example: 4 | |
| guest_email | Yes | Guest's email address — REQUIRED. Receives a confirmation-of-request email plus a read-only status link; the booking stays pending until the PRODUCER responds (confirms, proposes another time, or declines) — the guest's link cannot finalize anything. Example: 'kari@example.no' | |
| guest_phone | No | Optional guest phone number. | |
| provider_id | Yes | The gårdssalg producer's id, from a discover_gardssalg result (NOT the profile slug). Example: '3f1b2c4d-...' | |
| experience_id | No | Optional experience UUID if this booking is for a specific listed experience rather than a general gårdssalg visit. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond annotations: it creates a pending request only, producer reviews and responds, guest email receives a read-only status link, no payment involved, and non-bookable producers are rejected with a clear message. Annotations (readOnlyHint=false, destructiveHint=false) are consistent with this behavior. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured, starting with the core purpose in English and Norwegian, then key behavioral notes, then listing required/optional parameters, and ending with an example. Every sentence provides useful information with minimal redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the workflow, constraints, and parameter meanings well, but it does not describe the tool's return value or response structure. Since there is no output schema, the description should ideally mention what the tool returns (e.g., a request ID or status). This omission reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, but the description adds additional context for several parameters: provider_id must come from discover_gardssalg, slot_at is a request (not a confirmation), guest_email only gets a status link, etc. This adds value beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool submits a booking request for a Norwegian gårdssalg producer discovered via discover_gardssalg. It uses specific verbs ('submit a booking REQUEST') and distinguishes from sibling tools (discovery and retrieval tools).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use: after discovering a producer via discover_gardssalg and only for those with active booking status. It explains what the tool does NOT do (never creates a confirmed booking) and includes exclusions (paused/not-onboarded producers). It does not provide an explicit alternative tool, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discover_experiencesDiscover Norwegian experiencesARead-onlyIdempotentInspect
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. Examples: 'hva kan vi finne på i Troms om vinteren?', 'outdoor activities in Oslo for 4 people', 'experiences within 50km of lat 69.65 / lng 18.95'.
| Name | Required | Description | Default |
|---|---|---|---|
| age | No | Age of the youngest participant. Filters out experiences with a minimum-age requirement above this. Example: 8 | |
| lat | No | Origin latitude for a near-me search (decimal degrees). Must be given together with lng. Example: 69.65 (Tromsø) | |
| lng | No | Origin longitude for a near-me search (decimal degrees). Must be given together with lat. Example: 18.95 (Tromsø) | |
| sort | No | 'distance' — sort results ascending by distance from lat/lng. Already the default whenever lat/lng are given; this makes the request explicit. | |
| fylke | No | Norwegian county (fylke). Examples: 'Oslo', 'Vestland', 'Troms', 'Rogaland' | |
| limit | No | Max results (default 20, max 50) | |
| season | No | Season filter. Examples: 'summer', 'winter', 'spring', 'autumn' | |
| kommune | No | Norwegian municipality (kommune). Examples: 'Tromsø', 'Bergen', 'Stavanger' | |
| weather | No | Weather suitability filter. 'rain'/'snow' prefers indoor + weather-independent experiences. Examples: 'rain', 'clear' | |
| category | No | Experience category slug. Examples: 'natur_friluft', 'dyreliv_safari', 'mat_drikke', 'vinter' | |
| language | No | Required language for the experience. Examples: 'no', 'en' | |
| max_price | No | Maximum price per person in Norwegian kroner (NOK). Example: 500 | |
| radius_km | No | Max distance from lat/lng in kilometers. Only applies when lat/lng are given. Example: 50 | |
| group_size | No | Number of people in the group. Used to filter experiences by min/max group capacity. Example: 4 | |
| duration_max | No | Maximum duration in minutes. Example: 120 (2 hours) | |
| indoor_outdoor | No | Indoor/outdoor preference. Examples: 'indoor', 'outdoor', 'both' |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only, idempotent, and non-destructive. The description adds valuable behavioral details: results are verified (Brreg-checked), geo-precision flag, sorted nearest-first with lat/lng, and return fields. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is reasonably concise and well-structured: purpose, filters, geo-features, return info, examples. The bilingual text adds length but is justified. Could be slightly tighter without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers return fields (title, category, location, description, booking URL) and geo details. Missing pagination or error handling, but for a 16-parameter search tool it is fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with good descriptions for each parameter. The description adds little beyond summarizing filters and repeating constraints (e.g., radius_km applies only with lat/lng). Baseline 3 is appropriate as the description does not compensate for a coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches the opplevagent.no marketplace, distinguishing it from siblings like get_experience (single item) and list_experience_categories (categories). The verb 'search' and resource are specific, and examples solidify purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (searching experiences with various filters) but does not explicitly state when not to use or point to specific alternatives like get_experience or list_experience_categories. However, the context is clear enough for inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discover_gardssalgDiscover Norwegian farm-sale drink producers (gårdssalg)ARead-onlyIdempotentInspect
Search opplevagent.no's gårdssalg (farm-sale) vertical — Brreg-registered Norwegian drink producers (bryggeri/cideri/vingård/destilleri/mjøderi/seltzeri) selling directly from the farm. Finn norske gårdssalg-produsenter (drikkeprodusenter som selger direkte fra gården) etter fylke, kommune og produsenttype. / Filter by county (fylke), municipality (kommune), and producer type. Also supports near-me search via lat/lng (+ optional radius_km): when given, results include a rounded distance_km and are sorted nearest-first, and rows with no geocoded location are excluded (never a fabricated distance). Returns name, location, producer type, and an honest booking status (live direct booking vs. a dark-launch 'coming soon' note — never overclaims booking availability). Examples: 'gårdssalg i Vestland', 'cideri near lat 60.4 / lng 5.3', 'bryggeri med booking'.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Origin latitude for a near-me search (decimal degrees). Must be given together with lng. Example: 69.65 (Tromsø) | |
| lng | No | Origin longitude for a near-me search (decimal degrees). Must be given together with lat. Example: 18.95 (Tromsø) | |
| fylke | No | Norwegian county (fylke) of the producer. Examples: 'Oslo', 'Vestland', 'Troms', 'Rogaland' | |
| limit | No | Max results (default 20, max 50) | |
| kommune | No | Norwegian municipality (kommune) of the producer. Examples: 'Tromsø', 'Bergen', 'Stavanger' | |
| radius_km | No | Max distance from lat/lng in kilometers. Only applies when lat/lng are given. Example: 50 | |
| booking_live | No | When true, only return producers that currently accept direct bookings. Omit to include producers regardless of booking status. | |
| producer_type | No | Type of drink producer. Examples: 'bryggeri' (brewery), 'cideri' (cidery), 'vingård' (vineyard), 'destilleri' (distillery), 'mjøderi' (meadery), 'seltzeri' |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds significant behavioral details: near-me search sorts by distance, excludes non-geocoded rows, returns rounded distance_km; and booking status is honest (live vs. dark-launch). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is informative and well-structured, starting with the main purpose, then providing examples and details. It is somewhat lengthy but efficient, with no wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 8 optional parameters and no output schema, the description covers all necessary aspects: how to filter, how near-me search works, booking status, and examples. It is complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter. The description adds value by explaining the combination of lat/lng with radius_km and the behavior of booking_live, but does not add much beyond the schema's examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: searching for Norwegian farm-sale drink producers from opplevagent.no's gårdssalg vertical. It specifies the resource (Brreg-registered drink producers) and distinguishes from sibling tools like book_gardssalg and discover_experiences.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides examples of when to use the tool (e.g., 'gårdssalg i Vestland', 'cideri near lat 60.4 / lng 5.3', 'bryggeri med booking') and explains the near-me search feature and filtering by county, municipality, and producer type. However, it does not explicitly state when not to use this tool over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_experienceGet full details for a Norwegian experienceARead-onlyIdempotentInspect
Fetch complete details for a single experience from opplevagent.no by its UUID. Henter fullstendig informasjon om en opplevelse via UUID. Returns title, full description, category, location (fylke/kommune/meeting point), indoor/outdoor, season, weather suitability, group size limits, age suitability, price, duration, languages, booking URL, and booking type. Obtain the UUID from discover_experiences results. Example: id 'a1b2c3d4-e5f6-7890-abcd-ef1234567890'.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | UUID of the experience to fetch. Example: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890' |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds the source (opplevagent.no) and lists returned fields, but does not disclose additional behavioral traits like rate limits or auth needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is front-loaded with purpose and includes bilingual content which may be unnecessary for an AI agent but is not overly verbose. Could be slightly more concise but still effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description provides a detailed list of returned fields (title, description, category, location, etc.) and usage instruction (UUID from discover_experiences). This compensates well for the lack of output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with UUID format and description. Description provides an example UUID, reinforcing the schema but adding no new semantic information. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Fetch complete details for a single experience' and enumerates the returned fields, making the purpose specific and unambiguous. It implicitly distinguishes from sibling 'discover_experiences' which lists experiences.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly mentions obtaining UUID from discover_experiences results, guiding the agent on prerequisite. Clear that this tool is for fetching one experience, not listing or booking, but no explicit when-not statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_experience_categoriesList Norwegian experience categoriesARead-onlyIdempotentInspect
List all experience categories available on opplevagent.no, along with the number of verified experiences in each category. Henter alle kategorier med antall verifiserte opplevelser. Use this to understand what kinds of experiences are available before calling discover_experiences with a specific category filter. Example question: 'hvilke typer opplevelser finnes i Norge?', 'what categories are available?'.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds that it returns counts of verified experiences, which is useful behavioral context beyond the safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise with two sentences in English and Norwegian, but the bilingual content is slightly redundant. Front-loaded with main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, no output schema, and adequate annotations, the description provides sufficient information: what it does, when to use, and what it returns (categories with counts).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so baseline is 4. No additional parameter meaning needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all experience categories with counts, specifying the resource (categories on opplevagent.no) and action (list with number of verified experiences). This distinguishes it from siblings like discover_experiences.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises use before discover_experiences for category filter, with example questions like 'hvilke typer opplevelser finnes i Norge?'. This provides clear when-to-use context and differentiates from similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server providing typed tools for Norwegian public data sources, enabling natural language queries to official datasets like SSB, Brønnøysund, MET, Kartverket, Entur, and more, without requiring API keys.27MIT
- Alicense-qualityCmaintenanceProvides LLM-friendly weather tools and Norwegian place name resolution via MCP, enabling weather forecasts, air quality, marine conditions, and activity planning.1MIT
- AlicenseAqualityAmaintenanceSearch 1000+ local food producers in Norway. Natural language, Norwegian & English. Tools: lokal_search, lokal_discover, lokal_info, lokal_stats4451MIT
- AlicenseAqualityDmaintenanceMCP server that provides tools to search Norwegian addresses, reverse geocode, find place names, and get elevation data from Kartverket's open geographic datasets.491MIT
Your Connectors
Sign in to create a connector for this server.