the first public mcp server for a u.s. municipality. san diego land-use and municipal data any ai agent can query — and every answer ships with its receipts.
most government data is html you scrape and pray. sd-mcp returns
structured answers wrapped in a _meta envelope —
source url, the date the data was last verified,
the freshness sla, page-anchored citations, and license.
no u.s. municipality publishes machine-readable freshness or citations. we do. agents stop hallucinating municipal law because the grounding is in the payload.
// every tool response wraps payload in _meta { "answer": "fences in the front yard of an rs-1-7 lot are limited to 42 inches; 6 feet elsewhere.", "_meta": { "source": "sdmc §142.0340", "source_url": "https://docs.san…/142_0340", "data_as_of": "2026-05-14", "freshness_sla": "monthly", "citations": ["p.7 · §142.0340(b)"], "license": "/license", "jurisdiction": "san-diego-ca" } }
data_as_of + sla. machine-readable.sd-mcp is a hosted, streamable-http mcp server. point any compliant client at the endpoint and the 14 tools become available — no local install, no api keys for the free tier, no sdk.
claude desktop, raw curl, the full tool reference and a real request/response: estateatlas.ai/connect →
{ "mcpServers": { "estate-atlas-sandiego": { "type": "http", "url": "https://sandiego.estateatlas.ai/mcp" } } }
every tier covers all three corpora on one key: the city of san diego municipal code (2,536 sections, 244 forms, 82 bulletins), the county of san diego zoning ordinance (922 sections, which is the law in fallbrook, bonsall, ramona, alpine, julian and the rest of the unincorporated county), and hoa governing documents on a second endpoint. one key, both servers.
get_case_rulings, the precedent tooldata_as_of and freshness_sla in its _meta envelope.
permits and code-enforcement refresh weekly. parcels and overlays refresh quarterly.
ordinances and bulletins refresh on publication. your agent can read the freshness and decide
whether to trust the answer — automatically.
source_url; nothing is paraphrased into the index
without a citation back.
get_case_rulings. anonymous access with no
key at all also works, at a lower ceiling.
i'm paul — a human, and i build estate atlas. this goes straight to me, not a ticket queue. i read and answer every message.
got it — thank you