# Aleva open data (remote · api.aleva.se)

Swedish public data as read-only tools: registries, statistics, domains, transport, energy.

- Trust score: 81/100 (high trust)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `api.aleva.se`: 81/100 (this document), [markdown](https://verifymcp.io/servers/se-aleva-data/api.md), [page](https://verifymcp.io/servers/se-aleva-data/api)

## Channel facts

- Endpoint: `https://api.aleva.se/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 80/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 62/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 9054 tokens (~192/item across 47 items; 47 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 67/100
  - Stability observed for 20 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 47 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 48 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the Aleva open data MCP server?

Aleva open data is a hosted endpoint at https://api.aleva.se/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http se-aleva-data 'https://api.aleva.se/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "se-aleva-data": {
      "url": "https://api.aleva.se/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "se-aleva-data": {
      "type": "http",
      "url": "https://api.aleva.se/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.se-aleva-data]
url = "https://api.aleva.se/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "se-aleva-data": {
      "type": "remote",
      "url": "https://api.aleva.se/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add se-aleva-data --url 'https://api.aleva.se/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  se-aleva-data:
    url: "https://api.aleva.se/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "se-aleva-data": {
      "Transport": "http",
      "Url": "https://api.aleva.se/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add se-aleva-data -t streamable-http -u 'https://api.aleva.se/mcp'
```

### Other

```json
{
  "mcpServers": {
    "se-aleva-data": {
      "type": "http",
      "url": "https://api.aleva.se/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 81, +1)

No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-03 (score 80, +1)

No change was recorded against any check on this day. Stability & Change Management went from 57 to 60. That category is still filling its 30-day observation window: 17 days of observed history at the previous scan, 18 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-01 (score 79, +1)

No change was recorded against any check on this day. Stability & Change Management went from 50 to 53. That category is still filling its 30-day observation window: 15 days of observed history at the previous scan, 16 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-30 (score 78, +1)

No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-28 (score 77, +1)

No change was recorded against any check on this day. Stability & Change Management went from 37 to 40. That category is still filling its 30-day observation window: 11 days of observed history at the previous scan, 12 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-26 (score 76, +1)

No change was recorded against any check on this day. Stability & Change Management went from 30 to 33. That category is still filling its 30-day observation window: 9 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-24 (score 75, +50)

- [security improvement] Authorization: unverified → partial
- [security improvement] Injection markers: unverified → pass
- [security improvement] Transport: fail → pass
- [functional improvement] Endpoint reachability: not serving MCP → reachable
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] Stability: unverified → 0.27
- [functional improvement] MCP protocol: unverified → pass

### 2026-10-23 (score 25, −49)

- [security regression] Endpoint reachability: reachable → not serving MCP
- [security regression] Authorization: partial → unverified
- [security regression] Tool safety: pass → unverified
- [security regression] Stability: 0.20 → unverified
- [security regression] Transport: pass → fail
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified

## MCP tools (47)

### `air_passengers_monthly` (~125 tokens)

Air passengers in Sweden per month

Air passengers in Sweden per month. Returns a list of records; pass next_cursor to get the next page. Fields: month (date); passengers (bigint); domestic (bigint); international (bigint); movements (bigint).

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `limit` (integer): How many rows to return
- `month` (string): Month (equals)
- `month_gte` (string): Month (at least)
- `month_lte` (string): Month (at most)

### `airport_passengers` (~172 tokens)

Passengers per airport and year

Passengers per airport and year. Returns a list of records; pass next_cursor to get the next page. Fields: year (integer); airport (varchar); passengers (bigint); movements (bigint); international_share (double); months (bigint): Months reported (the current year is partial).

Input parameters:

- `airport` (string): Airport (as reported, upper case) (equals)
- `airport_prefix` (string): Airport (as reported, upper case) (starts with)
- `cursor` (string): next_cursor from the previous result, for the next page
- `limit` (integer): How many rows to return
- `year` (integer): Year (equals)
- `year_gte` (integer): Year (at least)
- `year_lte` (integer): Year (at most)

### `consumer_prices` (~218 tokens)

Consumer price index per month

Consumer price index per month. Returns a list of records; pass next_cursor to get the next page. Fields: month (date): First day of the month; measure_code (varchar): 00000807 index, 00000804 12-month change, 00000806 monthly change; measure (varchar); value (double).

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `limit` (integer): How many rows to return
- `measure_code` (string): 00000807 index, 00000804 12-month change, 00000806 monthly change (equals)
- `measure_code_in` (array): 00000807 index, 00000804 12-month change, 00000806 monthly change (any of)
- `month` (string): Month (first day) (equals)
- `month_gte` (string): Month (first day) (at least)
- `month_lte` (string): Month (first day) (at most)

### `court_rulings` (~247 tokens)

Published court rulings

Published court rulings. Returns a list of records; pass next_cursor to get the next page. Fields: id (varchar); decided_on (date); published_at (timestamptz); court_code (varchar); court (varchar); kind (varchar): REFERAT (case report), DOM_ELLER_BESLUT (judgment or decision), ...; type (varchar); case_numbers (varchar); reference (varchar): Case report number, e.g. NJA 2026:12; keywords (varchar); laws (varchar): Provisions cited; summary (varchar).

Input parameters:

- `court_code` (string): HDO Supreme Court, HFD Supreme Administrative Court, ... (equals)
- `court_code_in` (array): HDO Supreme Court, HFD Supreme Administrative Court, ... (any of)
- `cursor` (string): next_cursor from the previous result, for the next page
- `decided_on` (string): Decision day (equals)
- `decided_on_gte` (string): Decision day (at least)
- `decided_on_lte` (string): Decision day (at most)
- `limit` (integer): How many rows to return

### `court_rulings_by_court` (~85 tokens)

Rulings per court

Rulings per court. Returns a list of records; pass next_cursor to get the next page. Fields: court_code (varchar); court (varchar); rulings (bigint); latest (date).

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `limit` (integer): How many rows to return

### `debt_restructuring` (~131 tokens)

Debt restructuring applications per month

Debt restructuring applications per month. Returns a list of records; pass next_cursor to get the next page. Fields: month (date); applications (bigint); women (bigint); men (bigint); eservice_share (double): Share filed via the e-service.

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `limit` (integer): How many rows to return
- `month` (string): Month (equals)
- `month_gte` (string): Month (at least)
- `month_lte` (string): Month (at most)

### `debt_restructuring_by_age` (~116 tokens)

Debt restructuring per year and age

Debt restructuring per year and age. Returns a list of records; pass next_cursor to get the next page. Fields: year (integer); age_group (varchar); applications (bigint).

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `limit` (integer): How many rows to return
- `year` (integer): Year (equals)
- `year_gte` (integer): Year (at least)
- `year_lte` (integer): Year (at most)

### `describe_endpoint` (~40 tokens)

Describe a tool's data

The fields, parameters, licence, sources and freshness of one data tool.

Input parameters:

- `tool` (string, required): A tool name from tools/list or search_catalogue

### `domain_lookup` (~176 tokens)

One domain in the latest zone

One domain in the latest zone. Returns one record, or an error when there is no match. Fields: domain (varchar): Domain name, lower-case; tld (varchar): se or nu; nameservers (varchar[]): NS host names; glue_v4 (varchar[]): In-zone glue A records; glue_v6 (varchar[]): In-zone glue AAAA records; has_ds (boolean): DNSSEC signed delegation; ds_algorithms (integer[]): DNSSEC algorithm numbers; serial (bigint): Zone serial the row comes from; fetched_at (timestamptz): When the zone was transferred. Attribution required when the data is shown: Contains data from the Swedish Internet Foundation (Internetstiftelsen), licensed under CC BY 4.0

Input parameters:

- `name` (string, required): Domain name, e.g. example.se

### `domains_dropped` (~212 tokens)

Dropped .se and .nu domains on a date

Dropped .se and .nu domains on a date. Returns a list of records; pass next_cursor to get the next page. Fields: date (date): Day the change was seen (Europe/Stockholm); domain (varchar); tld (varchar); prev_nameservers (varchar[]): Name servers before the change; prev_has_ds (boolean); serial (bigint): Serial the change was seen in; detected_at (timestamptz). Attribution required when the data is shown: Contains data from the Swedish Internet Foundation (Internetstiftelsen), licensed under CC BY 4.0

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `date` (string, required): Day (Europe/Stockholm), YYYY-MM-DD (equals)
- `limit` (integer): How many rows to return
- `tld` (string): Zone: se or nu (equals)
- `tld_in` (array): Zone: se or nu (any of)

### `domains_expiring` (~268 tokens)

Domains about to be released

Domains about to be released. Returns a list of records; pass next_cursor to get the next page. Fields: domain (varchar); tld (varchar); release_at (date): Day it can be registered again (from 04:00 UTC), unless renewed first; days_left (integer): Days from the list's date to the release date; label_length (integer): Characters before the dot; in_zone (boolean): Still delegated in the latest zone snapshot. Attribution required when the data is shown: Contains data from the Swedish Internet Foundation (Internetstiftelsen), licensed under CC BY 4.0

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `label_length` (integer): Characters before the dot (equals)
- `label_length_lte` (integer): Characters before the dot (at most)
- `limit` (integer): How many rows to return
- `release_at` (string): Release day (equals)
- `release_at_gte` (string): Release day (at least)
- `release_at_lte` (string): Release day (at most)
- `tld` (string): Zone: se or nu (equals)
- `tld_in` (array): Zone: se or nu (any of)

### `domains_new` (~212 tokens)

New .se and .nu domains on a date

New .se and .nu domains on a date. Returns a list of records; pass next_cursor to get the next page. Fields: date (date): Day the change was seen (Europe/Stockholm); domain (varchar); tld (varchar); nameservers (varchar[]): Name servers after the change (empty when removed); has_ds (boolean); serial (bigint): Serial the change was seen in; detected_at (timestamptz). Attribution required when the data is shown: Contains data from the Swedish Internet Foundation (Internetstiftelsen), licensed under CC BY 4.0

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `date` (string, required): Day (Europe/Stockholm), YYYY-MM-DD (equals)
- `limit` (integer): How many rows to return
- `tld` (string): Zone: se or nu (equals)
- `tld_in` (array): Zone: se or nu (any of)

### `domains_valuable` (~365 tokens)

Domains about to be released, with a value score

Domains about to be released, with a value score. Returns a list of records; pass next_cursor to get the next page. Fields: domain (varchar); tld (varchar); release_at (date): Day it can be registered again (from 04:00 UTC), unless renewed first; days_left (integer); length (integer): Characters before the dot; score (integer): 0-100; higher is shorter, cleaner and closer to real words; word_sv (boolean); word_en (boolean); compound (boolean); possible_trademark (boolean): Contains a well-known brand: probably not usable; reasons_sv (varchar): Why, in Swedish; reasons_en (varchar): Why, in English. Attribution required when the data is shown: Contains data from the Swedish Internet Foundation (Internetstiftelsen), licensed under CC BY 4.0 SALDO, Språkbanken Text (University of Gothenburg), CC BY 4.0 Word list from SCOWL, copyright Kevin Atkinson (wordlist.aspell.net)

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `days_left_gte` (integer): Days until release (at least)
- `days_left_lte` (integer): Days until release (at most)
- `limit` (integer): How many rows to return
- `possible_trademark` (boolean): Contains a well-known brand (equals)
- `release_at` (string): Release day (equals)
- `release_at_gte` (string): Release day (at least)
- `release_at_lte` (string): Release day (at most)
- `score_gte` (integer): Minimum score (at least)
- `tld` (string): se or nu (equals)

### `electricity_balance` (~111 tokens)

Electricity production and use per year

Electricity production and use per year. Returns a list of records; pass next_cursor to get the next page. Fields: year (integer); series (varchar); twh (double).

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `limit` (integer): How many rows to return
- `year` (integer): Year (equals)
- `year_gte` (integer): Year (at least)
- `year_lte` (integer): Year (at most)

### `electricity_forecast` (~139 tokens)

Electricity production per source with forecast

Electricity production per source with forecast. Returns a list of records; pass next_cursor to get the next page. Fields: year (integer); series (varchar): Power source; twh (double).

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `limit` (integer): How many rows to return
- `series` (string): Power source (equals)
- `series_in` (array): Power source (any of)
- `year` (integer): Year (equals)
- `year_gte` (integer): Year (at least)
- `year_lte` (integer): Year (at most)

### `foods` (~341 tokens)

Foods and nutrients per 100 g

Foods and nutrients per 100 g. Returns a list of records; pass next_cursor to get the next page. Fields: food_id (integer); name (varchar); kind (varchar); energy_kcal (double); protein_g (double); fat_g (double); saturated_fat_g (double); carbohydrates_g (double); sugars_g (double); fibre_g (double); salt_g (double); iron_mg (double); calcium_mg (double); vitamin_c_mg (double); vitamin_d_ug (double). Attribution required when the data is shown: Source: Livsmedelsverket's food composition database, CC BY 4.0

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `energy_kcal_gte` (number): kcal per 100 g (at least)
- `energy_kcal_lte` (number): kcal per 100 g (at most)
- `fibre_g_gte` (number): Fibre per 100 g (at least)
- `fibre_g_lte` (number): Fibre per 100 g (at most)
- `food_id` (integer): Food number (equals)
- `food_id_in` (array): Food number (any of)
- `limit` (integer): How many rows to return
- `name` (string): Name or its beginning, lower case (equals)
- `name_prefix` (string): Name or its beginning, lower case (starts with)
- `protein_g_gte` (number): Protein per 100 g (at least)
- `protein_g_lte` (number): Protein per 100 g (at most)

### `guest_nights` (~128 tokens)

Guest nights per month

Guest nights per month. Returns a list of records; pass next_cursor to get the next page. Fields: month (date); origin (varchar): Sverige or Utland; nights (bigint).

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `limit` (integer): How many rows to return
- `month` (string): Month (equals)
- `month_gte` (string): Month (at least)
- `month_lte` (string): Month (at most)
- `origin` (string): Sverige or Utland (equals)

### `guest_nights_by_country` (~115 tokens)

Foreign guest nights per country and year

Foreign guest nights per country and year. Returns a list of records; pass next_cursor to get the next page. Fields: year (integer); country (varchar); nights (bigint).

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `limit` (integer): How many rows to return
- `year` (integer, required): Year (equals)
- `year_gte` (integer): Year (at least)
- `year_lte` (integer): Year (at most)

### `guest_nights_by_county` (~151 tokens)

Guest nights per county and year

Guest nights per county and year. Returns a list of records; pass next_cursor to get the next page. Fields: year (integer); county_code (varchar); county (varchar); nights (bigint); foreign_share (double).

Input parameters:

- `county_code` (string): County code (equals)
- `county_code_in` (array): County code (any of)
- `cursor` (string): next_cursor from the previous result, for the next page
- `limit` (integer): How many rows to return
- `year` (integer): Year (equals)
- `year_gte` (integer): Year (at least)
- `year_lte` (integer): Year (at most)

### `house_prices` (~163 tokens)

House price index

House price index. Returns a list of records; pass next_cursor to get the next page. Fields: region_code (varchar); region (varchar); year (integer); index (double): 1981 = 100.

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `limit` (integer): How many rows to return
- `region_code` (string): 00 Sweden, 0010 Greater Stockholm, ... (equals)
- `region_code_in` (array): 00 Sweden, 0010 Greater Stockholm, ... (any of)
- `year` (integer): Year (equals)
- `year_gte` (integer): Year (at least)
- `year_lte` (integer): Year (at most)

### `job_ads` (~163 tokens)

Open job ads per day

Open job ads per day. Returns a list of records; pass next_cursor to get the next page. Fields: date (date); dimension (varchar): total, remote, occupation-field, region or municipality; concept_id (varchar): JobTech taxonomy id; code (varchar): County or municipality code; term (varchar); ads (bigint).

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `date` (string): Day (equals)
- `date_gte` (string): Day (at least)
- `date_lte` (string): Day (at most)
- `dimension` (string, required): total, remote, occupation-field, region or municipality (equals)
- `limit` (integer): How many rows to return

### `job_ads_national` (~120 tokens)

Open job ads in Sweden per day

Open job ads in Sweden per day. Returns a list of records; pass next_cursor to get the next page. Fields: date (date); ads (bigint); remote (bigint); remote_share (double).

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `date` (string): Day (equals)
- `date_gte` (string): Day (at least)
- `date_lte` (string): Day (at most)
- `limit` (integer): How many rows to return

### `medicine_shortages` (~253 tokens)

Medicine shortages

Medicine shortages. Returns a list of records; pass next_cursor to get the next page. Fields: shortage_id (varchar); npl_pack_id (varchar); product (varchar); package (varchar); substances (varchar); atc_code (varchar); atc_group (varchar): ATC main group (A alimentary tract, N nervous system, ...); holder (varchar): Marketing authorisation holder; starts (date); ends_forecast (date); ended (date); ongoing (boolean); last_updated (date). Attribution required when the data is shown: Contains data from Läkemedelsverket, CC BY 4.0

Input parameters:

- `atc_code` (string): ATC code or its beginning (equals)
- `atc_code_prefix` (string): ATC code or its beginning (starts with)
- `cursor` (string): next_cursor from the previous result, for the next page
- `limit` (integer): How many rows to return
- `ongoing` (boolean): Still ongoing (equals)
- `starts` (string): First day (equals)
- `starts_gte` (string): First day (at least)
- `starts_lte` (string): First day (at most)

### `medicine_shortages_by_group` (~106 tokens)

Ongoing shortages per ATC group

Ongoing shortages per ATC group. Returns a list of records; pass next_cursor to get the next page. Fields: atc_group (varchar); packages (bigint); products (bigint). Attribution required when the data is shown: Contains data from Läkemedelsverket, CC BY 4.0

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `limit` (integer): How many rows to return

### `medicine_shortages_monthly` (~146 tokens)

New medicine shortages per month

New medicine shortages per month. Returns a list of records; pass next_cursor to get the next page. Fields: month (date); shortages (bigint): Shortages that started; packages (bigint): Packages affected. Attribution required when the data is shown: Contains data from Läkemedelsverket, CC BY 4.0

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `limit` (integer): How many rows to return
- `month` (string): Month (equals)
- `month_gte` (string): Month (at least)
- `month_lte` (string): Month (at most)

### `municipal_figures` (~246 tokens)

Key figures per municipality and year (Kolada)

Key figures per municipality and year (Kolada). Returns a list of records; pass next_cursor to get the next page. Fields: kpi (varchar): Kolada key figure id; kpi_title (varchar); municipality_id (varchar); municipality (varchar); municipality_type (varchar): K municipality, L region; year (integer); value (double). Attribution required when the data is shown: Source: Kolada (RKA), CC BY 4.0

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `kpi` (string, required): Kolada key figure id, e.g. N00900 (equals)
- `kpi_in` (array): Kolada key figure id, e.g. N00900 (any of)
- `limit` (integer): How many rows to return
- `municipality_id` (string): Municipality or region id (equals)
- `municipality_id_in` (array): Municipality or region id (any of)
- `year` (integer): Year (equals)
- `year_gte` (integer): Year (at least)
- `year_lte` (integer): Year (at most)

### `municipal_figures_latest` (~192 tokens)

Key figures per municipality, latest year

Key figures per municipality, latest year. Returns a list of records; pass next_cursor to get the next page. Fields: kpi (varchar); kpi_title (varchar); municipality_id (varchar); municipality (varchar); municipality_type (varchar); year (integer); value (double). Attribution required when the data is shown: Source: Kolada (RKA), CC BY 4.0

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `kpi` (string, required): Kolada key figure id (equals)
- `kpi_in` (array): Kolada key figure id (any of)
- `limit` (integer): How many rows to return
- `municipality_id` (string): Id (equals)
- `municipality_id_in` (array): Id (any of)
- `municipality_type` (string): K municipality, L region (equals)

### `party_agreement` (~142 tokens)

How often the parties vote alike

How often the parties vote alike. Returns a list of records; pass next_cursor to get the next page. Fields: party (varchar); other_party (varchar); votes (bigint): Votes where both parties voted yes or no; same (bigint); share (double). Attribution required when the data is shown: Source: Sveriges riksdag

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `limit` (integer): How many rows to return
- `party` (string): Party, e.g. S (equals)
- `party_in` (array): Party, e.g. S (any of)

### `party_attendance` (~165 tokens)

Votes and absence per party

Votes and absence per party. Returns a list of records; pass next_cursor to get the next page. Fields: party (varchar): - is members without a party; riksmote (varchar): Session, e.g. 2025/26; votes (bigint); absent_share (double); abstain_share (double). Attribution required when the data is shown: Source: Sveriges riksdag

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `limit` (integer): How many rows to return
- `riksmote` (string): Session, e.g. 2025/26 (equals)
- `riksmote_in` (array): Session, e.g. 2025/26 (any of)

### `population` (~194 tokens)

Population per region and year

Population per region and year. Returns a list of records; pass next_cursor to get the next page. Fields: region_code (varchar): 00 Sweden, 2 digits county, 4 digits municipality; region (varchar); level (varchar); year (integer); population (bigint).

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `level` (string): country, county or municipality (equals)
- `limit` (integer): How many rows to return
- `region_code` (string): 00 Sweden, 2 digits county, 4 digits municipality (equals)
- `region_code_in` (array): 00 Sweden, 2 digits county, 4 digits municipality (any of)
- `year` (integer): Year (equals)
- `year_gte` (integer): Year (at least)
- `year_lte` (integer): Year (at most)

### `population_latest` (~151 tokens)

Population in the latest year and change

Population in the latest year and change. Returns a list of records; pass next_cursor to get the next page. Fields: region_code (varchar); region (varchar); level (varchar); year (integer): Latest year; population (bigint): Population in the latest year; first_year (integer); change_pct (double): Change since first_year, percent.

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `level` (string): country, county or municipality (equals)
- `limit` (integer): How many rows to return
- `region_code` (string): Region code (equals)
- `region_code_in` (array): Region code (any of)

### `riksbank_rates` (~229 tokens)

Policy rate and exchange rates per day

Policy rate and exchange rates per day. Returns a list of records; pass next_cursor to get the next page. Fields: series (varchar): SECBREPOEFF policy rate, SEKEURPMI, SEKUSDPMI, SEKGBPPMI; description (varchar); date (date); value (double). Attribution required when the data is shown: Source: Sveriges riksbank, CC BY 4.0

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `date` (string): Day (equals)
- `date_gte` (string): Day (at least)
- `date_lte` (string): Day (at most)
- `limit` (integer): How many rows to return
- `series` (string, required): SECBREPOEFF policy rate, SEKEURPMI, SEKUSDPMI, SEKGBPPMI (equals)
- `series_in` (array): SECBREPOEFF policy rate, SEKEURPMI, SEKUSDPMI, SEKGBPPMI (any of)

### `search_catalogue` (~51 tokens)

Search the catalogue

Find datasets and the tools that query them by words in their names, descriptions and fields (Swedish or English).

Input parameters:

- `query` (string, required): What to look for, e.g. 'population per kommun'

### `stats_dnssec` (~242 tokens)

DNSSEC adoption per zone and day

DNSSEC adoption per zone and day. Returns a list of records; pass next_cursor to get the next page. Fields: date (date): Day of the snapshot (Europe/Stockholm); tld (varchar); domains (bigint); signed (bigint): Domains with a DS record; share_signed (double); ecdsa_p256 (bigint): Signed with algorithm 13 (ECDSA P-256); rsa_sha256 (bigint): Signed with algorithm 8 (RSA/SHA-256). Attribution required when the data is shown: Contains data from the Swedish Internet Foundation (Internetstiftelsen), licensed under CC BY 4.0

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `date` (string): Day (equals)
- `date_gte` (string): Day (at least)
- `date_lte` (string): Day (at most)
- `limit` (integer): How many rows to return
- `tld` (string): Zone: se or nu (equals)
- `tld_in` (array): Zone: se or nu (any of)

### `stats_nameservers` (~245 tokens)

Name server operators and market share

Name server operators and market share. Returns a list of records; pass next_cursor to get the next page. Fields: tld (varchar); operator (varchar): Registered domain of the name server hosts, e.g. loopia.se; domains (bigint): Domains with at least one name server at this operator; share (double): domains / all domains in the zone; serial (bigint); fetched_at (timestamptz). Attribution required when the data is shown: Contains data from the Swedish Internet Foundation (Internetstiftelsen), licensed under CC BY 4.0

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `domains_gte` (integer): Minimum number of domains (at least)
- `limit` (integer): How many rows to return
- `operator` (string): Operator (registered domain of the NS hosts) (equals)
- `operator_prefix` (string): Operator (registered domain of the NS hosts) (starts with)
- `tld` (string): Zone: se or nu (equals)
- `tld_in` (array): Zone: se or nu (any of)

### `swestr` (~179 tokens)

Swestr per day

Swestr per day. Returns a list of records; pass next_cursor to get the next page. Fields: date (date); rate (double): Percent; pctl12_5 (double): 12.5th percentile of the transactions' rates; pctl87_5 (double): 87.5th percentile; volume_msek (double): Transaction volume, SEK million; transactions (integer). Attribution required when the data is shown: Source: Sveriges riksbank, CC BY 4.0

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `date` (string): Day (equals)
- `date_gte` (string): Day (at least)
- `date_lte` (string): Day (at most)
- `limit` (integer): How many rows to return

### `train_punctuality` (~221 tokens)

Train punctuality per station and day

Train punctuality per station and day. Returns a list of records; pass next_cursor to get the next page. Fields: date (date); station (varchar): Location signature; station_name (varchar); arrivals (bigint); canceled (bigint); on_time (bigint): At most 5 minutes late; on_time_share (double): Share on time among cancelled and reported arrivals; avg_delay_min (double): Average delay, early counted as 0.

Input parameters:

- `arrivals_gte` (integer): Minimum arrivals (at least)
- `cursor` (string): next_cursor from the previous result, for the next page
- `date` (string): Day (equals)
- `date_gte` (string): Day (at least)
- `date_lte` (string): Day (at most)
- `limit` (integer): How many rows to return
- `station` (string): Location signature, e.g. Cst (equals)
- `station_in` (array): Location signature, e.g. Cst (any of)

### `train_punctuality_daily` (~129 tokens)

Train punctuality in Sweden per day

Train punctuality in Sweden per day. Returns a list of records; pass next_cursor to get the next page. Fields: date (date); arrivals (bigint); canceled (bigint); on_time_share (double); avg_delay_min (double).

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `date` (string): Day (equals)
- `date_gte` (string): Day (at least)
- `date_lte` (string): Day (at most)
- `limit` (integer): How many rows to return

### `weather_history` (~260 tokens)

Weather per hour and station

Weather per hour and station. Returns a list of records; pass next_cursor to get the next page. Fields: station_id (varchar): SMHI station id; station (varchar); parameter (varchar): 1 temperature, 4 wind speed, 6 humidity, 7 precipitation; unit (varchar); observed_at (timestamptz); date (date): Day (Europe/Stockholm); value (double); quality (varchar): G checked, Y suspect (latest-hour data is not quality-controlled). Attribution required when the data is shown: Contains data from SMHI (Swedish Meteorological and Hydrological Institute), CC BY 4.0

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `date` (string): Day (equals)
- `date_gte` (string): Day (at least)
- `date_lte` (string): Day (at most)
- `limit` (integer): How many rows to return
- `parameter` (string): Parameter (equals)
- `parameter_in` (array): Parameter (any of)
- `station_id` (string, required): SMHI station id (equals)
- `station_id_in` (array): SMHI station id (any of)

### `weather_now` (~255 tokens)

Current weather per SMHI station

Current weather per SMHI station. Returns a list of records; pass next_cursor to get the next page. Fields: station_id (varchar): SMHI station id; station (varchar); latitude (double); longitude (double); parameter (varchar): 1 temperature, 4 wind speed, 6 humidity, 7 precipitation; parameter_name (varchar); unit (varchar); observed_at (timestamptz); value (double); quality (varchar): G checked, Y suspect (latest-hour data is not quality-controlled). Attribution required when the data is shown: Contains data from SMHI (Swedish Meteorological and Hydrological Institute), CC BY 4.0

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `limit` (integer): How many rows to return
- `parameter` (string): 1 temperature, 4 wind, 6 humidity, 7 precipitation (equals)
- `parameter_in` (array): 1 temperature, 4 wind, 6 humidity, 7 precipitation (any of)
- `station_id` (string): SMHI station id (equals)
- `station_id_in` (array): SMHI station id (any of)

### `web_agents` (~243 tokens)

Swedish A2A agents

Swedish A2A agents. Returns a list of records; pass next_cursor to get the next page. Fields: month (date); domain (varchar); tld (varchar): se or nu; name (varchar): Agent name; provider (varchar): Provider organisation; skill_count (integer): Number of skills; streaming (boolean): Supports streaming; url (varchar): Agent card URL. Attribution required when the data is shown: Source: Aleva (aleva.se), CC BY 4.0

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `domain` (string): Domain (equals)
- `limit` (integer): How many rows to return
- `month` (string): Sweep month (first of month) (equals)
- `month_gte` (string): Sweep month (first of month) (at least)
- `month_lte` (string): Sweep month (first of month) (at most)
- `streaming` (boolean): Supports streaming (equals)
- `tld` (string): se or nu (equals)
- `tld_in` (array): se or nu (any of)

### `web_ai_stance` (~311 tokens)

AI and crawler stance of Swedish websites per month

AI and crawler stance of Swedish websites per month. Returns a list of records; pass next_cursor to get the next page. Fields: month (date): First of the sweep month; tld (varchar): se or nu; domains (bigint): Domains swept; reachable (bigint): Answered over HTTPS; has_robots (bigint): Had a real robots.txt; with_sitemap (bigint): robots.txt declares a sitemap; disallow_all (bigint): Disallow: / for all crawlers; ai_train_no (bigint): Opt out of AI training; ai_train_yes (bigint): Opt in to AI training; content_signal (bigint): Has a Content-Signal line; mentions_mcp (bigint): robots.txt mentions MCP; mentions_llms (bigint): robots.txt references llms.txt. Attribution required when the data is shown: Source: Aleva (aleva.se), CC BY 4.0

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `limit` (integer): How many rows to return
- `month` (string): Sweep month (first of month), YYYY-MM-DD (equals)
- `month_gte` (string): Sweep month (first of month), YYYY-MM-DD (at least)
- `month_lte` (string): Sweep month (first of month), YYYY-MM-DD (at most)
- `tld` (string): se or nu (equals)

### `web_apis` (~257 tokens)

Swedish public APIs (OpenAPI)

Swedish public APIs (OpenAPI). Returns a list of records; pass next_cursor to get the next page. Fields: month (date): Sweep month; domain (varchar); tld (varchar): se or nu; title (varchar): API title; oas_version (varchar): OpenAPI/Swagger version; operations (integer): Number of operations; paths (integer): Number of paths; url (varchar): Spec URL. Attribution required when the data is shown: Source: Aleva (aleva.se), CC BY 4.0

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `domain` (string): Domain (equals)
- `limit` (integer): How many rows to return
- `month` (string): Sweep month (first of month) (equals)
- `month_gte` (string): Sweep month (first of month) (at least)
- `month_lte` (string): Sweep month (first of month) (at most)
- `oas_version` (string): OpenAPI/Swagger version (equals)
- `tld` (string): se or nu (equals)
- `tld_in` (array): se or nu (any of)

### `web_commerce_agents` (~261 tokens)

Swedish agentic commerce (UCP)

Swedish agentic commerce (UCP). Returns a list of records; pass next_cursor to get the next page. Fields: month (date); domain (varchar); tld (varchar): se or nu; platform (varchar): Platform (e.g. shopify); protocol_version (varchar): UCP version; capability_count (integer): Number of capabilities; mcp_endpoint (varchar): MCP endpoint, if any; url (varchar): Manifest URL. Attribution required when the data is shown: Source: Aleva (aleva.se), CC BY 4.0

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `domain` (string): Domain (equals)
- `limit` (integer): How many rows to return
- `month` (string): Sweep month (first of month) (equals)
- `month_gte` (string): Sweep month (first of month) (at least)
- `month_lte` (string): Sweep month (first of month) (at most)
- `platform` (string): e.g. shopify (equals)
- `tld` (string): se or nu (equals)
- `tld_in` (array): se or nu (any of)

### `web_llms` (~227 tokens)

llms.txt in Sweden

llms.txt in Sweden. Returns a list of records; pass next_cursor to get the next page. Fields: month (date); domain (varchar); tld (varchar): se or nu; title (varchar): First heading; sections (integer): Number of sections; links (integer): Number of links; url (varchar): llms.txt URL. Attribution required when the data is shown: Source: Aleva (aleva.se), CC BY 4.0

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `domain` (string): Domain (equals)
- `limit` (integer): How many rows to return
- `month` (string): Sweep month (first of month) (equals)
- `month_gte` (string): Sweep month (first of month) (at least)
- `month_lte` (string): Sweep month (first of month) (at most)
- `tld` (string): se or nu (equals)
- `tld_in` (array): se or nu (any of)

### `web_mcp_registry` (~247 tokens)

Swedish MCP servers (Aleva registry)

Swedish MCP servers (Aleva registry). Returns a list of records; pass next_cursor to get the next page. Fields: domain (varchar); tld (varchar): se or nu; name (varchar): Server name; description (varchar): Short description; url (varchar): MCP endpoint URL; transport (varchar): http | sse | stdio; tool_count (integer): Advertised tools (0 if not introspected); source (varchar): crawl | submitted; month (date): Snapshot month. Attribution required when the data is shown: Source: Aleva (aleva.se)

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `domain` (string): Domain (equals)
- `limit` (integer): How many rows to return
- `source` (string): crawl, submitted or ucp (equals)
- `source_in` (array): crawl, submitted or ucp (any of)
- `source_ne` (string): crawl, submitted or ucp (not equal to)
- `tld` (string): se or nu (equals)
- `tld_in` (array): se or nu (any of)

### `web_mcp_servers` (~235 tokens)

Swedish MCP, agent and API endpoints

Swedish MCP, agent and API endpoints. Returns a list of records; pass next_cursor to get the next page. Fields: domain (varchar); tld (varchar); kind (varchar): mcp | ucp | a2a | openapi | api-catalog | llms; url (varchar): The advertised endpoint; platform (varchar): Platform the manifest looks generated by, when known; detail (varchar): Protocol version / capabilities; month (date). Attribution required when the data is shown: Source: Aleva (aleva.se)

Input parameters:

- `cursor` (string): next_cursor from the previous result, for the next page
- `kind` (string): mcp | ucp | a2a | openapi | api-catalog | llms (equals)
- `kind_in` (array): mcp | ucp | a2a | openapi | api-catalog | llms (any of)
- `limit` (integer): How many rows to return
- `platform` (string): e.g. shopify (equals)
- `tld` (string): se or nu (equals)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/se-aleva-data/api#diagnostics

## Score history

- 2026-11-05: 81
- 2026-11-04: 80
- 2026-11-03: 80
- 2026-11-02: 79
- 2026-11-01: 79
- 2026-10-31: 78
- 2026-10-30: 78
- 2026-10-29: 77
- 2026-10-28: 77
- 2026-10-27: 76
- 2026-10-26: 76
- 2026-10-25: 75
- 2026-10-24: 75
- 2026-10-23: 25
- 2026-10-22: 74
- 2026-10-21: 74
- 2026-10-20: 73
- 2026-10-19: 73
- 2026-10-18: 72
- 2026-10-17: 72
- 2026-10-16: 71

## Common questions

### What is the Aleva open data MCP server?

Aleva open data is an MCP server listed in the public MCP registry as se.aleva/data. Swedish public data as read-only tools: registries, statistics, domains, transport, energy. This page covers its hosted endpoint (https://api.aleva.se/mcp).

### Is the Aleva open data MCP server safe to use?

Aleva open data scores 81 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Aleva open data MCP server expose?

Aleva open data exposes 47 tools: air_passengers_monthly, airport_passengers, consumer_prices, court_rulings, court_rulings_by_court, and 42 more. Their descriptions and schemas cost roughly 8,985 tokens of context every time the server is loaded.

### Does the Aleva open data MCP server require authentication?

No. We connected to Aleva open data without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the Aleva open data MCP server still maintained?

Aleva open data is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://api.aleva.se/mcp
- Website: https://aleva.se/en/docs/mcp
- Changelog RSS feed: https://verifymcp.io/servers/se-aleva-data/api.xml
- Changelog JSON feed: https://verifymcp.io/servers/se-aleva-data/api.json
- HTML version of this page: https://verifymcp.io/servers/se-aleva-data/api
