Aareguru MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_current_temperatureA | Get current water temperature for a city. Use this for quick temperature checks and simple 'how warm is the water?' questions. Returns temperature in Celsius, Swiss German description (e.g., 'geil aber chli chalt'), and swimming suitability. |
| get_current_conditionsA | Get complete current conditions for a city. Use this for safety assessments, 'is it safe to swim?' questions, and when users need a complete picture before swimming. This is the most detailed tool. |
| get_historical_dataA | Get historical time-series data. Use this for trend analysis, comparisons with past conditions, and statistical queries. Returns hourly data points for temperature and flow. |
| get_flow_danger_levelA | Get current flow rate and BAFU danger assessment. Use this for safety-critical questions about current strength and swimming danger. Flow Safety Thresholds:
|
| compare_citiesA | Compare multiple cities This is the recommended tool for comparing one to many cities. Args:
cities: List of city identifiers (e.g., Returns: Dictionary with: - cities: List of city data with temperature, flow, safety - warmest: City with highest temperature - coldest: City with lowest temperature - safe_count: Number of cities with safe flow conditions - total_count: Total cities compared |
| get_forecastsA | Get forecasts for multiple cities. Fetches all forecasts concurrently. Args:
cities: List of city identifiers (e.g., Returns: Dictionary mapping city names to forecast data: - forecasts (dict): Map of city to forecast data with current temp, 2-hour forecast, and trend |
| list_shop_productsA | List available merchandise from the Aareguru shop. Use this to browse products, answer 'what merch is available?', or find items by keyword. Returns name, price in CHF, and product URL. Args: search: Optional keyword filter (e.g., 'towel', 'cap'). If None, returns the full catalog. Returns: Dictionary with: - products: List of products with id, name, price_chf, permalink, short_description, on_sale, stock_status, image_url - count: Total number of products returned Example: >>> result = await list_shop_products() >>> for p in result['products']: ... print(f"{p['name']}: CHF {p['price_chf']}") |
| get_shop_productA | Get detailed information about a specific shop product. Use this after list_shop_products to get the full description, all images, and exact pricing for a product before adding it to a checkout session. Args: product_id: WooCommerce product ID (from list_shop_products result). Returns: Dictionary with id, name, price_chf, permalink, description, short_description, on_sale, stock_status, images (list of URLs). Example: >>> result = await get_shop_product(42) >>> print(result['name'], result['price_chf']) |
| create_checkout_sessionA | Create a UCP checkout session with one or more products. Use this when the user wants to buy something. Clears any existing cart and starts a new checkout session. Returns a session_id needed for subsequent update and complete calls. Args: items: List of items to purchase. Each item must have: - product_id (int): from list_shop_products - quantity (int, optional): defaults to 1 Returns: UCP CheckoutSession with session_id, status, line_items, total_chf. Example: >>> result = await create_checkout_session([{"product_id": 42, "quantity": 1}]) >>> session_id = result['session_id'] |
| update_checkout_sessionA | Attach billing and shipping address to a checkout session. Use this after create_checkout_session to provide the delivery address. Required before calling complete_checkout. If shipping is omitted, billing address is used for shipping too. Args: session_id: From create_checkout_session result. billing: Billing address dict with keys: first_name, last_name, email, address_1, city, postcode, country (default 'CH'), state (optional). shipping: Shipping address dict (same keys as billing). Optional. Returns: Updated UCP CheckoutSession with status 'ready_for_complete'. |
| complete_checkoutA | Submit the order and return the payment URL. Use this after update_checkout_session to finalise the purchase. Returns a payment_url the user must open in their browser to pay via PostFinance Checkout. |
| cancel_checkout_sessionA | Cancel a checkout session and clear the cart. Use this when the user wants to abandon a checkout or start over. Args: session_id: From create_checkout_session result. Returns: Dictionary with session_id and status 'canceled'. |
| refresh_conditionsB | Refresh current conditions for a city (called from UI). |
| conditions_dashboardA | Show an interactive aare.guru-style dashboard of current Aare conditions. Displays water temperature in the signature Aare cyan (#2be6ff) card, flow rate, BAFU safety level with the characteristic thick teal border, Swiss German description, and a danger alert when flow is elevated. |
| refresh_temperatureB | Refresh temperature data for a city (called from UI). |
| temperature_cardB | Show an interactive Aare water temperature card. Displays the current water temperature in the signature Aare cyan card with 2-hour forecast trend and Swiss German description. |
| refresh_flowC | Refresh flow and safety data for a city (called from UI). |
| flow_cardB | Show an interactive Aare flow and safety level card. Displays water flow in m³/s with BAFU safety level assessment and color-coded flow zones. |
| refresh_weatherC | Refresh weather data for a city (called from UI). |
| weather_cardB | Show an interactive Aare weather card. Displays current air temperature, precipitation risk, and a 6-day forecast strip. |
| refresh_sunC | Refresh sun data for a city (called from UI). |
| sun_cardB | Show an interactive Aare sun and sunshine card. Displays total sunshine hours for today, sunset time, and time-left-in-sun for nearby locations. |
| fetch_historyC | Fetch historical time-series data (called from UI). |
| historical_chartB | Show an aare.guru-style area chart of historical Aare temperature and flow. Uses the Aare color palette: #0877ab for temperature, #357d9e for flow. |
| fetch_comparisonC | Fetch comparison data for cities (called from UI). |
| compare_cities_tableB | Show a sortable, searchable table comparing Aare conditions across cities. Header summary cards use the aare.guru cyan (#2be6ff) accent. Safety column uses BAFU color coding. |
| refresh_forecastC | Refresh forecast data for a city (called from UI). |
| forecast_viewB | Show a 24-hour forecast with air-temperature chart and hourly card strip. Displays the 2-hour water temperature trend alongside an hourly weather prognosis (MeteoSwiss symbols, air temp, precipitation) for the full day. |
| refresh_intradayC | Refresh intraday readings for a city (called from UI). |
| intraday_viewA | Show today's water temperature as an intraday area chart. Uses the past readings from the current-conditions response to plot how the Aare temperature has evolved throughout the day — no extra API call required. |
| refresh_citiesC | Refresh city comparison data (called from UI). |
| city_finder_viewA | Show all cities ranked by water temperature or safety. Fetches live data for every available city and ranks them so swimmers can instantly find the warmest or safest spot. |
| refresh_safetyC | Refresh safety data for a city (called from UI). |
| safety_briefingB | Show the official BAFU 1–5 danger level scale with the current reading highlighted. Translates the hydrological danger level into plain swimmer guidance, using the actual flow_gefahrenstufe from the API where available. |
| refresh_mapC | Refresh map data (called from UI). |
| aare_mapA | Show an interactive OpenStreetMap with all Aare monitoring stations. Each city is plotted as a circle marker coloured by BAFU safety level. Click a marker to see temperature, flow, and Swiss German description. |
| refresh_shop_cartC | Refresh cart and checkout state for a session (called from UI). |
| shop_cart_viewA | Show cart contents, billing details, and order status for a checkout session. Renders the full shopping cart UI including items, totals, billing address, and payment confirmation. Use after create_checkout_session to track your order. |
| refresh_shop_catalogB | Refresh the merchandise catalog, optionally filtered by search term (called from UI). |
| shop_catalog_viewA | Show the full konsum.aare.guru merchandise catalog as a browsable grid. Displays every available product with thumbnail, name, price, and stock/ sale status. Use this for "what merch is there?" or "show me the shop" questions. Use get_shop_product / product_view for details on one item, and create_checkout_session to start a purchase. |
| refresh_productB | Refresh product details (called from UI). |
| product_viewA | Show a product detail page for a konsum.aare.guru merchandise item. Displays the product image, name, price, stock status, and description. Use after list_shop_products to let the user inspect a specific item before adding it to their cart. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| daily-swimming-report | Generates comprehensive daily swimming report combining conditions, safety. **Args:** city: City to generate the report for (default: `Bern`). Use `compare_cities` to discover available locations. include_forecast: Whether to include 2-hour forecast in the report (default: `true`) **Returns:** Prompt template string instructing the LLM to create a formatted report with current conditions, safety assessment, forecast, and recommendations. The report includes Swiss German descriptions and safety warnings. |
| compare-swimming-spots | Generates comparison of all swimming locations ranked by temperature and safety. **Args:** min_temperature: Optional minimum temperature threshold in Celsius (e.g., `18.0`). Filter out cities below this temperature. safety_only: Whether to show only safe locations (flow < 150 m³/s). Default: `false`. **Returns:** Prompt template string instructing the LLM to compare all cities, rank them by temperature and safety, and provide a recommendation for the best swimming location today. |
| weekly-trend-analysis | Generates trend analysis showing temperature and flow patterns with outlook. **Args:** city: City to analyze (default: `Bern`). Use `compare_cities` to discover locations. days: Number of days to analyze (`3`, `7`, or `14`). Default: `7` days (one week). **Returns:** Prompt template string instructing the LLM to analyze historical data, identify temperature and flow trends, and provide outlook recommendations for optimal swimming times. |
| shop-browse | Guides the assistant through browsing the konsum.aare.guru merchandise catalog. **Args:** search: Optional keyword to filter products (e.g., `"swim buoy"`, `"towel"`). Omit to browse the full catalog. **Returns:** Prompt template instructing the LLM to list products, present them clearly, and offer to show detail or start a purchase. |
| shop-checkout | Guides the assistant through the full UCP checkout flow on konsum.aare.guru. **Args:** items: Optional description of what the user wants to buy (e.g., `"swim buoy × 1"`). Leave empty if items are not yet known. **Returns:** Prompt template instructing the LLM to walk the user through the complete purchase flow: browse → product detail → cart → billing → confirm. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| get_cities | Retrieves the complete list of cities with Aare monitoring stations. Returns JSON array containing city identifiers, full names, coordinates, and current temperature readings for all monitored locations. Use this resource for location discovery and initial data exploration. **Returns**: JSON string with array of city objects, each containing: - city (str): City identifier (e.g., 'Bern', 'Thun') - name (str): Display name - longname (str): Full location name - coordinates (object): Latitude and longitude - aare (float): Current water temperature in Celsius |
| get_safety_levels_resource | |
| get_thresholds_resource | |
| shop_catalog_resource | Product catalog from the Aareguru merchandise shop (konsum.aare.guru). Returns JSON list of all available products with name, price in CHF, permalink, and stock status. |
| Prefab Renderer (conditions_dashboard) | |
| Prefab Renderer (temperature_card) | |
| Prefab Renderer (flow_card) | |
| Prefab Renderer (weather_card) | |
| Prefab Renderer (sun_card) | |
| Prefab Renderer (historical_chart) | |
| Prefab Renderer (compare_cities_table) | |
| Prefab Renderer (forecast_view) | |
| Prefab Renderer (intraday_view) | |
| Prefab Renderer (city_finder_view) | |
| Prefab Renderer (safety_briefing) | |
| Prefab Renderer (aare_map) | |
| Prefab Renderer (shop_cart_view) | |
| Prefab Renderer (shop_catalog_view) | |
| Prefab Renderer (product_view) |
TDQS
Scored across 42 tools
Many tools have overlapping purposes: get_current_temperature/temperature_card/conditions_dashboard all report current conditions, compare_cities/compare_cities_table/fetch_comparison overlap, and the 13 refresh_* tools are nearly identical except for the resource name. UI view tools and data retrieval tools form unclear boundaries for an agent deciding which tool to call.
Naming is inconsistent across the set: get_current_temperature and compare_cities use verb_noun, shop_cart_view and weather_card use noun_view/noun_card, while refresh_shop_cart, fetch_history, and forecast_view mix different verb prefixes. The patterns are individually readable but do not form one predictable convention.
42 tools is excessive for the apparent scope of river conditions plus a small merchandise shop. Many tools are UI-only views and refresh actions that duplicate the same underlying data operations, inflating the surface without adding meaningful agent capabilities.
The core domain is well covered: current conditions, forecasts, historical data, comparisons, safety levels, and the full checkout lifecycle from listing products to payment URL. Minor gaps exist, such as no dedicated sun data retrieval separate from the sun_card view, but agents can accomplish the main workflows.