Is Zoning Signal MCP server safe?
Probably. Read the findings first.
Use with care. Some checks failed or could not be verified.
What to know before installing
- highWrite-action tools reachable without authentication
Public scan report
scanner v0.1.5 · 2026-09-19 · same rubric, same numbers if you re-run it
1 high2 low
- –Code scanremote-only server, no package to scann/a
- Live reliabilityremote reachable in 1334ms20/20
- Tool poisoning18 tool descriptions checked13/15
- Auth qualityopen endpoint exposes 1 write-action tools with no auth3/15
- Maintenanceno repository listed3/15
- Maintainer identityverified namespace with website, no repo4/10
Findings (3)
- highWrite-action tools reachable without authentication
auth.open-write - lowUnusually long tool description (over 2,000 characters)
poison.long-descriptiontool trace_connection: …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 (250 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 (169 links, 47 of them stated on both dossiers), and shared named patterns (60 references across 15 patterns; a pattern holds a median of 2 entities and at most 10). That substrate is 162 nodes and 479 links over 69 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 118 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 64% at two hops, 41% at three, 16% at four), and whether the two endpoints are minuted in disjoint jurisdictions, which 15 of 69 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 curator’s hand, or on both. Filter with `evidence` to choose which layers may carry a hop, `crossing` to keep only pairs minuted in different jurisdictions, and `exclude_published` to keep only pairs the observatory’s own briefs have not already put together. Every response reports how many of the 2,346 possible entity pairs the filters matched, splits them by provenance, and accounts for the rest — so a query that discriminated nothing says so in its own output. Note one interaction the response also states: two entities minuted in one room share that room’s jurisdiction, so `crossing: "jurisdiction"` holds no two-hop minuted route, and the minuted routes that satisfy it run three hops or more. What it leaves undetermined, stated on every call: vote outcomes and dispositions, which live in meeting prose and item tables; direction and sequence, since a route is co-occurrence in a record; and the 298 of 376 meeting records not yet linked to an entity, where what the tool covers is what has been curated. In from and sweep modes, rows that share a chain of intermediaries collapse to one finding, which names the rest of its roster in `route_also_joins`. Pair with describe_entity for a node’s full dossier, describe_meeting for the room itself, and semantic_search for prose.…
- lowNo source repository listed
maint.no-repo
Overall 57/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON