SOS.city MCP
An MCP server providing AI agents access to SOS.city's public records library, including building permits, code enforcement, weather alerts, and wildfires. It offers tools to search the library, list places and departments, and retrieve specific records with source citations.
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://api.sos.city/mcpWhat its tools do
10 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Can change data (3)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Search public records by question or keywords scoped to a place
- Retrieve building permits, inspections, and code enforcement cases
- Get live weather alerts and earthquake data for specific locations
- List available places, departments, and data gaps in the library
Source and maintenance
Protocol and capabilities
- Server
- sos-city 1.1.0
- MCP protocol negotiated in check
- 2025-06-18
- Tools
- 10 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
10 advertised
search_library — Search the public record
Find public-records sources (datasets, portals, registers, reports) by question or keywords. Use `place` to include everything covering a place, from the city up to federal and global sources. Returns the publisher, how to get the data (API endpoint or page), update rate, last update, licence and whether we verified it. Not for finding, profiling or screening people.
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1
},
"place": {
"type": "string",
"description": "Place id, e.g. 'us-ca-los-angeles', 'us-ca', 'us', 'germany'. Use list_places to find ids."
},
"query": {
"type": "string",
"description": "What you're looking for, e.g. 'open code enforcement cases' or 'boil water notices'."
},
"department": {
"type": "string",
"description": "Shelf id: water, power, safety, housing, laws, funding, services, transport, environment, health, people, consumer, education, jobs, portals."
}
}
}{
"readOnlyHint": true,
"openWorldHint": false
}get_source — Get one source
Full details of one source by id: publisher, original link, API endpoint, formats, update rate, last update, licence, location detail, check status and notes.
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer"
}
}
}{
"readOnlyHint": true
}list_places — List places
The atlas: world, countries, states, counties and cities, with their ids. Filter by parent id (e.g. 'us' for US states) or kind.
{
"type": "object",
"properties": {
"kind": {
"enum": [
"world",
"country",
"state",
"county",
"city"
],
"type": "string"
},
"name": {
"type": "string",
"description": "Part of a place name."
},
"parent": {
"type": "string"
}
}
}{
"readOnlyHint": true
}list_departments — List shelves
The 15 departments (shelves) every source sits on, with what each covers.
{
"type": "object",
"properties": {}
}{
"readOnlyHint": true
}list_gaps — What's missing
Records people need that the library doesn't hold yet, or that no agency publishes. Check this before telling a user a record doesn't exist.
{
"type": "object",
"properties": {
"place": {
"type": "string"
},
"status": {
"enum": [
"researching",
"sourced",
"no_public_source"
],
"type": "string"
}
}
}{
"readOnlyHint": true
}search_records — Search the records themselves
The records SOS.city reads from agencies' open data, one row each: building permits, code-enforcement cases, inspections, certificates of occupancy, new business registrations, grants, weather alerts, earthquakes, US wildfires (NIFC) and SCE power shutoffs. Filter by place, kind, ZIP or street address. Each row links to the agency's original. History depends on the plan (Free: 30 days, 100 rows). full_history=true (1 credit) and limit over 100 (1 credit per extra 100 rows, up to 1,000) are paid from the API key's credits; see get_store.
{
"type": "object",
"properties": {
"zip": {
"type": "string",
"description": "Five-digit ZIP."
},
"kind": {
"enum": [
"permit",
"code_case",
"inspection",
"cofo",
"business",
"grant",
"weather_alert",
"earthquake",
"wildfire",
"power_shutoff"
],
"type": "string"
},
"limit": {
"type": "integer",
"default": 25,
"maximum": 1000,
"minimum": 1,
"description": "Over 100 is paid (1 credit per extra 100 rows)."
},
"place": {
"type": "string",
"description": "Place id, e.g. 'us-ca-los-angeles'."
},
"since": {
"type": "string",
"description": "YYYY-MM-DD."
},
"address": {
"type": "string",
"description": "Street address, e.g. '200 N Spring St'. Matches by house number and street name."
},
"full_history": {
"type": "boolean",
"description": "Past the plan's history window (1 credit)."
}
}
}{
"readOnlyHint": true,
"openWorldHint": false
}request_record — Request a record
Ask SOS.city to find a public record that isn't in the library. It joins the gap board; give an email to hear back. Never for locating or profiling a person.
{
"type": "object",
"required": [
"question"
],
"properties": {
"email": {
"type": "string"
},
"place": {
"type": "string"
},
"question": {
"type": "string"
}
}
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}get_store — See prices and how to pay
The SOS.city data store: what's free, what costs credits (1 credit = 1 cent), credit packs, city data packs, building records and deep searches, and every way to pay (credits with an API key, x402 USDC, or a Stripe link for a person). Shows the caller's credit balance when an API key is sent.
{
"type": "object",
"properties": {}
}{
"readOnlyHint": true,
"openWorldHint": false
}buy — Buy credits or a city data pack
Starts a one-time purchase and returns a Stripe Checkout link for the person who pays, plus a status_url to poll. product: credits_1k ($10), credits_10k ($79) or city_pack ($29, needs place). The person must agree to the data-use terms (no screening or profiling people): pass agree_data_use=true only after they have.
{
"type": "object",
"required": [
"product",
"email",
"agree_data_use"
],
"properties": {
"email": {
"type": "string",
"description": "Email of the person paying. Receipts and the account go there."
},
"place": {
"type": "string",
"description": "For city_pack: a place id, e.g. us-ca-los-angeles."
},
"product": {
"enum": [
"credits_1k",
"credits_10k",
"city_pack"
],
"type": "string"
},
"agree_data_use": {
"type": "boolean",
"description": "True once the person accepts: no tenant, employment, credit or insurance screening, and no locating or profiling anyone."
}
}
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}get_city_pack — Get a city data pack
Every source that covers one place (with publisher, original link, licence and reuse terms) plus a year of records whose sources allow reuse. Costs 2900 credits from the API key's balance. Without credits, use buy (product city_pack) or the REST URL with x402.
{
"type": "object",
"required": [
"place"
],
"properties": {
"place": {
"type": "string",
"description": "Place id, e.g. us-ca-los-angeles."
}
}
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
30-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
- 286 ms
- 95th percentile latency
- 286 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 286 ms · metadata changed · 10 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http sos-city-mcp https://api.sos.city/mcpCodex
codex mcp add sos-city-mcp --url https://api.sos.city/mcpCursor
{
"mcpServers": {
"sos-city-mcp": {
"url": "https://api.sos.city/mcp"
}
}
}Cline
{
"mcpServers": {
"sos-city-mcp": {
"type": "streamableHttp",
"url": "https://api.sos.city/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"sos-city-mcp": {
"type": "http",
"url": "https://api.sos.city/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http sos-city-mcp https://api.sos.city/mcpClaude Desktop
https://api.sos.city/mcpWindsurf
{
"mcpServers": {
"sos-city-mcp": {
"serverUrl": "https://api.sos.city/mcp"
}
}
}Let your agent find its tools
Find servers like SOS.city MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.