Kranli

New Swiss building permit applications by municipality and trade (last 90 days, official sources).

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
94%
Naming quality
84%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,517Tokens (tool definitions)
~1.9 KBTypical response size
Moderate attention impact (1.19% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "permis-construire": {
      "url": "https://kranli.ch/mcp"
    }
  }
}

Remote endpoints

https://kranli.ch/mcpstreamable-http

What it can do

Tool inventory

Tools (5)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢chercher_demandes(commune, canton, metier, jours, rayon_km, ...)

Search new building permit applications published in Switzerland (Kranli, official publications of the last 90 days) by municipality or canton, trade and period, newest first. Each application comes with its date, municipality, official description, status, trades, link to the official publication, source and mandatory notice ("formule"). / Cherche les nouvelles demandes de permis de construire publiées en Suisse (publications officielles des 90 derniers jours), par commune ou canton, métier et période, les plus récentes d’abord, avec le lien officiel, la source et la formule de chaque demande.

Input Schema

{
  "type": "object",
  "properties": {
    "commune": {
      "type": "string",
      "maxLength": 80,
      "description": "Municipality: name, postcode or identifier, e.g. \"Sion\", \"1950\", \"buchs-ag\". / Commune : nom, numéro postal ou identifiant."
    },
    "canton": {
      "type": "string",
      "pattern": "^[A-Za-z]{2}$",
      "description": "Two-letter canton code, e.g. \"VS\". / Sigle du canton, par exemple « VS »."
    },
    "metier": {
      "type": "string",
      "maxLength": 80,
      "description": "Trade: identifier from the metiers tool or a few words, e.g. \"heat pump\", \"pompe à chaleur\", \"Wärmepumpe\", \"solaire\". / Métier : identifiant ou quelques mots."
    },
    "jours": {
      "type": "integer",
      "minimum": 1,
      "maximum": 90,
      "default": 30,
      "description": "How many days back (at most 90). / Nombre de jours en arrière (90 au plus)."
    },
    "rayon_km": {
      "type": "integer",
      "minimum": 0,
      "maximum": 50,
      "default": 0,
      "description": "With a municipality: also the municipalities within this many km. / Avec une commune : aussi les communes à moins de N km."
    },
    "limite": {
      "type": "integer",
      "minimum": 1,
      "maximum": 25,
      "default": 10,
      "description": "Number of applications returned. / Nombre de demandes rendues."
    },
    "langue": {
      "type": "string",
      "enum": [
        "fr",
        "de",
        "it",
        "en"
      ],
      "default": "fr",
      "description": "Language of labels and of the answer (fr, de, it, en). / Langue des libellés et de la réponse."
    }
  },
  "additionalProperties": false
}
🟢trouver_commune(nom, canton, langue)

Find a Swiss municipality by name or postcode; returns its identifier, canton and number of applications in the last 7, 30 and 90 days. / Trouve une commune suisse par son nom ou son numéro postal : identifiant, canton et nombre de demandes récentes.

Input Schema

{
  "type": "object",
  "properties": {
    "nom": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80,
      "description": "Name or postcode, e.g. \"Sion\", \"Buchs AG\", \"8001\". / Nom ou numéro postal."
    },
    "canton": {
      "type": "string",
      "pattern": "^[A-Za-z]{2}$",
      "description": "Two-letter canton code, e.g. \"VS\". / Sigle du canton, par exemple « VS »."
    },
    "langue": {
      "type": "string",
      "enum": [
        "fr",
        "de",
        "it",
        "en"
      ],
      "default": "fr",
      "description": "Language of labels and of the answer (fr, de, it, en). / Langue des libellés et de la réponse."
    }
  },
  "required": [
    "nom"
  ],
  "additionalProperties": false
}
🟢communes_proches(commune, rayon_km, canton, langue)

List the municipalities within a radius of a municipality (distance between official centres, rounded to the km), with their recent applications. / Les communes autour d’une commune (distance entre centres officiels, arrondie au kilomètre), avec leurs demandes récentes.

Input Schema

{
  "type": "object",
  "properties": {
    "commune": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80,
      "description": "Municipality: name, postcode or identifier. / Commune : nom, numéro postal ou identifiant."
    },
    "rayon_km": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 10,
      "description": "Radius in km. / Rayon en kilomètres."
    },
    "canton": {
      "type": "string",
      "pattern": "^[A-Za-z]{2}$",
      "description": "Two-letter canton code, e.g. \"VS\". / Sigle du canton, par exemple « VS »."
    },
    "langue": {
      "type": "string",
      "enum": [
        "fr",
        "de",
        "it",
        "en"
      ],
      "default": "fr",
      "description": "Language of labels and of the answer (fr, de, it, en). / Langue des libellés et de la réponse."
    }
  },
  "required": [
    "commune"
  ],
  "additionalProperties": false
}
🟢metiers(langue)

List the ten trade families used by Kranli (heating and heat pumps, solar, windows, roofing, facades, interior, outdoor and pools, new build, civil engineering, electrical) with their identifiers and recent counts. / Les dix familles de métiers de Kranli, avec leurs identifiants et leurs demandes récentes.

Input Schema

{
  "type": "object",
  "properties": {
    "langue": {
      "type": "string",
      "enum": [
        "fr",
        "de",
        "it",
        "en"
      ],
      "default": "fr",
      "description": "Language of labels and of the answer (fr, de, it, en). / Langue des libellés et de la réponse."
    }
  },
  "additionalProperties": false
}
🟢resume_semaine(canton, langue)

Number of building permit applications of the last 7 days, by canton and by trade. / Le nombre de demandes de permis de construire des 7 derniers jours, par canton et par métier.

Input Schema

{
  "type": "object",
  "properties": {
    "canton": {
      "type": "string",
      "pattern": "^[A-Za-z]{2}$",
      "description": "Two-letter canton code, e.g. \"VS\". / Sigle du canton, par exemple « VS »."
    },
    "langue": {
      "type": "string",
      "enum": [
        "fr",
        "de",
        "it",
        "en"
      ],
      "default": "fr",
      "description": "Language of labels and of the answer (fr, de, it, en). / Langue des libellés et de la réponse."
    }
  },
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded5 tools