Kranli MCP
A read-only MCP server that provides access to Swiss building permit applications from the last 90 days, allowing agents to search by municipality, canton, trade, and date without requiring authentication.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://kranli.ch/mcpWhat you can do with it
- Search for building permit applications by municipality, canton, trade, and date range
- Find municipalities by name or postal code
- Retrieve nearby municipalities and their recent permit requests
- Get a weekly summary of permit applications by canton and trade
Source and maintenance
Protocol and capabilities
- Server
- kranli 1.0.0
- MCP protocol
- 2025-06-18
- Tools
- 5 advertised
- Resources
- 3 advertised
- Resource templates
- 0 advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
},
"resources": {
"subscribe": false,
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
5 advertised
chercher_demandes — Search building permit applications / Chercher des demandes de permis
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.
{
"type": "object",
"properties": {
"jours": {
"type": "integer",
"default": 30,
"maximum": 90,
"minimum": 1,
"description": "How many days back (at most 90). / Nombre de jours en arrière (90 au plus)."
},
"canton": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "Two-letter canton code, e.g. \"VS\". / Sigle du canton, par exemple « VS »."
},
"langue": {
"enum": [
"fr",
"de",
"it",
"en"
],
"type": "string",
"default": "fr",
"description": "Language of labels and of the answer (fr, de, it, en). / Langue des libellés et de la réponse."
},
"limite": {
"type": "integer",
"default": 10,
"maximum": 25,
"minimum": 1,
"description": "Number of applications returned. / Nombre de demandes rendues."
},
"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."
},
"commune": {
"type": "string",
"maxLength": 80,
"description": "Municipality: name, postcode or identifier, e.g. \"Sion\", \"1950\", \"buchs-ag\". / Commune : nom, numéro postal ou identifiant."
},
"rayon_km": {
"type": "integer",
"default": 0,
"maximum": 50,
"minimum": 0,
"description": "With a municipality: also the municipalities within this many km. / Avec une commune : aussi les communes à moins de N km."
}
},
"additionalProperties": false
}{
"title": "Chercher des demandes de permis",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}trouver_commune — Find a municipality / Trouver une commune
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.
{
"type": "object",
"required": [
"nom"
],
"properties": {
"nom": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"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": {
"enum": [
"fr",
"de",
"it",
"en"
],
"type": "string",
"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
}{
"title": "Trouver une commune",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}communes_proches — Nearby municipalities / Communes proches
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.
{
"type": "object",
"required": [
"commune"
],
"properties": {
"canton": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "Two-letter canton code, e.g. \"VS\". / Sigle du canton, par exemple « VS »."
},
"langue": {
"enum": [
"fr",
"de",
"it",
"en"
],
"type": "string",
"default": "fr",
"description": "Language of labels and of the answer (fr, de, it, en). / Langue des libellés et de la réponse."
},
"commune": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Municipality: name, postcode or identifier. / Commune : nom, numéro postal ou identifiant."
},
"rayon_km": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1,
"description": "Radius in km. / Rayon en kilomètres."
}
},
"additionalProperties": false
}{
"title": "Communes proches",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}metiers — Trades / Métiers
List the eleven trade families used by Kranli (heating and heat pumps, solar, windows, roofing, facades, interior, outdoor and pools, new build, civil engineering, electrical, balconies and lifts) with their identifiers and recent counts. / Les onze familles de métiers de Kranli, avec leurs identifiants et leurs demandes récentes.
{
"type": "object",
"properties": {
"langue": {
"enum": [
"fr",
"de",
"it",
"en"
],
"type": "string",
"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
}{
"title": "Métiers",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}resume_semaine — Weekly summary / Résumé de la semaine
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.
{
"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": {
"enum": [
"fr",
"de",
"it",
"en"
],
"type": "string",
"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
}{
"title": "Résumé de la semaine",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
3 advertised
conditions — Conditions d’usage des données de Kranli
Sources, formule obligatoire, période de 90 jours, plafond et abonnement. / Sources, mandatory notice, 90-day period, rate limit, subscription.
kranli://conditionsmetiers — Les métiers de Kranli
The eleven trade families with identifiers and recent counts. / Les onze familles de métiers.
kranli://metierscantons — Les cantons couverts
Covered cantons, their official sources and recent counts. / Les cantons couverts et leurs sources.
kranli://cantons30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 995 ms
- 95th percentile latency
- 995 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 995 ms · metadata changed · 5 tool(s), 3 resource(s), 0 resource template(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http kranli-mcp https://kranli.ch/mcpCodex
codex mcp add kranli-mcp --url https://kranli.ch/mcpCursor
{
"mcpServers": {
"kranli-mcp": {
"url": "https://kranli.ch/mcp"
}
}
}Cline
{
"mcpServers": {
"kranli-mcp": {
"type": "streamableHttp",
"url": "https://kranli.ch/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"kranli-mcp": {
"type": "http",
"url": "https://kranli.ch/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http kranli-mcp https://kranli.ch/mcpClaude Desktop
{
"mcpServers": {
"kranli-mcp": {
"url": "https://kranli.ch/mcp"
}
}
}Windsurf
{
"mcpServers": {
"kranli-mcp": {
"serverUrl": "https://kranli.ch/mcp"
}
}
}Let your agent find its tools
Find servers like Kranli MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other data and analytics servers
Do you run Kranli MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.