Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Zoning Signal

REMOTE · ZONINGSIGNAL.COM

Planning and zoning records: 25 jurisdictions in Lake, Orange, Osceola, Polk, Seminole counties, FL

Available components

0 this week 86 Trust /100

Last scanned (9 hours ago)

Scores higher than 92% of remote servers

Reachable. Last reached 7 Nov 2026.

Category Maps and Location

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security74
  • The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
  • No authorisation is required to call this server. Nothing on it is marked destructive, but we can't show that an anonymous caller can only read: full credit needs the server to list at least one tool and every tool to be verifiably read-only. We use a best-effort check of tool names and descriptions to tell read-only tools from tools that change things, so some genuinely read-only tools may not get full credit. Names that start with a read verb (get, list, read, search and similar) and accurate readOnlyHint annotations help. Meet that to earn full credit, or require authorisation. See how to fix → View diagnostics → Partial
  • HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
  • HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
  • DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
Schema Quality & AI Usability78
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 5224 tokens (~227/item across 23 items; 18 tools + 5 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 18 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 20 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
What we tested

Checks we ran (13)

  • TLS certificate
  • Authorization
  • HTTPS
  • HSTS header
  • DNSSEC
  • Transport
  • Schema quality
  • Stability
  • Tool coverage
  • Injection markers
  • Destructive annotations
  • Judged manipulation
  • MCP protocol

Does not apply to this hosted endpoint (2)

  • Supply Chain SecurityScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.
  • Provenance & TransparencyScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.

The score does not measure everything. What the score does not measure →

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 6 Nov 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 5 Nov 26 +1
    • Stability: 0.97 → pass security
    • Tool “get_track_record” rewrote its description, which is the text the model reads security
  • 4 Nov 26 −1
    • Stability: pass → 0.97 functional
  • 28 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 27 Sept 26 0
    • Tool “describe_entity” rewrote its description, which is the text the model reads security
    • Tool “describe_meeting” rewrote its description, which is the text the model reads security
    • Tool “describe_place” rewrote its description, which is the text the model reads security
    • Tool “describe_watch” rewrote its description, which is the text the model reads security
    • Tool “describe_zoning_signal” rewrote its description, which is the text the model reads security
    • Tool “get_track_record” rewrote its description, which is the text the model reads security
    • Tool “list_corridors” rewrote its description, which is the text the model reads security
    • Tool “list_entities” rewrote its description, which is the text the model reads security
    • Tool “list_meetings” rewrote its description, which is the text the model reads security
    • Tool “list_patterns” rewrote its description, which is the text the model reads security
    • Tool “list_places” rewrote its description, which is the text the model reads security
    • Tool “list_watch_items” rewrote its description, which is the text the model reads security
    • Tool “submit_agent_feedback” rewrote its description, which is the text the model reads security
    • Tool “trace_connection” rewrote its description, which is the text the model reads security
    • “submit_agent_feedback” reworded the description of “agent_context” cosmetic
    • “submit_agent_feedback” reworded the description of “suggested_resolution” cosmetic
    • “trace_connection” reworded the description of “crossing” cosmetic
    • “trace_connection” reworded the description of “exclude_published” cosmetic
    • “trace_connection” reworded the description of “from” cosmetic
  • 26 Sept 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “semantic_search” rewrote its description, which is the text the model reads security
    • New resource “coverage” functional
    • Server version: 2.2.0 → 2.3.0 functional
    • “semantic_search” reworded the description of “q” cosmetic
    • Tool “semantic_search” changed its title: Semantic Search → Search cosmetic
  • 25 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 18 Sept 26 0
    • Tool “describe_entity” rewrote its description, which is the text the model reads security
    • Schema quality: 183 → 229 ▼ functional
    • Server version: 2.1.0 → 2.2.0 functional
    • New tool “trace_connection” functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 7 Nov 2026 · Probed https://zoningsignal.com/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=zoningsignal.com CN=YE2,O=Let's Encrypt,C=US 22 Oct 2026 20 Jan 2027 ECDSA 256 ECDSA-SHA384 62e1f8ae7cbf9d3dd1c9861a57e2b8c3782
SANs: *.zoningsignal.com, zoningsignal.com
CN=YE2,O=Let's Encrypt,C=US (CA) CN=Root YE,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 ECDSA 384 ECDSA-SHA384 4df3b15dd6c0784c507cd37b58e6f115
CN=Root YE,O=ISRG,C=US (CA) CN=ISRG Root X2,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 ECDSA-SHA384 872165fc34b6e5fba8add5b3705fb53a
CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 SHA256-RSA 6c8f1dc727c7117f7baf853ac980f9cd

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of zoningsignal.com. — Not signed

Zone DS Keys Algorithms Outcome
. Trust anchor 20326, 38696 8, 8 Verified
com. DS published 19718 13 Verified
zoningsignal.com. No DS Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://zoningsignal.com/mcp Verified 200
http (plaintext) http://zoningsignal.com/mcp HTTPS enforced 301 https://zoningsignal.com/mcp
MCP tools · 18 exposed · ~4,916 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
describe_corridor ~170

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.

NameTypeReqDescription
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/counsel…
slugstringyesThe corridor slug (e.g., "us-27-south-lake"). Use list_corridors to discover available slugs.
NameTypeReqDescription
available_lensesarray––
claimsarrayyes–
fell_back_to_synthesisboolean––
freshnessobjectyes–
frontmatterobject––
lensstringyes–
lens_was_requestedstring––
projectionstringyes–
record_statusobject|null––
slugstringyes–
titlestring––
typestringyes–
urlstringyes–

No examples provided.

describe_entity ~309

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 (person.voting_record for board members; organization.type + jurisdiction; legislation.legal_status + effective_date + sunset_date + citation; creative_work.work_type + status + case_number), the bidirectional graph references (appears_in_meetings, appears_in_briefs, appears_in_watches, exhibits_patterns, related_entities, related_places, related_corridors), the provenance_chain, and the canonical surfaces (dossier URL, schema_id, decoder_index_hub). Each schema_id (`/entities/{slug}#{class.toLowerCase()}`) is the stable cross-page Schema.org reference (Person / Organization / Legislation / CreativeWork) that AI agents resolve to when citing the entity. Use when grounding a citation, when reasoning about an entity's full role across the corpus, or when traversing the entity graph from a single name. This dossier answers what one node touches; trace_connection answers what joins two of them and how specific that join is.

NameTypeReqDescription
slugstringyesThe 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.
NameTypeReqDescription
appears_in_briefsarray––
appears_in_meetingsarray––
appears_in_watchesarray––
canonical_rolestring––
creative_workobject––
display_namestringyes–
entity_classstringyes–
exhibits_patternsarray––
last_activestring––
legislationobject––
named_atstring––
organizationobject––
personobject––
provenance_chainarray––
related_entitiesarray––
related_placesarray––
schema_idstringyes–
slugstringyes–
urlstringyes–
voxel_leadstring––

No examples provided.

describe_meeting ~338

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 civic-leader, plus synthesis as the default). Returns the lens-projected body, full frontmatter (jurisdiction, board, meeting_date, document_type, key_signals, vote tallies), citation-stable claims[] (per the Phase 11 Citable Contract; populates as meeting claim scopes graduate), four-clock freshness, and the structured record_status block (record_type / meeting_status / outcome_status / minutes_available / vote_final). The last prevents agents from summarizing agenda intent as completed action. Use to ground citations in a specific meeting's reading; pair with list_meetings or meeting_index for discovery.

