Estate Atlas SD-MCP
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DATABASE_URL | No | Postgres connection string (fallback for SANDIEGO_MCP_DATABASE_URL). | |
| VOYAGE_API_KEY | No | Voyage AI key (fallback for SANDIEGO_MCP_VOYAGE_API_KEY). | |
| SANDIEGO_MCP_LOG_LEVEL | No | Log level: DEBUG, INFO, WARNING, ERROR. | INFO |
| SANDIEGO_MCP_DATABASE_URL | No | Postgres connection string (read-only role). Falls back to DATABASE_URL. | |
| SANDIEGO_MCP_EMBEDDING_DIM | No | Override embedding dimension. | 1024 |
| SANDIEGO_MCP_VOYAGE_API_KEY | No | Voyage AI key for query embeddings (voyage-4-large). Falls back to VOYAGE_API_KEY. | |
| SANDIEGO_MCP_EMBEDDING_MODEL | No | Override embedding model. | voyage-4-large |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_municipal_codeA | Semantic search across San Diego Municipal Code, information bulletins, and ordinances. Returns top-matching chunks with section numbers, source URLs, and PDF anchors. Use for open-ended questions like 'what are fence height rules' or 'when do I need historical review'. |
| get_code_sectionA | Fetch the full text of a specific SDMC section by section number (e.g. '142.0610'). Includes diagrams, cross-references, and source PDF link. Prefer this over search when you already know the section. |
| get_table_of_contentsA | Return a hierarchical table of contents for the Municipal Code, optionally filtered to a single chapter. Use to discover what's available before searching. |
| list_bulletinsB | List Development Services Department information bulletins, optionally filtered by project type (e.g. 'ADU', 'New Construction'). Bulletins are the procedural guides that tell applicants what forms + checklists are required. |
| get_bulletinA | Fetch the full content of a specific information bulletin by IB number (e.g. 'IB-121' or '121'). Returns checklist, required forms, and reference code sections. |
| lookup_parcelC | Look up a parcel by street address OR APN. Returns zoning, overlays, lot size, assessor data (year built, sqft, type). The killer query — most public sources require visiting 4+ websites to assemble this picture. |
| get_permits_for_parcelA | Fetch building permits for a parcel by APN. Filter by status ('Active', 'Completed', 'Expired', 'Revoked', 'Pending', or 'all'). Returns permit number, type, dates, contractor, and project value. |
| get_violations_for_parcelA | Fetch code-enforcement cases for a parcel by APN. Filter by status ('Open', 'Closed', 'Resolved', 'Pending', or 'all'). Returns case number, violation type, dates, and resolution. |
| get_overlays_for_apnA | Return every regulatory overlay that applies to a parcel by APN: SDA (Sustainable Development Area, drives state ADU density bonus eligibility), TPA (Transit Priority Area for AB 2097 parking elimination), CPIOZ, Coastal Overlay, Prop D Coastal Height Limit, MSCP, flood, fire, seismic, airport, and historic-district overlays. The #1 multifamily-developer question — overlays gate ADU bonus and parking workflows. |
| get_overlays_for_pointA | Same overlay lookup as get_overlays_for_apn but keyed by a WGS84 lat/lon. Use when you have a project-site coordinate but no APN (map click, geocode result, etc.). |
| get_setbacks_for_zoneA | Return setbacks, lot dimension minima, FAR, height limits, and special-overlay rules for a San Diego zone code (e.g. 'RS-1-7', 'RM-1-1'). Sourced from SDMC tables. |
| get_zone_infoB | Higher-level zone summary. Returns setbacks + envelope limits + pointer back into SDMC for permitted-use detail. Combine with search_municipal_code for narrative regs. |
| data_freshnessA | Per-source data freshness: last-update timestamp, record count, and SLA cadence for every data source the MCP exposes. Call this when you need to assess whether the answer to a regulatory question is up-to-date. |
| get_case_rulingsC | PENDING (v0.1): Federal and California appellate court rulings affecting San Diego land use, zoning, CEQA, and Coastal Act. Pipeline scaffolded 2026-05-15 via CourtListener API. Returns coverage:pending with a planned_at date and fallback CourtListener search URL until live data ships (ETA 2026-07-15). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 14 tools
Most tools have distinct purposes, but get_zone_info and get_setbacks_for_zone partially overlap (both return setbacks), and lookup_parcel includes zoning/overlays also covered by separate tools. Descriptions help, but an agent might be uncertain which to use for zone details.
Tools predominantly use verb_noun snake_case (get_*, list_*, lookup_*, search_*). data_freshness breaks the pattern slightly, but overall naming is predictable and clear.
14 tools cover a comprehensive domain (land use, zoning, permits, overlays, code enforcement, bulletins, case rulings) without unnecessary excess. Each tool earns its place for a real estate regulatory assistant.
The tool set covers most common regulatory queries (parcel info, overlays, permits, code sections, bulletins). Minor gaps: missing tax assessment or property history, and get_case_rulings is still pending. But core workflows are well-supported.