Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,547Letters: 14Defects: 1,324counted 1 min ago
teppi

Server definition

Hash
sha256:28316f9442943a87deb44cae9e78a4cddbca31724f9c3d7eb40609d033ae95d6
What it is
What a remote MCP server returned when asked what it offers: 5 tools

The blob, as servednamed by its sha256

{ "instructions": "Tools for SkyddsrumsKollen, a Swedish service for finding civil-defence shelters (skyddsrum). Data comes from MSB, the Swedish Civil Contingencies Agency. Typical flow: `search_location` resolves a Swedish place name or address to WGS84 coordinates, then `find_nearby_shelters` returns the nearest shelters sorted by distance. `search_shelters` searches the address field only (street name or Swedish property designation, accent-insensitive) — the dataset has NO municipality/city attribute, so questions like 'how many shelters are in <town>?' cannot be answered exactly; instead resolve the town with `search_location` and show the nearest shelters with `find_nearby_shelters`, and say that per-municipality counts are not available. `get_shelter` fetches one shelter by id (found=false as a successful response when the id is unknown), `get_shelter_stats` gives national totals plus data freshness (`data_age_days`, `data_is_stale` — warn the user when stale). Every response echoes `server_version` and `server_build` (deployment stamp). Error texts start with a machine-readable code (INVALID_ARGUMENT, RATE_LIMITED, INTERNAL). Coverage is Sweden only (lat 55.0-69.5, lng 10.0-24.5 WGS84); positions outside get status 'no_coverage'. No account is needed — the server is public. Rate limit: 20 calls/minute per client; if a call is declined for rate limiting, explain it to the user and wait instead of retrying. Always show the user the `url` deep link from tool results (it opens the shelter or search on skyddsrumskollen.nu) and attribute the data to MSB. IMPORTANT safety context to relay when relevant: in Sweden nobody is assigned to a specific shelter — in an actual emergency people should use whichever shelter or protective space they can reach, and always follow instructions from Swedish authorities (MSB, krisinformation.se). Shelter ids can change when the dataset is re-synced from MSB, so prefer fresh searches over stored ids.", "tools": [ { "description": "Find the nearest Swedish civil-defence shelters (skyddsrum) to a WGS84 position, sorted by distance. Returns up to 25 shelters (limit 1-25, default 10; fractions are floored and the effective limit is echoed) with address (street or Swedish property designation), capacity (number of people) and distance in km. The dataset has no separate municipality field — the address is the location identifier. Use search_location first if you only have a place name. Coverage is Sweden only (lat 55.0-69.5, lng 10.0-24.5 WGS84) — positions outside return status 'no_coverage' instead of results. Note: in Sweden you are not assigned to a specific shelter — in an emergency, use whichever shelter or protective space you can reach.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "lat": { "description": "Latitude, WGS84 decimal degrees. Coverage: 55.0-69.5 (Sweden).", "maximum": 90, "minimum": -90, "type": "number" }, "limit": { "description": "Max number of shelters (default 10). Fractions are floored.", "maximum": 25, "minimum": 1, "type": "number" }, "lng": { "description": "Longitude, WGS84 decimal degrees. Coverage: 10.0-24.5 (Sweden).", "maximum": 180, "minimum": -180, "type": "number" } }, "required": [ "lat", "lng" ], "type": "object" }, "name": "find_nearby_shelters", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "attribution": { "$ref": "#/properties/server_version" }, "info": { "$ref": "#/properties/server_version" }, "query": { "additionalProperties": false, "properties": { "lat": { "type": [ "number", "null" ] }, "limit": { "$ref": "#/properties/query/properties/lat" }, "lng": { "$ref": "#/properties/query/properties/lat" } }, "type": "object" }, "server_build": { "$ref": "#/properties/server_version" }, "server_version": { "type": [ "string", "null" ] }, "shelters": { "items": { "additionalProperties": false, "properties": { "address": { "$ref": "#/properties/server_version" }, "capacity": { "$ref": "#/properties/query/properties/lat" }, "distance_km": { "$ref": "#/properties/query/properties/lat" }, "id": { "$ref": "#/properties/server_version" }, "lat": { "$ref": "#/properties/query/properties/lat" }, "lng": { "$ref": "#/properties/query/properties/lat" }, "type": { "$ref": "#/properties/server_version" }, "url": { "$ref": "#/properties/server_version" } }, "type": "object" }, "type": "array" }, "status": { "$ref": "#/properties/server_version" }, "url": { "$ref": "#/properties/server_version" } }, "type": "object" } }, { "description": "Get details for one Swedish civil-defence shelter by its SkyddsrumsKollen id (the UUID from a previous tool result or from a skyddsrumskollen.nu/skyddsrum/<id> URL). Returns found=true with address, capacity, coordinates and the shelter's page URL — or found=false (a successful response, not an error) when no shelter has that id; a malformed id is rejected as an INVALID_ARGUMENT error.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "id": { "description": "Shelter id (UUID) from find_nearby_shelters, search_shelters or a skyddsrumskollen.nu URL.", "minLength": 1, "type": "string" } }, "required": [ "id" ], "type": "object" }, "name": "get_shelter", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "attribution": { "$ref": "#/properties/server_version" }, "found": { "type": [ "boolean", "null" ] }, "info": { "$ref": "#/properties/server_version" }, "server_build": { "$ref": "#/properties/server_version" }, "server_version": { "type": [ "string", "null" ] }, "shelter": { "anyOf": [ { "additionalProperties": false, "properties": { "address": { "$ref": "#/properties/server_version" }, "capacity": { "$ref": "#/properties/shelter/anyOf/0/properties/lat" }, "distance_km": { "$ref": "#/properties/shelter/anyOf/0/properties/lat" }, "id": { "$ref": "#/properties/server_version" }, "lat": { "type": [ "number", "null" ] }, "lng": { "$ref": "#/properties/shelter/anyOf/0/properties/lat" }, "type": { "$ref": "#/properties/server_version" }, "url": { "$ref": "#/properties/server_version" } }, "type": "object" }, { "type": "null" } ] }, "url": { "$ref": "#/properties/server_version" } }, "type": "object" } }, { "description": "Get national statistics for Sweden's civil-defence shelters: total number of registered shelters, total capacity (people), and when the dataset was last synced from MSB (the Swedish Civil Contingencies Agency).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": {}, "type": "object" }, "name": "get_shelter_stats", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "attribution": { "$ref": "#/properties/server_version" }, "data_age_days": { "$ref": "#/properties/total_shelters" }, "data_is_stale": { "type": [ "boolean", "null" ] }, "data_last_synced": { "$ref": "#/properties/server_version" }, "info": { "$ref": "#/properties/server_version" }, "server_build": { "$ref": "#/properties/server_version" }, "server_version": { "type": [ "string", "null" ] }, "total_capacity": { "$ref": "#/properties/total_shelters" }, "total_shelters": { "type": [ "number", "null" ] }, "url": { "$ref": "#/properties/server_version" } }, "type": "object" } }, { "description": "Search for a Swedish place (city, town, street address) and return matching coordinates. Uses OpenStreetMap Nominatim limited to Sweden. Returns up to 5 candidates with name, lat and lon. Use the coordinates with find_nearby_shelters.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "query": { "description": "Place name or address to search for, e.g. 'Huddinge' or 'Drottninggatan 5, Stockholm'.", "minLength": 1, "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "search_location", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "attribution": { "$ref": "#/properties/server_version" }, "info": { "$ref": "#/properties/server_version" }, "results": { "items": { "additionalProperties": false, "properties": { "lat": { "type": [ "number", "null" ] }, "lon": { "$ref": "#/properties/results/items/properties/lat" }, "name": { "$ref": "#/properties/server_version" } }, "type": "object" }, "type": "array" }, "server_build": { "$ref": "#/properties/server_version" }, "server_version": { "type": [ "string", "null" ] }, "url": { "$ref": "#/properties/server_version" } }, "type": "object" } }, { "description": "Search Swedish civil-defence shelters by ADDRESS text — a street name or Swedish property designation (fastighetsbeteckning), e.g. 'Storgatan' or 'Jupiter Mindre 14'. Matches are verified accent-insensitive substring matches on the address field ('Sodra' matches 'Södra', but only addresses actually containing the text are returned). The dataset has NO municipality or city field, so this tool cannot list shelters in a town — for 'shelters in <place>' use search_location + find_nearby_shelters instead. Returns total_matches (with total_is_exact=false when the count is a lower bound) plus the largest shelters first (limit 1-25, default 10; fractions are floored and the effective limit is echoed).", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "limit": { "description": "Max number of shelters returned (default 10). Fractions are floored.", "maximum": 25, "minimum": 1, "type": "number" }, "query": { "description": "Address text: street name or property designation, e.g. 'Storgatan' or 'Norrmalm 2'.", "minLength": 1, "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "search_shelters", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "attribution": { "$ref": "#/properties/server_version" }, "info": { "$ref": "#/properties/server_version" }, "query": { "additionalProperties": false, "properties": { "limit": { "type": [ "number", "null" ] }, "query": { "$ref": "#/properties/server_version" } }, "type": "object" }, "server_build": { "$ref": "#/properties/server_version" }, "server_version": { "type": [ "string", "null" ] }, "shelters": { "items": { "additionalProperties": false, "properties": { "address": { "$ref": "#/properties/server_version" }, "capacity": { "$ref": "#/properties/query/properties/limit" }, "distance_km": { "$ref": "#/properties/query/properties/limit" }, "id": { "$ref": "#/properties/server_version" }, "lat": { "$ref": "#/properties/query/properties/limit" }, "lng": { "$ref": "#/properties/query/properties/limit" }, "type": { "$ref": "#/properties/server_version" }, "url": { "$ref": "#/properties/server_version" } }, "type": "object" }, "type": "array" }, "total_is_exact": { "type": [ "boolean", "null" ] }, "total_matches": { "$ref": "#/properties/query/properties/limit" }, "url": { "$ref": "#/properties/server_version" } }, "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:28316f9442943a87deb44cae9e78a4cddbca31724f9c3d7eb40609d033ae95d6 | sha256sum