NameTypeReqDescription
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 cano…
slugstringyesThe meeting slug (e.g., "leesburg-pc-2026-01"). Use list_meetings or meeting_index to discover available slugs.
NameTypeReqDescription
available_lensesarray––
claimsarrayyes–
fell_back_to_synthesisboolean––
freshnessobjectyes–
frontmatterobject––
lensstringyes–
lens_was_requestedstring––
projectionstringyes–
record_statusobject|nullyes–
slugstringyes–
titlestring––
typestringyes–
urlstringyes–

No examples provided.

describe_pattern ~159

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, audiences, and the canonical surfaces (dossier URL, DefinedTerm @id, DefinedTermSet @id, atlas list URL). Use when an agent needs the structured pattern data to cite or analyze. Each pattern is a citable entity in the corpus's entity graph; the DefinedTerm canonical home gives AI agents a stable reference.

NameTypeReqDescription
slugstringyesThe pattern slug (e.g., "self-storage-canary"). Use current_named_patterns to discover available slugs.
NameTypeReqDescription
audiencesarray––
claimsarrayyes–
defensive_responsearray––
exhibitsarray––
freshnessobjectyes–
lifecycle_stagestring––
namestringyes–
named_atstring––
provenance_chainarray––
related_briefsarray––
related_corridorsarray––
related_placesarray––
scopeobject––
signal_statusobject––
slugstringyes–
surfacesobject––
urlstringyes–
voxel_leadstring––

