zoningsignal avatar

Zoning Signal

com.zoningsignal/observatory

This connects Claude to Zoning Signal's civic intelligence platform tracking municipal zoning patterns across Florida's growth corridors. You get place dossiers with governance profiles, named pattern detection like "The Bellwether Gas Station" or "The Grandfather Window", corridor analysis across jurisdictions, and entity graphs linking commissioners, legal counsel, legislation, and projects. The system assigns signal scores to meetings, patterns, and places based on governance significance. Reach for this when you need structured intelligence on development regulations, annexation strategies, or board dynamics in active suburban growth zones. It reads meeting minutes, staff reports, and ordinances into a living regional atlas you can query through natural language.

tools
18
transport
HTTP
last updated
Sep 26, 2026

Install

From registry metadata
$ npx add-mcp https://zoningsignal.com/mcp --name observatory

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http observatory https://zoningsignal.com/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 18 tools

Verified live against the running server on Nov 6, 2026.

describe_zoning_signalReturn the canonical product description for Zoning Signal: what the observatory is, the four artifact types it publishes, the regional scope of current coverage, and the methodology. Call once per session to ground subsequent tool calls in canonical context.

Return the canonical product description for Zoning Signal: what the observatory is, the four artifact types it publishes, the regional scope of current coverage, and the methodology. Call once per session to ground subsequent tool calls in canonical context.

No parameters. Call it with no arguments.

list_placesList every place dossier (per-jurisdiction reading) the observatory publishes. Optionally filter by state. Returns city, state, slug, signal strength, signal direction, and the dossier URL. Use to discover the available place-level coverage before calling describe_place. Phase...1 params

List every place dossier (per-jurisdiction reading) the observatory publishes. Optionally filter by state. Returns city, state, slug, signal strength, signal direction, and the dossier URL. Use to discover the available place-level coverage before calling describe_place. Phase...

Parameters* required
statestring
Optional US state name (e.g., "Florida") to filter the result set. Omit for all places across all states.
list_corridorsList every published corridor page. A corridor is the cross-municipal economic-topology view: the cross-jurisdiction read on a shared infrastructure spine, aquifer, or commercial gravity field. Returns name, slug, constituent cities, primary axis, and URL.

List every published corridor page. A corridor is the cross-municipal economic-topology view: the cross-jurisdiction read on a shared infrastructure spine, aquifer, or commercial gravity field. Returns name, slug, constituent cities, primary axis, and URL.

No parameters. Call it with no arguments.

