Skip to main content
Glama

get_electricity_tariff

Retrieve Swiss electricity tariffs by municipality with price breakdowns for energy, grid, and taxes from 2011 to 2026.

Instructions

Get Swiss electricity tariff (price in Rappen/kWh) for a municipality from ElCom (Swiss Federal Electricity Commission). Returns total price and price breakdown by component (energy, grid, taxes). Valid years: 2011–2026.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
municipalityYesMunicipality BFS number (e.g. '261' for Zürich, '351' for Bern, '6621' for Genève). Use search_municipality_energy to find the ID.
categoryNoElectricity category. Household: H1–H8 (H4 is default, ~4500 kWh/year). Commercial: C1–C7. Default: H4.
yearNoTariff year (2011–2026). Default: current year (2026).

Implementation Reference

  • The implementation of the get_electricity_tariff tool handler, which processes the input arguments, fetches data from the ElCom GraphQL API, and formats the response.
    switch (name) {
      case "get_electricity_tariff": {
        const municipality = args.municipality as string;
        const category = (args.category as string | undefined) ?? "H4";
        const year = (args.year as string | undefined) ?? CURRENT_YEAR;
    
        if (!municipality?.trim()) {
          throw new Error("municipality is required. Use search_municipality_energy to find the BFS number.");
        }
    
        const raw = await getTariffWithComponents(municipality, category, year);
        const observations = raw.observations as Array<Record<string, unknown>>;
    
        if (!observations.length) {
          return JSON.stringify({
            error: "No tariff data found",
            municipality,
            category,
            year,
            hint: "Check the municipality BFS number with search_municipality_energy. Not all municipalities have tariff data for every year.",
            source: "https://www.strompreis.elcom.admin.ch",
          }, null, 2);
        }
    
        // If multiple operators, return all (some municipalities served by multiple operators)
        const result = observations.map((obs) => ({
          municipality: obs.municipalityLabel,
          municipalityId: obs.municipality,
          canton: obs.cantonLabel,
          operator: obs.operatorLabel,
          category,
          categoryDescription: CATEGORY_DESCRIPTIONS[category] ?? category,
          year,
          tariff: {
            total_rp_per_kwh: obs.total,
            components: {
              energy_rp_per_kwh: obs.energy,
              grid_usage_rp_per_kwh: obs.gridusage,
              municipality_charge_rp_per_kwh: obs.charge,
              federal_levy_rp_per_kwh: obs.aidfee,
              fixed_costs_rp_per_kwh: obs.fixcosts,
              metering_rate_rp_per_kwh: obs.meteringrate,
              annual_metering_cost_rp_per_kwh: obs.annualmeteringcost,
            },
          },
          coverageRatio: obs.coverageRatio,
          note: "Prices in Rappen per kWh (1 CHF = 100 Rappen)",
          source: `https://www.strompreis.elcom.admin.ch/municipality/${municipality}`,
        }));
    
        return JSON.stringify(result.length === 1 ? result[0] : result, null, 2);
      }
  • Tool definition and input schema for get_electricity_tariff.
    export const energyTools = [
      {
        name: "get_electricity_tariff",
        description:
          "Get Swiss electricity tariff (price in Rappen/kWh) for a municipality from ElCom (Swiss Federal Electricity Commission). Returns total price and price breakdown by component (energy, grid, taxes). Valid years: 2011–2026.",
        inputSchema: {
          type: "object",
          required: ["municipality"],
          properties: {
            municipality: {
              type: "string",
              description:
                "Municipality BFS number (e.g. '261' for Zürich, '351' for Bern, '6621' for Genève). Use search_municipality_energy to find the ID.",
            },
            category: {
              type: "string",
              description:
                "Electricity category. Household: H1–H8 (H4 is default, ~4500 kWh/year). Commercial: C1–C7. Default: H4.",
              enum: ["H1","H2","H3","H4","H5","H6","H7","H8","C1","C2","C3","C4","C5","C6","C7"],
            },
            year: {
              type: "string",
              description: "Tariff year (2011–2026). Default: current year (2026).",
            },
          },
        },
      },
  • Helper function getTariffWithComponents that encapsulates the GraphQL query logic for fetching electricity tariffs.
    async function getTariffWithComponents(municipality: string, category: string, year: string): Promise<Record<string, unknown>> {
      // Fetch all price components via aliased query
      const query = `
        query ObservationsWithAllPriceComponents($locale: String!, $filters: ObservationFilters!) {
          observations(locale: $locale, filters: $filters) {
            period
            municipality
            municipalityLabel
            operator
            operatorLabel
            canton
            cantonLabel
            category
            total: value(priceComponent: total)
            energy: value(priceComponent: energy)
            gridusage: value(priceComponent: gridusage)
            charge: value(priceComponent: charge)
            aidfee: value(priceComponent: aidfee)
            fixcosts: value(priceComponent: fixcosts)
            meteringrate: value(priceComponent: meteringrate)
            annualmeteringcost: value(priceComponent: annualmeteringcost)
          }
        }
      `;
    
      const data = await gql<{ observations: Array<Record<string, unknown>> }>(query, {
        locale: "de",
        filters: {
          period: [year],
          municipality: [municipality],
          category: [category],
        },
      });
    
      return { observations: data.observations ?? [] };
    }

Tool Definition Quality

Score is being calculated. Check back soon.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/vikramgorla/mcp-swiss'

If you have feedback or need assistance with the MCP directory API, please join our Discord server