No examples provided.

describe_place ~240

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 useful when the agent is acting on behalf of a user with a specific stake (developer underwriting, investor thesis, broker client argument, attorney precedent search, resident orientation, civic-leader regional coordination).

NameTypeReqDescription
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/counsel…
slugstringyesThe place slug (e.g., "clermont-florida"). Use list_places to discover available slugs.
NameTypeReqDescription
available_lensesarray––
claimsarrayyes–
fell_back_to_synthesisboolean––
freshnessobjectyes–
frontmatterobject––
lensstringyes–
lens_was_requestedstring––
projectionstringyes–
record_statusobject|null––
slugstringyes–
titlestring––
typestringyes–
urlstringyes–

No examples provided.

describe_watch ~194

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 body prose, four-clock freshness, and citation-stable claims[]. For RESOLVED watches, also returns the outcome cluster (outcome_type, outcome_summary, prediction_assessment with directional/horizon/significance assessments, lesson, citations), and the lesson surfaces as a stable claim_id (per the Phase 11 Citable Contract × Phase 8 Resolution Bridge compound). Use to ground citations in a specific watch's prediction or resolution; pair with list_watch_items for discovery.

NameTypeReqDescription
slugstringyesThe watch slug (e.g., "lake-bright-council-mar-23"). Use list_watch_items to discover available slugs.
NameTypeReqDescription
bodystring––
claimsarrayyes–
freshnessobjectyes–
outcomeobjectyes–
scopeobject––
significanceobject––
slugstringyes–
subtitlestring––
titlestring––
triggerobject––
typestringyes–
urlstringyes–

No examples provided.

describe_zoning_signal ~57

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.

Input schema present but exposes no named parameters.

NameTypeReqDescription
artifact_typesarrayyes–
built_byobject––
descriptionstringyes–
methodologyobjectyes–
namestringyes–
regional_scopeobject––
surfacesobjectyes–

No examples provided.

get_track_record ~261

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 (within / total), significance accuracy (confirmed / total), per-confidence-pip stratification, recent resolutions, and per-jurisdiction breakdown. Optionally scope to a single jurisdiction or corridor's constituent set. When multiple scopes are supplied, jurisdiction takes precedence over corridor, then brief. Use when an agent or user wants to assess Zoning Signal's historical forecasting accuracy before citing a current prediction. Misreads are reported.

NameTypeReqDescription
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.
NameTypeReqDescription
by_confidencearray––
directionalobject––
horizonobject––
obsoletenumber––
pendingnumber––
recentarray––
scopeobject––
significanceobject––
surfacesobject––
total_resolvednumber––

No examples provided.

list_corridors ~62

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.

Input schema present but exposes no named parameters.

NameTypeReqDescription
corridorsarray––
countnumber––

No examples provided.

list_entities ~377

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 / Legislation / Project; legal_status for Legislation; case_number + work_status for Project) plus cross-reference counts (meetings_count, briefs_count, watches_count, patterns_count) for each entity. Filter by entity_class, place (jurisdiction), or search substring. Use as the discovery surface for the entity graph; pair with describe_entity for full structured detail. Each entity's schema_id is a stable cross-page reference (`/entities/{slug}#{class.toLowerCase()}`) that resolves to the canonical Schema.org node (Person / Organization / Legislation / CreativeWork) for AI-citation grounding.

NameTypeReqDescription
entity_classstring–Filter by entity class. "Person" = board members, attorneys, applicants (individuals), elected officials. "Organization" = developer firms, law firms, agencies, HOAs, planning consultancies. "Legisla…
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.jurisd…
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", "form-…
NameTypeReqDescription
by_classobject––
countnumber––
entitiesarray––
filtersobject––
surfacesobject––

No examples provided.

