{
  "version": "2.0.0",
  "documentationUrl": "https://www.wahl.de/ai",
  "transport": "HTTP JSON and browser WebMCP",
  "endpoint": "/api/ai",
  "tools": [
    {
      "name": "wahl_list_regions",
      "description": "Verfügbare Regionen und ihre Slugs.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "required": [],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "example": {}
    },
    {
      "name": "wahl_get_poll_trend",
      "description": "So würde die Region aktuell wählen: ausschließlich aktuelle gewichtete Parteianteile, letzter Umfragestand und Quellen. Keine Einzelumfragen, Zeitreihen oder historischen Vergleichswerte.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "region": {
            "type": "string",
            "description": "Name der Region. Europa kann je nach Datenbestand keine Umfragen besitzen.",
            "enum": [
              "Deutschland",
              "Europa",
              "Baden-Württemberg",
              "Bayern",
              "Berlin",
              "Brandenburg",
              "Bremen",
              "Hamburg",
              "Hessen",
              "Mecklenburg-Vorpommern",
              "Niedersachsen",
              "Nordrhein-Westfalen",
              "Rheinland-Pfalz",
              "Saarland",
              "Sachsen",
              "Sachsen-Anhalt",
              "Schleswig-Holstein",
              "Thüringen"
            ]
          }
        },
        "required": ["region"],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "example": {
        "region": "Deutschland"
      }
    },
    {
      "name": "wahl_get_calendar",
      "description": "Vollständiger Wahlkalender mit allen vergangenen und kommenden Terminen, Datum, Fristen und Quellenhinweisen; optional für ein Land. Keine Pagination.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "landSlug": {
            "type": "string",
            "description": "Land-Slug; für Landesabfragen erforderlich.",
            "enum": [
              "baden-wuerttemberg",
              "bayern",
              "berlin",
              "brandenburg",
              "bremen",
              "hamburg",
              "hessen",
              "mecklenburg-vorpommern",
              "niedersachsen",
              "nordrhein-westfalen",
              "rheinland-pfalz",
              "saarland",
              "sachsen",
              "sachsen-anhalt",
              "schleswig-holstein",
              "thueringen"
            ]
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "example": {}
    },
    {
      "name": "wahl_get_parliament",
      "description": "Abgeordnete eines Parlaments mit Personen-ID und Profilangaben, paginiert. Keine Wahlkreis-Wahldaten oder Stimmenanteile.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "level": {
            "type": "string",
            "description": "Parlamentsebene.",
            "enum": ["mdb", "mdl"]
          },
          "landSlug": {
            "type": "string",
            "description": "Land-Slug; für Landesabfragen erforderlich.",
            "enum": [
              "baden-wuerttemberg",
              "bayern",
              "berlin",
              "brandenburg",
              "bremen",
              "hamburg",
              "hessen",
              "mecklenburg-vorpommern",
              "niedersachsen",
              "nordrhein-westfalen",
              "rheinland-pfalz",
              "saarland",
              "sachsen",
              "sachsen-anhalt",
              "schleswig-holstein",
              "thueringen"
            ]
          },
          "offset": {
            "type": "integer",
            "description": "Startposition, Standard 0.",
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "description": "Seitengröße, Standard 50, maximal 100.",
            "minimum": 1,
            "maximum": 100
          }
        },
        "required": ["level"],
        "additionalProperties": false,
        "allOf": [
          {
            "if": {
              "properties": {
                "level": {
                  "const": "mdl"
                }
              },
              "required": ["level"]
            },
            "then": {
              "required": ["landSlug"]
            }
          }
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "example": {
        "level": "mdb"
      }
    },
    {
      "name": "wahl_get_member",
      "description": "Profil eines Abgeordneten anhand der Personen-ID aus wahl_get_parliament. Keine Wahlkreis-Wahldaten oder Stimmenanteile.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stabile Personen-ID.",
            "pattern": "^p_[a-z2-7]+$",
            "maxLength": 100
          },
          "level": {
            "type": "string",
            "description": "Parlamentsebene.",
            "enum": ["mdb", "mdl"]
          },
          "landSlug": {
            "type": "string",
            "description": "Land-Slug; für Landesabfragen erforderlich.",
            "enum": [
              "baden-wuerttemberg",
              "bayern",
              "berlin",
              "brandenburg",
              "bremen",
              "hamburg",
              "hessen",
              "mecklenburg-vorpommern",
              "niedersachsen",
              "nordrhein-westfalen",
              "rheinland-pfalz",
              "saarland",
              "sachsen",
              "sachsen-anhalt",
              "schleswig-holstein",
              "thueringen"
            ]
          }
        },
        "required": ["id", "level"],
        "additionalProperties": false,
        "allOf": [
          {
            "if": {
              "properties": {
                "level": {
                  "const": "mdl"
                }
              },
              "required": ["level"]
            },
            "then": {
              "required": ["landSlug"]
            }
          }
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "example": {
        "id": "p_abc",
        "level": "mdb"
      }
    },
    {
      "name": "wahl_list_elections",
      "description": "Index der verfügbaren Wahlergebnisse mit Wahl-IDs, Daten und Seitenpfaden.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "offset": {
            "type": "integer",
            "description": "Startposition, Standard 0.",
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "description": "Seitengröße, Standard 50, maximal 100.",
            "minimum": 1,
            "maximum": 100
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "example": {}
    },
    {
      "name": "wahl_get_election_result",
      "description": "Gesamtergebnis einer Wahl mit Quelle, Status, Beteiligung und Mandaten. Ausschließlich Bundes-/Landesaggregate; keine Wahlkreise, Bezirke, Geometrien oder Direktgewinnerlisten.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "electionId": {
            "type": "string",
            "description": "Wahl-ID aus wahl_list_elections, z. B. btw-25.",
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "maxLength": 80
          }
        },
        "required": ["electionId"],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "example": {
        "electionId": "btw-25"
      }
    },
    {
      "name": "wahl_get_election_history",
      "description": "Landesweite historische Ergebniszeitreihe einschließlich Quellen.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "landSlug": {
            "type": "string",
            "description": "deutschland oder Land-Slug.",
            "enum": [
              "deutschland",
              "baden-wuerttemberg",
              "bayern",
              "berlin",
              "brandenburg",
              "bremen",
              "hamburg",
              "hessen",
              "mecklenburg-vorpommern",
              "niedersachsen",
              "nordrhein-westfalen",
              "rheinland-pfalz",
              "saarland",
              "sachsen",
              "sachsen-anhalt",
              "schleswig-holstein",
              "thueringen"
            ]
          }
        },
        "required": ["landSlug"],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "example": {
        "landSlug": "deutschland"
      }
    },
    {
      "name": "wahl_list_mandate_periods",
      "description": "Verfügbare Parlamente und Wahlperioden für Mandatswechsel, einschließlich Anzahl und letztem Wechsel.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "required": [],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "example": {}
    },
    {
      "name": "wahl_get_mandate_changes",
      "description": "Mandatswechsel einer Wahlperiode: ausgeschiedene Personen, Nachfolger, Gründe, Datum und Quellen. Keine Wahlkreis-Wahldaten.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "parlament": {
            "type": "string",
            "description": "Parlament aus wahl_list_mandate_periods.",
            "enum": [
              "bundestag",
              "baden-wuerttemberg",
              "bayern",
              "berlin",
              "brandenburg",
              "bremen",
              "hamburg",
              "hessen",
              "mecklenburg-vorpommern",
              "niedersachsen",
              "nordrhein-westfalen",
              "rheinland-pfalz",
              "saarland",
              "sachsen",
              "sachsen-anhalt",
              "schleswig-holstein",
              "thueringen"
            ]
          },
          "periode": {
            "type": "integer",
            "description": "Wahlperiode aus wahl_list_mandate_periods.",
            "minimum": 1,
            "maximum": 100
          }
        },
        "required": ["parlament", "periode"],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "example": {
        "parlament": "bundestag",
        "periode": 21
      }
    },
    {
      "name": "wahl_list_mandate_changes",
      "description": "Mandatswechsel aller verfügbaren Parlamente, neueste zuerst, paginiert. Keine Wahlkreis-Wahldaten.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "offset": {
            "type": "integer",
            "description": "Startposition, Standard 0.",
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "description": "Seitengröße, Standard 50, maximal 100.",
            "minimum": 1,
            "maximum": 100
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "untrustedContentHint": true
      },
      "example": {
        "limit": 50
      }
    }
  ]
}