list_patternsList every named pattern in the Pattern Atlas. A named pattern is a coined recurring structure observed across multiple jurisdictions or multiple meetings (e.g., "The Quiet Revolution"). Returns slug, display name, canonical pattern URL (/patterns/{slug}, the DefinedTerm canon...

List every named pattern in the Pattern Atlas. A named pattern is a coined recurring structure observed across multiple jurisdictions or multiple meetings (e.g., "The Quiet Revolution"). Returns slug, display name, canonical pattern URL (/patterns/{slug}, the DefinedTerm canon...

No parameters. Call it with no arguments.

describe_patternReturn the full dossier for a named pattern: voxel_lead, signal_status (horizon/confidence), scope (spatial/temporal/topical/corridors), full exhibits inventory with detection metadata, defensive responses, provenance chain, related briefs, related places, related corridors, a...1 params

Return the full dossier for a named pattern: voxel_lead, signal_status (horizon/confidence), scope (spatial/temporal/topical/corridors), full exhibits inventory with detection metadata, defensive responses, provenance chain, related briefs, related places, related corridors, a...

Parameters* required
slug*string
The pattern slug (e.g., "self-storage-canary"). Use current_named_patterns to discover available slugs.
list_entitiesList every named entity in the Decoder Index, the smallest citable unit of authority in the corpus. Returns the four-class taxonomy (Person / Organization / Legislation / CreativeWork) with class-specific summary fields (jobTitle for Person; jurisdiction for Organization / Leg...3 params

List every named entity in the Decoder Index, the smallest citable unit of authority in the corpus. Returns the four-class taxonomy (Person / Organization / Legislation / CreativeWork) with class-specific summary fields (jobTitle for Person; jurisdiction for Organization / Leg...

Parameters* required
entity_classstring
Filter by entity class. "Person" = board members, attorneys, applicants (individuals), elected officials. "Organization" = developer firms, law firms, agencies, HOAs, planning consultancies. "Legis...one of Person · Organization · Legislation · CreativeWork
placestring
Optional: filter to entities scoped to a specific place (e.g., "leesburg-florida"). Matches entities whose related_places, organization.jurisdiction, legislation.jurisdiction, or creative_work.juri...
searchstring
Optional case-insensitive substring search across display_name, canonical_role, voxel_lead, and slug. Use for natural-language entity discovery (e.g., "denial bloc", "intersection mitigation", "for...
describe_entityReturn the full structured dossier for a named entity: the canonical citable artifact for any actor, organization, ordinance, or project the corpus references. Returns: voxel_lead (134-167 word voxel-disciplined identity prose), canonical_role, the class-specific cluster (pers...1 params

Return the full structured dossier for a named entity: the canonical citable artifact for any actor, organization, ordinance, or project the corpus references. Returns: voxel_lead (134-167 word voxel-disciplined identity prose), canonical_role, the class-specific cluster (pers...

Parameters* required
slug*string
The entity slug (e.g., "sb-180", "hanover-land-company", "anita-geraci-carver"). Use list_entities to discover available slugs. The Decoder Index hub at /entities lists every entity grouped by class.
meeting_indexReturn meeting readings for a specific city across an optional date range. A meeting reading is a plain-English read of one harvested planning-board, council, or commission meeting, with signal extraction and entity mapping. Use to drill from a city or corridor into the tempor...3 params

Return meeting readings for a specific city across an optional date range. A meeting reading is a plain-English read of one harvested planning-board, council, or commission meeting, with signal extraction and entity mapping. Use to drill from a city or corridor into the tempor...

Parameters* required
city*string
City name (e.g., "Clermont"). Case-insensitive.
from_datestring
Inclusive lower bound (ISO 8601 date). Omit to span back to the earliest reading.
to_datestring
Inclusive upper bound (ISO 8601 date). Omit for the latest reading.
list_meetingsReturn meeting readings across all cities, optionally filtered by date range or jurisdiction substring. Same response shape as meeting_index but with no required parameters. Call with no args to get the full corpus, or pass a jurisdiction substring (e.g., "minneola") to filter...3 params

Return meeting readings across all cities, optionally filtered by date range or jurisdiction substring. Same response shape as meeting_index but with no required parameters. Call with no args to get the full corpus, or pass a jurisdiction substring (e.g., "minneola") to filter...

Parameters* required
from_datestring
Inclusive lower bound (ISO 8601 date). Omit to span back to the earliest reading.
jurisdictionstring
Optional case-insensitive substring to filter by city (e.g., "minneola"). Omit for all cities.
to_datestring
Inclusive upper bound (ISO 8601 date). Omit for the latest reading.
list_watch_itemsReturn The Watch, the field's forward calendar of pending events, scheduled hearings, regulatory sunsets, and condition-triggered milestones the observatory is tracking. Filter by status (pending / resolved / obsolete), horizon (imminent / near-term / structural), or scope (pl...5 params

Return The Watch, the field's forward calendar of pending events, scheduled hearings, regulatory sunsets, and condition-triggered milestones the observatory is tracking. Filter by status (pending / resolved / obsolete), horizon (imminent / near-term / structural), or scope (pl...

Parameters* required
briefstring
Optional: filter to items linked to a specific named-pattern brief.
corridorstring
Optional: filter to items scoped to a specific corridor (e.g., "us-27-south-lake").
horizonstring
Optional: filter to items in the named horizon band. Imminent = ≤14 days; near-term = ≤90 days; structural = >90 days or condition-triggered.one of imminent · near-term · structural
placestring
Optional: filter to items scoped to a specific place dossier (e.g., "leesburg-florida").
statusstring
Filter by lifecycle status. Defaults to 'pending' (active watch items only); pass 'all' for the full corpus including resolved + obsolete entries.one of pending · resolved · obsolete · all
get_track_recordReturn the observatory's public calibration scorecard: the aggregate accuracy of past watch-item directional reads, horizon calls, and significance assessments across resolved watches. Returns: total_resolved, directional accuracy (aligned + 0.5 × mixed), horizon accuracy (wit...3 params

Return the observatory's public calibration scorecard: the aggregate accuracy of past watch-item directional reads, horizon calls, and significance assessments across resolved watches. Returns: total_resolved, directional accuracy (aligned + 0.5 × mixed), horizon accuracy (wit...

Parameters* required
briefstring
Optional: scope to a brief slug (e.g., "six-month-board-flip"). Returns the track record for watches linked to a specific named-pattern brief.
corridorstring
Optional: scope to a corridor slug (e.g., "us-27-south-lake"). Returns the aggregate track record across the corridor's constituent places.
jurisdictionstring
Optional: scope to a single place slug (e.g., "leesburg-florida") for that city's track record only. Use list_cities to discover available slugs.
describe_placeReturn the dossier projection for a city, in the requested cognitive lens. Defaults to the synthesis projection (the multidimensional view that holds all lenses in superposition and names the dialectics). Pass a single-lens value to get the focused cognitive position. This is...2 params

Return the dossier projection for a city, in the requested cognitive lens. Defaults to the synthesis projection (the multidimensional view that holds all lenses in superposition and names the dialectics). Pass a single-lens value to get the focused cognitive position. This is...

Parameters* required
lensstring
The cognitive position to project. Defaults to "synthesis". Canonical lenses: developer, investor, broker, attorney, business, resident, civic-leader. Aliases route to canonical: legal/lawyer/couns...one of synthesis · developer · investor · broker · attorney · businessdefault: synthesis
slug*string
The place slug (e.g., "clermont-florida"). Use list_places to discover available slugs.
describe_corridorReturn the dossier projection for a corridor, in the requested cognitive lens. Same lens enum and default as describe_place. Corridor projections surface cross-municipal dialectics and shared-infrastructure dynamics that no single place dossier captures.2 params

Return the dossier projection for a corridor, in the requested cognitive lens. Same lens enum and default as describe_place. Corridor projections surface cross-municipal dialectics and shared-infrastructure dynamics that no single place dossier captures.

Parameters* required
lensstring
The cognitive position to project. Defaults to "synthesis". Canonical lenses: developer, investor, broker, attorney, business, resident, civic-leader. Aliases route to canonical: legal/lawyer/couns...one of synthesis · developer · investor · broker · attorney · businessdefault: synthesis
slug*string
The corridor slug (e.g., "us-27-south-lake"). Use list_corridors to discover available slugs.
describe_meetingReturn the full dossier projection for a meeting reading, in the requested cognitive lens. Same lens enum and default as describe_place / describe_corridor: eight total projections (seven stakeholder lenses, namely developer, investor, broker, attorney, business, resident and...2 params

Return the full dossier projection for a meeting reading, in the requested cognitive lens. Same lens enum and default as describe_place / describe_corridor: eight total projections (seven stakeholder lenses, namely developer, investor, broker, attorney, business, resident and...

Parameters* required
lensstring
Optional cognitive lens. Default: synthesis (the whole-picture multi-projection view). Canonical lenses: developer, investor, broker, attorney, business, resident, civic-leader. Aliases route to ca...one of synthesis · developer · investor · broker · attorney · business
slug*string
The meeting slug (e.g., "leesburg-pc-2026-01"). Use list_meetings or meeting_index to discover available slugs.
describe_watchReturn the full dossier for a watch item, the observatory's forward-looking observation primitive. Returns title, subtitle, scope (place / corridor / pattern / brief / region), trigger (type / date / condition), significance (horizon / confidence / why_it_matters_voxel), full...1 params

Return the full dossier for a watch item, the observatory's forward-looking observation primitive. Returns title, subtitle, scope (place / corridor / pattern / brief / region), trigger (type / date / condition), significance (horizon / confidence / why_it_matters_voxel), full...

Parameters* required
slug*string
The watch slug (e.g., "lake-bright-council-mar-23"). Use list_watch_items to discover available slugs.
submit_agent_feedbackSubmit feedback to the observatory's operators about the MCP tool surface. The active counterpart to the passive invocation log. Categories: 'gap' (a capability you expected and didn't find), 'error' (an unexpected failure or wrong result), 'praise' (a tool or surface that did...6 params

Submit feedback to the observatory's operators about the MCP tool surface. The active counterpart to the passive invocation log. Categories: 'gap' (a capability you expected and didn't find), 'error' (an unexpected failure or wrong result), 'praise' (a tool or surface that did...

Parameters* required
about_toolstring
Optional: the tool name this feedback is about (e.g., "describe_corridor"). Lets operators rollup feedback per tool.
about_urlstring
Optional: a URL on the observatory this feedback references (e.g., "https://zoningsignal.com/corridors/us-27-south-lake").
agent_contextstring
Optional: brief description of what the agent was trying to do, the user task that led to this surface. Helps operators understand intent without seeing only the failure point.
category*string
Bounded categorization. 'gap' = expected capability is missing. 'error' = tool returned wrong/unexpected/malformed result. 'praise' = a surface or tool that worked exceptionally well. 'suggestion'...one of gap · error · praise · suggestion · citation_request
message*string
The feedback prose itself. Be specific. What were you trying to accomplish? What was missing or wrong? Voice that survives compression. Operators read every submission.
suggested_resolutionstring
Optional: if you have a concrete proposal (a new tool, a renamed parameter, a missing field on a response), name it here.
semantic_searchSearch every record by exact words and by meaning at once: meeting agendas and minutes, place dossiers, corridors, named patterns and briefs, entities and watch items. Finds a case, ordinance or resolution number, a parcel id or alternate key, an address, a project, firm or pe...1 params

Search every record by exact words and by meaning at once: meeting agendas and minutes, place dossiers, corridors, named patterns and briefs, entities and watch items. Finds a case, ordinance or resolution number, a parcel id or alternate key, an address, a project, firm or pe...

Parameters* required
q*string
A name, a number or a question. Text matching needs every word to appear in a record, so extra words narrow it; meaning matching tolerates any wording. Maximum 500 characters.
trace_connectionTrace how two named things in the planning record connect, and report how specific that connection is. Give `from` and `to` for the shortest route between them; give `from` alone to rank what one actor connects to; give neither to rank the corpus's most specific connections. E...6 params

Trace how two named things in the planning record connect, and report how specific that connection is. Give `from` and `to` for the shortest route between them; give `from` alone to rank what one actor connects to; give neither to rank the corpus's most specific connections. E...

Parameters* required
crossingstring
"any" ranks every matching pair. "jurisdiction" keeps only pairs whose record-backed jurisdiction footprints are disjoint and both present, computed from the jurisdiction on each minuted meeting ra...one of any · jurisdictiondefault: any
evidencearray
Which layers may carry a hop. "minuted" = attendance transcribed from an agenda or minutes; "authored" = a peer claim stated on an entity dossier; "named_pattern" = two entities listed as exhibits...
exclude_publishedboolean
true keeps only the pairs the observatory's own briefs have yet to put together, tested against the union of an entity's appears_in_briefs and the briefs that name it.default: false
fromstring
One endpoint slug, resolved in order against entities, meetings, then named patterns: the three vocabularies in which a shared node is a specific claim. No slug is shared between them on the deploy...
limitinteger
How many connections to return. It caps connections; routes within one connection are shown five at a time in pair mode and one at a time in from and sweep modes, and `routes_shown` beside the exac...default: 5
tostring
The other endpoint, drawn from the same three vocabularies as `from`. Supplying `to` without `from` is accepted and read as `from`, because the graph is undirected; the response echoes that as quer...

Sponsors

Details

Website
zoningsignal.com
Transport
HTTP
Registry
MCP registry, active
Resources
5
Prompts
5
Tools verified
Nov 6, 2026