list_meetings ~171

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 by city without requiring an exact match. Use when you need to enumerate the full meeting record or scan across cities by date range.

NameTypeReqDescription
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.
NameTypeReqDescription
countnumber––
filtersobject––
meetingsarray––

No examples provided.

list_patterns ~146

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 canonical home as of Phase 9), lifecycle stage, horizon, confidence, exhibits count, spatial scope, related briefs, and the voxel_lead. Use as the discovery surface for the Pattern Atlas; pair with describe_pattern for full dossier detail. Phase 12 renamed it from current_named_patterns to align with the canonical content-type vocabulary (loader: getAllContent("pattern"); URLs: /patterns/{slug}; describe tool: describe_pattern).

Input schema present but exposes no named parameters.

NameTypeReqDescription
countnumber––
patternsarray––

No examples provided.

list_places ~135

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 12 renamed it from list_cities to align with the canonical content-type vocabulary (the loader function is getAllContent("place"); URLs are /places/{slug}; the describe tool is describe_place).

NameTypeReqDescription
statestring–Optional US state name (e.g., "Florida") to filter the result set. Omit for all places across all states.
NameTypeReqDescription
citiesarrayyes–
countnumberyes–

No examples provided.

list_watch_items ~236

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 (place / corridor / brief). Use to surface what the field is watching from any cognitive position.

NameTypeReqDescription
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.
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.
NameTypeReqDescription
countnumber––
statusstring––
watch_itemsarray––

No examples provided.

meeting_index ~132

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 temporal record.

NameTypeReqDescription
citystringyesCity 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.
NameTypeReqDescription
citystring––
countnumber––
from_datestring––
meetingsarray––
to_datestring––

No examples provided.

semantic_search ~309

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 person, or a plain-language question. Ranking fuses three lists by reciprocal rank: full-text match (every word as written; "quotes", OR and -word work as in web search), title match, and voyage-4 embedding similarity. Each hit carries its true cosine `similarity` and `matched` (title, text, meaning). Every response states `scope` (the query names a covered place, a place outside coverage, or no place) and `evidence` (strong when a top record contains the query's terms or closely resembles it); when either needs explaining it adds a `note` and the coverage. `weak_match` is deprecated and will be removed in 2.4.0: it is true when scope is outside or evidence is not strong, so read those instead. Coverage: 25 jurisdictions in Lake, Orange, Osceola, Polk and Seminole counties, Florida, from 2024, listed in the coverage resource. Top 12.

NameTypeReqDescription
qstringyesA 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.
NameTypeReqDescription
countnumberyes–
coverageobject–What the corpus covers; present with note. Same object as the coverage resource.
evidencestringyesstrong: a top record contains the query terms or closely resembles it (cosine >= 0.5). weak: records only loosely resemble it. none: nothing returned.
hitsarrayyes–
notestring–Present when scope is outside, evidence is weak, or nothing matched.
querystringyes–
scopestringyesWhether the query names a covered place, a place outside coverage, or no place.
weak_matchboolean–Deprecated since 2.3.0; removed in 2.4.0. True when scope is outside or evidence is not strong. Read scope and evidence instead.

No examples provided.

submit_agent_feedback ~447

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 exactly what you needed), 'suggestion' (a refinement you'd recommend), 'citation_request' (a claim or fact you want surfaced with a stable @id you can cite). The submission auto-attaches the prior 10 invocations from your MCP-Session-Id, so operators read your feedback annotated with the call sequence that produced it, so there is no need to repeat what you tried. Operators triage every submission and surface notable feedback at /agent-observatory. This is how the observatory evolves toward what agents actually need.

NameTypeReqDescription
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.
categorystringyesBounded categorization. 'gap' = expected capability is missing. 'error' = tool returned wrong/unexpected/malformed result. 'praise' = a surface or tool that worked exceptionally well. 'suggestion' =…
messagestringyesThe 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.
NameTypeReqDescription
attached_invocation_countnumber–How many prior invocations (from your MCP-Session-Id) were auto-attached for operator context.
categorystring–The category the feedback was filed under.
feedback_idstringyesStable id for the stored feedback record.
messagestring–Human-readable acknowledgement.
okbooleanyesTrue when the feedback was accepted and stored.
received_atstring–ISO-8601 timestamp the feedback was recorded.

No examples provided.

trace_connection ~1,173

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. Endpoints are entity, meeting, or named-pattern slugs; list_entities, list_meetings and list_patterns discover them. Routes run over the three layers where a shared node is a specific claim: meeting attendance transcribed from agendas and minutes (249 references across 78 meeting records; a meeting record holds a median of 3 entities and at most 12), peer claims authored on an entity dossier (162 links, 44 of them stated on both dossiers), and shared named patterns (58 references across 15 patterns; a pattern holds a median of 2 entities and at most 10). That substrate is 161 nodes and 469 links over 68 entities, in one connected component. Place, corridor, brief and watch links serve here as filters and citations rather than as routes: the us-27-south-lake node alone carries 117 links, so a route through it would hold for nearly every pair in the corpus. Hop count is a result here rather than an input. Across the full frontmatter graph, 94.5% of entity pairs already sit within two steps and a three-step expansion reaches a median of 235 of 243 nodes, so depth returns the corpus rather than an answer. What discriminates is the degree of the WIDEST node a route passes through, and the ranking leads on it: a route is only as specific as its least specific waypoint. Two more measured properties travel with every row: how many equally-short routes exist (uniqueness runs 65% at two hops, 40% at three, 14% at four), and whether the two endpoints are minuted in disjoint jurisdictions, which 15 of 68 entities are positioned to be. `interior_degrees` carries every degree on the chain so you can re-rank on any of them, and `provenance` says whether the whole join rests on the meeting record, on a curat…

NameTypeReqDescription
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 rath…
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 of…
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.
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 deployed…
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 exact…
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 query.…
NameTypeReqDescription
calibrationobjectyesMeasured background rates for the chosen evidence layers: what to read a row against.
connectionsarrayyes–
coverageobjectyesWhat the corpus covers, plus what the graph covers: meetings linked to entities against meetings in corpus, jurisdictions linked against jurisdictions in corpus, and the per-jurisdiction breakdown.
declared_directarray–From and sweep modes: one-hop authored pairs, unscored, as slug pairs; describe_entity already returns each one in its dossier context.
declared_direct_notestring–Present whenever declared_direct carries a row: the call that reads any of them in full.
limitsarrayyesAssembled per call. The coverage line is always first: absence in this tool is absence of curation.
no_pathobject|null–Pair mode only, when the endpoints are unreachable on the chosen layers. Null everywhere else, including in pair mode when a route exists.
queryobjectyes–
rankingstringyesThe sort rule, verbatim, labelled a judgement call. Every integer behind it is in each row.
selectivityobjectyesHow much of the population the filters kept: the tool grading its own discrimination.
substrateobjectyesThe graph the routes ran over, for the evidence layers this call selected.
tie_notestring|null–A sentence, present when the cut at `limit` lands inside a band of connections that tie on widest-node degree, hop count and path count, naming the band, its size, and that order within it falls back…

No examples provided.

Install

How do I install the Zoning Signal MCP server?

Zoning Signal is a hosted endpoint at https://zoningsignal.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · zoningsignal.com

# add to Claude Code
claude mcp add --transport http com-zoningsignal-observatory 'https://zoningsignal.com/mcp'
Common questions

What is the Zoning Signal MCP server?

Zoning Signal is an MCP server listed in the public MCP registry as com.zoningsignal/observatory. Planning and zoning records: 25 jurisdictions in Lake, Orange, Osceola, Polk, Seminole counties, FL. This page covers its hosted endpoint (https://zoningsignal.com/mcp).

Is the Zoning Signal MCP server safe to use?

Zoning Signal scores 86 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Zoning Signal MCP server expose?

Zoning Signal exposes 18 tools: describe_zoning_signal, list_places, list_corridors, list_patterns, describe_pattern, and 13 more. Their descriptions and schemas cost roughly 4,916 tokens of context every time the server is loaded.

Does the Zoning Signal MCP server require authentication?

No. We connected to Zoning Signal without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the Zoning Signal MCP server still maintained?

Zoning Signal is still listed as active in the MCP registry. We last reached this channel on 7 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What did VerifyMCP test on the Zoning Signal MCP server?

VerifyMCP ran 13 checks on Zoning Signal, covering TLS certificate, Authorization, HTTPS, HSTS header and 9 more. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.