Skip to main content
Glama

Server Details

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

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 57 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.1/5.0

Scored across 18 tools

Disambiguation4/5

Each describe_* and list_* tool targets a clearly distinct content type (place, corridor, meeting, pattern, watch, entity), so most selections are unambiguous. The one real overlap is list_meetings versus meeting_index, which both return meeting readings split only by required-parameter behavior — a distinction the descriptions themselves flag, implying even the authors recognize the confusion.

Naming Consistency4/5

The set follows a strong verb_noun convention (describe_*, list_*, get_*, semantic_search, trace_connection, submit_agent_feedback). The lone deviation is meeting_index, a bare noun phrase that breaks the pattern used by its sibling list_meetings.

Tool Count4/5

18 tools is slightly heavy but justified: six-to-seven content types each get a list/describe pair, plus search, tracing, calibration, feedback, and a product overview. Nearly every tool earns its place, though the list/describe symmetry contributes to the count.

Completeness4/5

The surface covers discovery, dossiers, semantic search, graph tracing, calibration scorecards, and agent feedback for a read-only observatory, which is strong lifecycle coverage. The gap is briefs, which are referenced as a first-class artifact (appears_in_briefs, related briefs) yet have no dedicated list_briefs/describe_brief tool, forcing agents to reach them through semantic_search.

Available Tools

18 tools
describe_corridorDescribe CorridorA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
lensNoThe cognitive position to project. Defaults to "synthesis". Canonical lenses: developer, investor, broker, attorney, business, resident, civic-leader. Aliases route to canonical: legal/lawyer/counsel/regulator → attorney; realtor/intermediary → broker; civic/government → civic-leader; homeowner → resident; operator/site-selector → business; builder → developer.synthesis
slugYesThe corridor slug (e.g., "us-27-south-lake"). Use list_corridors to discover available slugs.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
lensYes
slugYes
typeYes
titleNo
claimsYes
freshnessYes
projectionYes
frontmatterNo
record_statusNo
available_lensesNo
lens_was_requestedNo
fell_back_to_synthesisNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already establish that this is read-only and idempotent. The description adds meaningful behavioral context beyond that: the output is a lens-dependent projection, the lens behavior is shared with describe_place, and corridor projections have unique cross-municipal analytical scope.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no filler. The core action is front-loaded, the lens behavior is clarified in the second sentence, and the distinguishing value of corridor projections is stated in the third without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, has an output schema, and its annotations cover safety and idempotency. The description provides sufficient differentiation from sibling tools and enough conceptual framing for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents lens enums, defaults, aliases, and slug discovery via list_corridors. The description's mention of a 'cognitive lens' and 'same lens enum' adds conceptual flavor but not semantic detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb-resource pair: returning the dossier projection for a corridor in a chosen cognitive lens. It also differentiates this tool from its closest sibling by invoking describe_place and explaining that corridor projections capture cross-municipal dialectics that place dossiers cannot.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear contextual guidance by contrasting corridor-level projections with place-level dossiers and referencing describe_place's lens enum/default. It implies when a corridor should be used over a place, though it does not explicitly list exclusions or other alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

describe_entityDescribe EntityA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesThe 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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
slugYes
personNo
named_atNo
schema_idYes
voxel_leadNo
last_activeNo
legislationNo
display_nameYes
entity_classYes
organizationNo
creative_workNo
canonical_roleNo
related_placesNo
provenance_chainNo
related_entitiesNo
appears_in_briefsNo
exhibits_patternsNo
appears_in_watchesNo
appears_in_meetingsNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, covering the safety profile. The description adds valuable context beyond that: the stable schema_id as the canonical cross-page reference, the detailed return structure, and the relationship to trace_connection. This enriches the agent's understanding of what the call returns and how it fits into the broader corpus.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but efficiently organized: purpose first, then a detailed but structured list of return components, then usage guidance and differentiation. Every sentence contributes either to purpose, usage, or differentiation, with no fluff or repetition. The length is justified by the complexity of the output.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the single parameter, full schema coverage, and existing output schema, the description is complete. It explains what the dossier contains, when to use it, and how it differs from trace_connection. The tool is a read operation with annotations covering side effects, so nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides 100% coverage of the single parameter (slug) with examples and a pointer to list_entities. The description adds the Decoder Index hub mention, but that is already present in the schema description. The description does not add new parameter semantics beyond the schema, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Return') and resource ('full structured dossier for a named entity'), enumerates the exact components returned, and explicitly contrasts with trace_connection. An agent immediately knows what this tool does and how it differs from the sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit use cases ('grounding a citation, reasoning about an entity's full role, traversing the entity graph') and directly names the alternative trace_connection with a clear distinction ('what one node touches' vs 'what joins two'). This leaves no ambiguity about when to choose this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

describe_meetingDescribe MeetingA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
lensNoOptional cognitive lens. Default: synthesis (the whole-picture multi-projection view). Canonical lenses: developer, investor, broker, attorney, business, resident, civic-leader. Aliases route to canonical (legal/lawyer/counsel/regulator → attorney; realtor/intermediary → broker; civic/government → civic-leader; homeowner → resident; operator/site-selector → business; builder → developer). When the requested lens is not present in the dossier body, the response falls back to synthesis with fell_back_to_synthesis: true.
slugYesThe meeting slug (e.g., "leesburg-pc-2026-01"). Use list_meetings or meeting_index to discover available slugs.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
lensYes
slugYes
typeYes
titleNo
claimsYes
freshnessYes
projectionYes
frontmatterNo
record_statusYes
available_lensesNo
lens_was_requestedNo
fell_back_to_synthesisNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, the description details the returned blocks (lens-projected body, frontmatter, claims[], freshness, record_status) and, crucially, explains that record_status prevents agents from treating agenda intent as completed action. This is exactly the kind of behavioral context that helps an agent use results correctly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Although longer than a minimal description, every sentence carries information: the first sentence states the core action, subsequent sentences enumerate outputs and end with a practical warning and usage direction. It is front-loaded and free of filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The combination of annotations, a 100%-covered schema, an output schema, and this description gives an agent everything needed to select and call the tool: what it returns, when to use it, how to discover slugs, and the shared lens semantics with siblings. No material gap remains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds value by naming the seven stakeholder lenses and stating the lens enum/default is the same as describe_place/describe_corridor. It also reinforces slug discovery with list_meetings/meeting_index, going slightly beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Return the full dossier projection for a meeting reading' and later says 'Use to ground citations in a specific meeting's reading.' This clearly differentiates describe_meeting from siblings like describe_place/describe_corridor by the meeting resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear use case ('Use to ground citations in a specific meeting's reading') and points to list_meetings/meeting_index for discovery, plus notes the lens enum is shared with describe_place/describe_corridor. It stops short of explicitly saying when not to use sibling describe tools, so it is not a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

describe_patternDescribe PatternA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesThe pattern slug (e.g., "self-storage-canary"). Use current_named_patterns to discover available slugs.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
nameYes
slugYes
scopeNo
claimsYes
exhibitsNo
named_atNo
surfacesNo
audiencesNo
freshnessYes
voxel_leadNo
signal_statusNo
related_briefsNo
related_placesNo
lifecycle_stageNo
provenance_chainNo
related_corridorsNo
defensive_responseNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the tool read-only, idempotent, and non-destructive; the description adds useful context by specifying that it returns the full dossier and canonical stable references. No contradiction exists between the description and the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences front-load the return contract, then usage, then conceptual context. The long list of dossier contents is justified because it defines what 'full dossier' means and helps an agent decide whether to call this tool, though it is slightly verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with an output schema, the description covers purpose, contents, and stable-reference context well. A minor caveat is that the schema references 'current_named_patterns' while the sibling list includes list_patterns, which could slightly confuse slug discovery.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers the single slug parameter 100%, including an example and a pointer to discover available slugs. The description adds little beyond calling it a 'named pattern,' so the schema carries the semantic weight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('Return the full dossier for a named pattern') and enumerates the dossier contents, making the tool's purpose clear. It is implicitly distinct from list_patterns as a detailed single-pattern lookup, but it does not explicitly name or compare against a sibling tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit usage trigger: 'Use when an agent needs the structured pattern data to cite or analyze.' It does not provide exclusions or point to alternatives such as list_patterns for broader discovery, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

describe_placeDescribe PlaceA
Read-onlyIdempotent
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
lensNoThe cognitive position to project. Defaults to "synthesis". Canonical lenses: developer, investor, broker, attorney, business, resident, civic-leader. Aliases route to canonical: legal/lawyer/counsel/land-use-counsel/regulator → attorney; realtor/intermediary/real-estate-broker → broker; civic/government/official/governance → civic-leader; homeowner/citizen → resident; operator/site-selector/occupier → business; builder/land-developer → developer.synthesis
slugYesThe place slug (e.g., "clermont-florida"). Use list_places to discover available slugs.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
lensYes
slugYes
typeYes
titleNo
claimsYes
freshnessYes
projectionYes
frontmatterNo
record_statusNo
available_lensesNo
lens_was_requestedNo
fell_back_to_synthesisNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds real behavioral value by explaining the default 'synthesis projection (the multidimensional view that holds all lenses in superposition and names the dialectics)' and the dispatch behavior when a single lens is passed. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with the core action and default behavior front-loaded in the first sentence, followed by single-lens usage and stakeholder use-cases in the second. Every clause earns its place; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with an output schema present and rich annotations, the description fully covers lens semantics, defaults, and when to use it. Return values need not be explained since an output schema exists. Nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description elevates this by explaining the meaning of the lens parameter (synthesis as the superposition of all lenses vs. a focused cognitive position) and mapping lenses to user stakes. The slug is already well documented in the schema with an example and pointer to list_places.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource — 'Return the dossier projection for a city' — and introduces the tool's distinguishing feature, the cognitive lens that projects different viewpoints. Being place-scoped (vs. corridor/entity/meeting siblings) makes its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It enumerates concrete triggering contexts ('acting on behalf of a user with a specific stake: developer underwriting, investor thesis, broker client argument...'), telling an agent when this tool is the right call. It does not explicitly name sibling tools or state when not to use it, so exclusions are absent, though the provided context is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

describe_watchDescribe WatchA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesThe watch slug (e.g., "lake-bright-council-mar-23"). Use list_watch_items to discover available slugs.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
bodyNo
slugYes
typeYes
scopeNo
titleNo
claimsYes
outcomeYes
triggerNo
subtitleNo
freshnessYes
significanceNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false. The description adds behavioral nuance by detailing the special handling of RESOLVED watches (outcome cluster, lesson surfacing as claim_id) and the compound contract reference. This goes beyond annotations, though it does not discuss side effects or auth, which are already covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense paragraph that front-loads the purpose and then lists return fields, resolved handling, and usage. It is comprehensive but slightly verbose with technical jargon (e.g., 'Phase 11 Citable Contract × Phase 8 Resolution Bridge compound'). No redundant sentences, but could be tighter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity and the presence of an output schema, the description goes beyond what is required by explaining the return structure, the resolved-watch special case, and the citation-grounding use case. It also names the companion discovery tool. An agent has all necessary context to call this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers the single parameter (slug) fully with an example and discovery instruction. The description does not add new semantic detail about the parameter itself; it merely reinforces the discovery method already in the schema. Baseline of 3 applies due to 100% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Return the full dossier for a watch item'. It clearly identifies the resource (watch) and the action (return dossier), and differentiates from siblings by mentioning list_watch_items for discovery. The purpose is unambiguous and distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states when to use this tool: 'Use to ground citations in a specific watch's prediction or resolution' and pairs it with list_watch_items for discovery. This gives a clear use case and directs to the alternative for finding watches, leaving no ambiguity about selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

describe_zoning_signalDescribe Zoning SignalA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYes
built_byNo
surfacesYes
descriptionYes
methodologyYes
artifact_typesYes
regional_scopeNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral guidance beyond annotations: it frames the tool as a canonical context provider and recommends calling it once per session.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler: the first states the purpose and content, the second gives the usage instruction. Every sentence earns its place and the key information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only, idempotent tool with an output schema, the description fully covers what the tool returns, what it contains, and when to call it. Nothing needed for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and schema description coverage is 100%, so there is nothing for the description to add about parameters. The baseline of 4 applies because no parameter documentation is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Return') and names the exact resource ('canonical product description for Zoning Signal'), then lists the content covered. This clearly differentiates it from sibling describe_* tools by tying it to Zoning Signal specifically.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly instructs to 'Call once per session to ground subsequent tool calls in canonical context,' providing clear usage context. It does not explicitly mention when not to use it or name alternatives, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_track_recordGet Track RecordA
Read-onlyIdempotent
Inspect

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. Use when an agent or user wants to assess Zoning Signal's historical forecasting accuracy before citing a current prediction. Misreads are reported.

ParametersJSON Schema
NameRequiredDescriptionDefault
briefNoOptional: scope to a brief slug (e.g., "six-month-board-flip"). Returns the track record for watches linked to a specific named-pattern brief.
corridorNoOptional: scope to a corridor slug (e.g., "us-27-south-lake"). Returns the aggregate track record across the corridor's constituent places.
jurisdictionNoOptional: scope to a single place slug (e.g., "leesburg-florida") for that city's track record only. Use list_cities to discover available slugs.

Output Schema

ParametersJSON Schema
NameRequiredDescription
scopeNo
recentNo
horizonNo
pendingNo
obsoleteNo
surfacesNo
directionalNo
significanceNo
by_confidenceNo
total_resolvedNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive behavior. The description adds transparency by specifying the exact return fields, including a note that 'Misreads are reported,' which indicates the tool includes errors in its output. This goes beyond the annotation baseline and provides useful behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately long but well-organized, starting with the core purpose, then listing return fields, then optional scoping, and ending with usage guidance. It is informative without being rambling, and the key information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only query tool with an output schema, the description covers the purpose, when to use it, what it returns, and optional parameters. It also mentions the reporting of misreads, which is an important nuance. There are no obvious gaps that would prevent an agent from calling it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all three parameters have descriptions. The description adds a bit of context by mentioning optional scoping and the concept of a 'constituent set' for corridors, but it doesn't substantially extend what the schema already documents. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: returning the observatory's public calibration scorecard, which aggregates historical forecasting accuracy metrics. It distinguishes itself from sibling tools by focusing on accuracy data rather than entity descriptions or listings, and explicitly names the types of metrics returned.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes a clear 'Use when' clause: when assessing Zoning Signal's historical forecasting accuracy before citing a prediction. It also notes optional scoping to jurisdiction or corridor. It doesn't explicitly list alternatives or exclusions, but the use case is well-defined and distinct from siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_corridorsList CorridorsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo
corridorsNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds meaningful behavioral context beyond that: only published pages are returned, the result is exhaustive ('every'), and the response includes name, slug, constituent cities, primary axis, and URL. No statement contradicts the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no waste: the action is front-loaded, the middle sentence adds the domain definition needed to differentiate the tool, and the final sentence lists return fields. Every sentence earns its place and the structure is easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only list tool with a provided output schema and comprehensive annotations, the description supplies all remaining relevant context: the corridor concept, published-only scope, exhaustive listing behavior, and the fields returned. Nothing an agent needs to correctly select or invoke this tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters and schema description coverage is 100%, so the baseline for no parameters applies. There are no parameter semantics to clarify, and the description does not need to compensate for any schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('List every published corridor page') and defines what a corridor is ('cross-municipal economic-topology view'), clearly distinguishing this from sibling list tools such as list_places, list_entities, and list_patterns. The scope ('every published') is explicit and immediately usable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly name alternatives or say when not to use the tool, but its definition of corridor as a cross-municipal, cross-jurisdiction concept makes the intended use obvious and separates it from the other list tools. For a zero-parameter tool, this level of contextual routing is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_entitiesList EntitiesA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
placeNoOptional: filter to entities scoped to a specific place (e.g., "leesburg-florida"). Matches entities whose related_places, organization.jurisdiction, legislation.jurisdiction, or creative_work.jurisdiction includes the place slug.
searchNoOptional 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-based code").
entity_classNoFilter by entity class. "Person" = board members, attorneys, applicants (individuals), elected officials. "Organization" = developer firms, law firms, agencies, HOAs, planning consultancies. "Legislation" = state statutes, city ordinances, code sections, design standards. "CreativeWork" = specific projects, case numbers, master plans, infrastructure programs. Omit to return all classes.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo
filtersNo
by_classNo
entitiesNo
surfacesNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as read-only and idempotent, so the description does not need to restate safety. It adds substantial behavioral context: class-specific summary fields, cross-reference counts, and a stable schema_id pattern useful for citation grounding.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and then delivers output shape, filter options, usage guidance, and identifier semantics in a dense but non-redundant structure. Every sentence earns its place, and the alternates are clearly separated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists and annotations are rich, the description is complete for selecting and invoking the tool correctly. It covers output semantics, filters, sibling relationship, and a stable reference convention, so no critical runtime context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and each parameter already has a rich schema description. The tool description only restates the filter names ('entity_class, place (jurisdiction), or search substring') without adding meaningful detail beyond what the schema provides, so it stays at the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'List every named entity in the Decoder Index.' It also defines the resource's role ('smallest citable unit of authority') and names the exact taxonomy returned, which makes it easy to distinguish from siblings like describe_entity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says to use this as 'the discovery surface for the entity graph' and to 'pair with describe_entity for full structured detail.' This gives an agent clear guidance on when to use this tool versus the natural sibling alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_meetingsList MeetingsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
to_dateNoInclusive upper bound (ISO 8601 date). Omit for the latest reading.
from_dateNoInclusive lower bound (ISO 8601 date). Omit to span back to the earliest reading.
jurisdictionNoOptional case-insensitive substring to filter by city (e.g., "minneola"). Omit for all cities.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo
filtersNo
meetingsNo

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context: the response shape matches meeting_index, jurisdiction filtering is a substring (not exact match), and calling with no args returns the full corpus. This goes beyond the annotations and helps the agent understand semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no fluff. The main purpose is front-loaded, then the optional filters, then a clear usage directive. Every sentence earns its place, and the sibling reference is included naturally.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and annotations covering safety, the description covers all essential information: what it does, when to use it, how parameters behave, and how it differs from meeting_index. Nothing critical is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so each parameter is documented. The description adds extra meaning: clarifies that jurisdiction is a case-insensitive substring, and that omitting parameters yields the full corpus. It also implies date range filtering without exact match. This supplements the schema meaningfully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Return meeting readings across all cities'. It differentiates from sibling meeting_index by noting 'Same response shape as meeting_index but with no required parameters', so an agent can immediately see the distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit usage guidance: 'Use when you need to enumerate the full meeting record or scan across cities by date range.' It also explains when to call with no args vs. with a jurisdiction substring, and implicitly contrasts with meeting_index by noting the required-parameter difference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_patternsList PatternsA
Read-onlyIdempotent
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo
patternsNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds meaningful context by stating the tool returns 'every named pattern,' enumerating the returned fields, and explaining the canonical pattern URL. It does not mention pagination or freshness, but the output schema and strong annotation coverage reduce the burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and usage are front-loaded and clear, but the description includes verbose historical and implementation details such as 'Phase 12 renamed it,' 'Phase 9 DefinedTerm canonical home,' and 'loader: getAllContent("pattern").' These add context but are not essential for an agent to call the tool, and the URL pattern is repeated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only list tool with an output schema and rich annotations, the description covers purpose, scope, return fields, canonical URL convention, and sibling relationship. Nothing essential for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The description still adds semantic value by defining what a 'named pattern' is and what fields will be returned, which helps an agent interpret results even without an input schema to document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List every named pattern in the Pattern Atlas.' It defines 'named pattern' concretely with an example and names the sibling describe_pattern, so an agent can distinguish this discovery tool from detail-lookup tools and other list_* siblings without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use as the discovery surface for the Pattern Atlas; pair with describe_pattern for full dossier detail.' This gives clear when-to-use guidance and points to the alternative for deeper detail. It does not explicitly contrast with semantic_search or other list tools, but for a list-all discovery tool the guidance is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_placesList PlacesA
Read-onlyIdempotent
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNoOptional US state name (e.g., "Florida") to filter the result set. Omit for all places across all states.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
citiesYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so the description doesn't need to restate safety. It adds value by enumerating return fields (city, state, slug, signal strength, signal direction, dossier URL), which is behavioral context beyond the schema. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded, but the description includes dense implementation details (loader function getAllContent, URL patterns, rename history) that are not needed for invoking the tool. These extra sentences could be trimmed without losing value for the agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a simple single-param schema, output schema present (which covers return values), and the description summarizing return fields plus usage guidance, the definition is sufficiently complete for an agent to call the tool correctly. Minor gaps like pagination aren't relevant here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the parameter description already covers filtering by state and omission semantics. The tool description repeats 'Optionally filter by state' without adding new constraints or nuance, so it adds no meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'List every place dossier' – a clear verb+resource – and distinguishes this tool from siblings like list_corridors/list_entities by the resource type 'place'. It also names the follow-up describe_place, making its role unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use to discover the available place-level coverage before calling describe_place', giving a clear when-to-use. It does not explicitly exclude alternatives or compare to other list tools, but the context is sufficient for an agent to infer appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_watch_itemsList Watch ItemsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
briefNoOptional: filter to items linked to a specific named-pattern brief.
placeNoOptional: filter to items scoped to a specific place dossier (e.g., "leesburg-florida").
statusNoFilter by lifecycle status. Defaults to 'pending' (active watch items only); pass 'all' for the full corpus including resolved + obsolete entries.
horizonNoOptional: filter to items in the named horizon band. Imminent = ≤14 days; near-term = ≤90 days; structural = >90 days or condition-triggered.
corridorNoOptional: filter to items scoped to a specific corridor (e.g., "us-27-south-lake").

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo
statusNo
watch_itemsNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds meaningful context by defining the content (pending events, hearings, sunsets, milestones) and the filter axes, which goes beyond what annotations state. No hidden behaviors are left undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences. The first states the resource and its contents; the second lists filters and the intended use. No wasted words, and the core purpose is front-loaded before the filter details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only listing tool with zero required parameters, a rich output schema, and fully documented parameters, the description is complete. It tells the agent what is returned, how to filter, and when to use it. Nothing critical is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so every parameter is already documented in the schema, including enum values and defaults. The description restates the filter categories (status, horizon, scope) but adds no new syntax or semantics beyond what the schema provides. Baseline 3 is appropriate because the schema carries the parameter documentation burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ('Return The Watch') and immediately clarifies what that means: a forward calendar of pending events, hearings, sunsets, and milestones. It distinguishes itself from sibling list/describe tools by naming its unique subject (the observatory's watch items) and explicitly listing the filter dimensions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The closing line 'Use to surface what the field is watching from any cognitive position' gives a clear usage context. It does not explicitly contrast with alternatives like describe_watch or list_places, but the purpose is unambiguous enough that an agent can infer when this tool is appropriate versus others.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

meeting_indexMeeting IndexA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYesCity name (e.g., "Clermont"). Case-insensitive.
to_dateNoInclusive upper bound (ISO 8601 date). Omit for the latest reading.
from_dateNoInclusive lower bound (ISO 8601 date). Omit to span back to the earliest reading.

Output Schema

ParametersJSON Schema
NameRequiredDescription
cityNo
countNo
to_dateNo
meetingsNo
from_dateNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description enhances this by explaining the output's nature (plain-English, signal extraction, entity mapping) and the temporal scoping, adding context beyond structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earns its place: function, definition of key term, and usage context. Front-loaded and free of redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only filtered tool with full schema and output schema, the description is complete. It covers purpose, semantic meaning, temporal scope, and usage, with annotations covering safety and idempotency.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with city, to_date, and from_date fully documented. The description adds no new parameter-level detail beyond restating the optional date range, providing only marginal added value over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns meeting readings for a specific city with an optional date range, and defines 'meeting reading' as a plain-English read with signal extraction and entity mapping. This distinguishes it from siblings like list_meetings or describe_meeting by scope and depth.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The final sentence provides an explicit use case: 'Use to drill from a city or corridor into the temporal record.' While it lacks explicit exclusions or named alternatives, the context is clear enough to guide selection among sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

submit_agent_feedbackSubmit Agent FeedbackAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesThe feedback prose itself. Be specific. What were you trying to accomplish? What was missing or wrong? Voice that survives compression. Operators read every submission.
categoryYesBounded categorization. 'gap' = expected capability is missing. 'error' = tool returned wrong/unexpected/malformed result. 'praise' = a surface or tool that worked exceptionally well. 'suggestion' = a refinement (better tool description, additional argument, alternative output shape). 'citation_request' = a claim or fact you want surfaced with a stable citation @id.
about_urlNoOptional: a URL on the observatory this feedback references (e.g., "https://zoningsignal.com/corridors/us-27-south-lake").
about_toolNoOptional: the tool name this feedback is about (e.g., "describe_corridor"). Lets operators rollup feedback per tool.
agent_contextNoOptional: 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.
suggested_resolutionNoOptional: if you have a concrete proposal (a new tool, a renamed parameter, a missing field on a response), name it here.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesTrue when the feedback was accepted and stored.
messageNoHuman-readable acknowledgement.
categoryNoThe category the feedback was filed under.
feedback_idYesStable id for the stored feedback record.
received_atNoISO-8601 timestamp the feedback was recorded.
attached_invocation_countNoHow many prior invocations (from your MCP-Session-Id) were auto-attached for operator context.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations are all false hints, so the description carries the full behavioral burden. It discloses the key side effect—auto-attaching the prior 10 invocations from the MCP-Session-Id—and what happens after submission (operators triage and surface notable feedback). This gives the agent a concrete model of the tool's behavior beyond what any structured field provides.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description opens with the core purpose and includes compact category definitions, but the category parentheticals partially duplicate the schema descriptions. The extra behavioral details about session attachment and operator triage justify the length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a feedback-submission tool with six parameters, complete schema descriptions, and an output schema, this description covers purpose, category selection, and post-submission side effects. Nothing an agent needs to invoke the tool correctly is missing, and the auto-attached invocation context is a critical detail absent from schema and annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each of the six parameters is already well documented in the schema. The description mostly restates the category values rather than adding new parameter-specific meaning; the additional value it provides is behavioral context, not parameter semantics. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Submit feedback'), a recipient ('observatory's operators'), and a subject ('MCP tool surface'). It also distinguishes the tool as the 'active counterpart' to the passive invocation log, which clearly separates it from all sibling read/list/describe tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The category definitions give clear guidance on when to use each type of feedback, and the final sentence frames this as the mechanism for evolving the observatory. It does not explicitly name alternatives or state when not to use it, but no sibling tool competes with this function, so the usage context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

trace_connectionTrace ConnectionA
Read-onlyIdempotent
Inspect

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 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,278 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 347 of 425 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoThe 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.normalized_as.
fromNoOne 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 corpus, so a bare slug resolves unambiguously and needs no type prefix (e.g., "tara-tedrow", "minneola-pz-2025-01", "self-storage-canary"). Omit both endpoints to rank the whole corpus.
limitNoHow 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 `shortest_path_count` names how many. A value outside 1–25 is refused rather than clamped, so selectivity.returned always agrees with what you asked for.
crossingNo"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 rather than from an authored place list.any
evidenceNoWhich 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 one named pattern. This is the substrate choice and the largest single lever on the answer: a restricted set fragments the graph (minuted alone is 5 components), and the response reports substrate.components and a fragmentation note rather than returning a bare no_path.
exclude_publishedNotrue 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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
queryYes
limitsYesAssembled per call. The coverage line is always first: absence in this tool is absence of curation.
no_pathNoPair mode only, when the endpoints are unreachable on the chosen layers. Null everywhere else, including in pair mode when a route exists.
rankingYesThe sort rule, verbatim, labelled a judgement call. Every integer behind it is in each row.
coverageYesWhat 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.
tie_noteNoA 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 to slug.
substrateYesThe graph the routes ran over, for the evidence layers this call selected.
calibrationYesMeasured background rates for the chosen evidence layers: what to read a row against.
connectionsYes
selectivityYesHow much of the population the filters kept: the tool grading its own discrimination.
declared_directNoFrom and sweep modes: one-hop authored pairs, unscored, as slug pairs; describe_entity already returns each one in its dossier context.
declared_direct_noteNoPresent whenever declared_direct carries a row: the call that reads any of them in full.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover read-only/idempotent/closed-world safety, yet the description discloses the ranking logic (widest-waypoint degree), uniqueness and provenance columns, filter interactions (crossing holds no two-hop minuted route), fragmentation reporting instead of bare no_path, and explicit undetermined areas (vote outcomes, direction, the 347 unlinked meeting records). This is far beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and the three modes are front-loaded, and the paragraphs are cleanly ordered (modes, substrate, ranking rationale, filters, limits). It is dense and carries a large volume of corpus statistics that push length well past what tool selection strictly requires, but little is truly redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex, filter-heavy graph tool with a rich output schema, the description supplies the substrate model, ranking semantics, filter interactions, and honest capability limits. An agent has everything needed to call it correctly; return-value detail is rightly left to the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning: evidence is named 'the largest single lever' with fragmentation consequences, crossing's jurisdiction interaction is explained, limit's refuse-not-clamp behavior is stated, and undirected `to`/`from` normalization is called out. It goes past restating the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (trace how two named things connect, report specificity) and immediately enumerates the three operating modes (from+to, from alone, neither). It is clearly distinguishable from the sibling describe_*/list_* tools, which return dossiers and inventories rather than routes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly maps each invocation shape to its purpose ('Give from and to for the shortest route... from alone to rank... neither to rank the corpus'), and names the alternatives (describe_entity, describe_meeting, semantic_search) with the case each serves. When-to-use is fully spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedtrace_connection2 fields changed
      • changedInput schema / properties / evidence / description
        Previous value: -"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 one named pattern. This is the substrate choice and the largest single lever on the answer: a restricted set fragments the graph (minuted alone is 6 components), and the response reports substrate.components and a fragmentation note rather than returning a bare no_path."New value: +"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 one named pattern. This is the substrate choice and the largest single lever on the answer: a restricted set fragments the graph (minuted alone is 5 components), and the response reports substrate.components and a fragmentation note rather than returning a bare no_path."
      • changedOutput schema / properties / selectivity / properties / of_possible / description
        Previous value: -"The candidate pairs this call's arity put in scope: one in pair mode, 68 from a named entity, 2,346 across the corpus."New value: +"The candidate pairs this call's arity put in scope: one in pair mode, 67 from a named entity, 2,278 across the corpus."
  2. 7 tool updates
    • Changeddescribe_corridor4 fields changed
      • changedOutput schema / properties / claims / items / properties / id / description
        Previous value: -"Full claim_id slug — `{scope}.{facet}.{noun}`."New value: +"Full claim_id slug, in the form `{scope}.{facet}.{noun}`."
      • changedOutput schema / properties / freshness / properties / corpus_last_harvested / description
        Previous value: -"YYYY-MM-DD — most recent harvest_date in corpus."New value: +"YYYY-MM-DD: most recent harvest_date in corpus."
      • changedOutput schema / properties / freshness / properties / dossier_last_material_update / description
        Previous value: -"YYYY-MM-DD — when this dossier last changed."New value: +"YYYY-MM-DD: when this dossier last changed."
      • changedOutput schema / properties / freshness / properties / page_last_rendered / description
        Previous value: -"ISO 8601 — request-time stamp."New value: +"ISO 8601: request-time stamp."
    • Changeddescribe_meeting4 fields changed
      • changedOutput schema / properties / claims / items / properties / id / description
        Previous value: -"Full claim_id slug — `{scope}.{facet}.{noun}`."New value: +"Full claim_id slug, in the form `{scope}.{facet}.{noun}`."
      • changedOutput schema / properties / freshness / properties / corpus_last_harvested / description
        Previous value: -"YYYY-MM-DD — most recent harvest_date in corpus."New value: +"YYYY-MM-DD: most recent harvest_date in corpus."
      • changedOutput schema / properties / freshness / properties / dossier_last_material_update / description
        Previous value: -"YYYY-MM-DD — when this dossier last changed."New value: +"YYYY-MM-DD: when this dossier last changed."
      • changedOutput schema / properties / freshness / properties / page_last_rendered / description
        Previous value: -"ISO 8601 — request-time stamp."New value: +"ISO 8601: request-time stamp."
    • Changeddescribe_pattern4 fields changed
      • changedOutput schema / properties / claims / items / properties / id / description
        Previous value: -"Full claim_id slug — `{scope}.{facet}.{noun}`."New value: +"Full claim_id slug, in the form `{scope}.{facet}.{noun}`."
      • changedOutput schema / properties / freshness / properties / corpus_last_harvested / description
        Previous value: -"YYYY-MM-DD — most recent harvest_date in corpus."New value: +"YYYY-MM-DD: most recent harvest_date in corpus."
      • changedOutput schema / properties / freshness / properties / dossier_last_material_update / description
        Previous value: -"YYYY-MM-DD — when this dossier last changed."New value: +"YYYY-MM-DD: when this dossier last changed."
      • changedOutput schema / properties / freshness / properties / page_last_rendered / description
        Previous value: -"ISO 8601 — request-time stamp."New value: +"ISO 8601: request-time stamp."
    • Changeddescribe_place4 fields changed
      • changedOutput schema / properties / claims / items / properties / id / description
        Previous value: -"Full claim_id slug — `{scope}.{facet}.{noun}`."New value: +"Full claim_id slug, in the form `{scope}.{facet}.{noun}`."
      • changedOutput schema / properties / freshness / properties / corpus_last_harvested / description
        Previous value: -"YYYY-MM-DD — most recent harvest_date in corpus."New value: +"YYYY-MM-DD: most recent harvest_date in corpus."
      • changedOutput schema / properties / freshness / properties / dossier_last_material_update / description
        Previous value: -"YYYY-MM-DD — when this dossier last changed."New value: +"YYYY-MM-DD: when this dossier last changed."
      • changedOutput schema / properties / freshness / properties / page_last_rendered / description
        Previous value: -"ISO 8601 — request-time stamp."New value: +"ISO 8601: request-time stamp."
    • Changeddescribe_watch4 fields changed
      • changedOutput schema / properties / claims / items / properties / id / description
        Previous value: -"Full claim_id slug — `{scope}.{facet}.{noun}`."New value: +"Full claim_id slug, in the form `{scope}.{facet}.{noun}`."
      • changedOutput schema / properties / freshness / properties / corpus_last_harvested / description
        Previous value: -"YYYY-MM-DD — most recent harvest_date in corpus."New value: +"YYYY-MM-DD: most recent harvest_date in corpus."
      • changedOutput schema / properties / freshness / properties / dossier_last_material_update / description
        Previous value: -"YYYY-MM-DD — when this dossier last changed."New value: +"YYYY-MM-DD: when this dossier last changed."
      • changedOutput schema / properties / freshness / properties / page_last_rendered / description
        Previous value: -"ISO 8601 — request-time stamp."New value: +"ISO 8601: request-time stamp."
    • Changedsubmit_agent_feedback2 fields changed
      • changedInput schema / properties / agent_context / description
        Previous value: -"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."New value: +"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."
      • changedInput schema / properties / suggested_resolution / description
        Previous value: -"Optional: if you have a concrete proposal — a new tool, a renamed parameter, a missing field on a response — name it here."New value: +"Optional: if you have a concrete proposal (a new tool, a renamed parameter, a missing field on a response), name it here."
    • Changedtrace_connection17 fields changed
      • changedInput schema / properties / crossing / description
        Previous value: -"\"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 rather than from an authored place list."New value: +"\"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 rather than from an authored place list."
      • changedInput schema / properties / exclude_published / description
        Previous value: -"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."New value: +"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."
      • changedInput schema / properties / from / description
        Previous value: -"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 corpus, so a bare slug resolves unambiguously and needs no type prefix (e.g., \"tara-tedrow\", \"minneola-pz-2025-01\", \"self-storage-canary\"). Omit both endpoints to rank the whole corpus."New value: +"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 corpus, so a bare slug resolves unambiguously and needs no type prefix (e.g., \"tara-tedrow\", \"minneola-pz-2025-01\", \"self-storage-canary\"). Omit both endpoints to rank the whole corpus."
      • changedOutput schema / properties / calibration / description
        Previous value: -"Measured background rates for the chosen evidence layers — what to read a row against."New value: +"Measured background rates for the chosen evidence layers: what to read a row against."
      • changedOutput schema / properties / connections / items / properties / evidence_used / description
        Previous value: -"The union of layers across ALL shortest routes between these two — the honest scope for a row that reports how many of them there are. The representative route’s own layers are on its hops."New value: +"The union of layers across ALL shortest routes between these two: the honest scope for a row that reports how many of them there are. The representative route’s own layers are on its hops."
      • changedOutput schema / properties / connections / items / properties / routes / items / properties / hops / items / properties / basis / description
        Previous value: -"A sentence naming what kind of knowing this hop is — a record, an authored claim, or a curated grouping."New value: +"A sentence naming what kind of knowing this hop is: a record, an authored claim, or a curated grouping."
      • changedOutput schema / properties / connections / items / properties / undetermined / description
        Previous value: -"Read across all shortest routes, matching evidence_used — a row that reports eight routes and qualifies one would under-report what it leaves open."New value: +"Read across all shortest routes, matching evidence_used. A row that reports eight routes and qualifies one would under-report what it leaves open."
      • changedOutput schema / properties / connections / items / properties / widest_node / description
        Previous value: -"The WIDEST node the route passes through, named rather than scored — the primary ranking key, and exactly the narrowest such node any shortest route achieves. Computed by a dynamic program over the whole predecessor DAG, so it is exact however many routes are displayed. Null at one hop."New value: +"The WIDEST node the route passes through, named rather than scored. It is the primary ranking key, and exactly the narrowest such node any shortest route achieves. Computed by a dynamic program over the whole predecessor DAG, so it is exact however many routes are displayed. Null at one hop."
      • changedOutput schema / properties / declared_direct / description
        Previous value: -"From and sweep modes: one-hop authored pairs, unscored, as slug pairs — describe_entity already returns each one in its dossier context."New value: +"From and sweep modes: one-hop authored pairs, unscored, as slug pairs; describe_entity already returns each one in its dossier context."
      • changedOutput schema / properties / declared_direct / items / properties / authored_on / description
        Previous value: -"The dossiers carrying the reference — one slug for a one-way claim, both for a reciprocal one."New value: +"The dossiers carrying the reference: one slug for a one-way claim, both for a reciprocal one."
      • changedOutput schema / properties / no_path / properties / fragmentation_note / description
        Previous value: -"Present when the chosen layers fragment the substrate — a full-substrate retry may join the two."New value: +"Present when the chosen layers fragment the substrate; a full-substrate retry may join the two."
      • changedOutput schema / properties / query / properties / mode / description
        Previous value: -"Set by arity — both endpoints, one, or neither. The scoring path is identical in all three."New value: +"Set by arity: both endpoints, one, or neither. The scoring path is identical in all three."
      • changedOutput schema / properties / selectivity / description
        Previous value: -"How much of the population the filters kept — the tool grading its own discrimination."New value: +"How much of the population the filters kept: the tool grading its own discrimination."
      • changedOutput schema / properties / selectivity / properties / by_provenance / description
        Previous value: -"Matched pairs by how the join is known. A zero on `record` says a filter has excluded the evidentiary layer — which `crossing: \"jurisdiction\"` does at two hops."New value: +"Matched pairs by how the join is known. A zero on `record` says a filter has excluded the evidentiary layer, which `crossing: \"jurisdiction\"` does at two hops."
      • changedOutput schema / properties / selectivity / properties / distinct_routes / description
        Previous value: -"Distinct chains of intermediaries among the matched pairs — findings behind pairs."New value: +"Distinct chains of intermediaries among the matched pairs: findings behind pairs."
      • changedOutput schema / properties / selectivity / properties / of_possible / description
        Previous value: -"The candidate pairs this call's arity put in scope — one in pair mode, 68 from a named entity, 2,346 across the corpus."New value: +"The candidate pairs this call's arity put in scope: one in pair mode, 68 from a named entity, 2,346 across the corpus."
      • changedOutput schema / properties / tie_note / description
        Previous value: -"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 to slug."New value: +"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 to slug."
  3. 1 tool update
    • Changedsemantic_search10 fields changed
      • changedInput schema / properties / q / description
        Previous value: -"The natural-language query. A phrase, an entity name, or a thematic concept all work. Asymmetric query-time embedding handles short queries cleanly. Maximum 500 characters."New value: +"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."
      • addedOutput schema / properties / coverage
        Added value: +{
        +  "description": "What the corpus covers; present with note. Same object as the coverage resource.",
        +  "type": "object"
        +}
      • addedOutput schema / properties / evidence
        Added value: +{
        +  "description": "strong: a top record contains the query terms or closely resembles it (cosine >= 0.5). weak: records only loosely resemble it. none: nothing returned.",
        +  "enum": [
        +    "strong",
        +    "weak",
        +    "none"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / hits / items / properties / matched
        Added value: +{
        +  "description": "Which rankings found the record: its title holds every query term, its text does, and/or it is among the 50 nearest by meaning.",
        +  "items": {
        +    "enum": [
        +      "title",
        +      "text",
        +      "meaning"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / hits / items / properties / similarity / description
        Added value: +"True cosine between the query and the record embedding."
      • changedOutput schema / properties / hits / items / required
        Previous value: -[
        -  "slug",
        -  "type",
        -  "title",
        -  "similarity",
        -  "url"
        -]New value: +[
        +  "slug",
        +  "type",
        +  "title",
        +  "similarity",
        +  "url",
        +  "matched"
        +]
      • addedOutput schema / properties / note
        Added value: +{
        +  "description": "Present when scope is outside, evidence is weak, or nothing matched.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / scope
        Added value: +{
        +  "description": "Whether the query names a covered place, a place outside coverage, or no place.",
        +  "enum": [
        +    "covered",
        +    "outside",
        +    "unknown"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / weak_match
        Added value: +{
        +  "deprecated": true,
        +  "description": "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.",
        +  "type": "boolean"
        +}
      • addedOutput schema / required
        Added value: +[
        +  "query",
        +  "hits",
        +  "count",
        +  "scope",
        +  "evidence"
        +]
  4. 1 tool update
    • Addedtrace_connection
  5. 4 tool updates
    • Changeddescribe_pattern3 fields changed
      • removedOutput schema / properties / signal_status / properties / confidence_pips
        Removed value: -{
        -  "maximum": 5,
        -  "minimum": 0,
        -  "type": "number"
        -}
      • removedOutput schema / properties / signal_status / properties / direction
        Removed value: -{
        -  "enum": [
        -    "rising",
        -    "stable",
        -    "cooling"
        -  ],
        -  "type": "string"
        -}
      • removedOutput schema / properties / signal_status / properties / score
        Removed value: -{
        -  "maximum": 100,
        -  "minimum": 0,
        -  "type": "number"
        -}
    • Changeddescribe_watch1 field changed
      • removedOutput schema / properties / significance / properties / confidence_pips
        Removed value: -{
        -  "type": "number"
        -}
    • Changedlist_patterns4 fields changed
      • addedOutput schema / properties / patterns / items / properties / confidence
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / patterns / items / properties / direction
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / patterns / items / properties / horizon
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / patterns / items / properties / signal_score
        Removed value: -{
        -  "type": "number"
        -}
    • Changedlist_places2 fields changed
      • removedOutput schema / properties / cities / items / properties / signal_direction
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / cities / items / properties / signal_strength
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
  6. 3 tool updates
    • Removedcurrent_named_patterns
    • Removedlist_cities
    • Changedsubmit_agent_feedback1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "attached_invocation_count": {
        +      "description": "How many prior invocations (from your MCP-Session-Id) were auto-attached for operator context.",
        +      "type": "number"
        +    },
        +    "category": {
        +      "description": "The category the feedback was filed under.",
        +      "type": "string"
        +    },
        +    "feedback_id": {
        +      "description": "Stable id for the stored feedback record.",
        +      "type": "string"
        +    },
        +    "message": {
        +      "description": "Human-readable acknowledgement.",
        +      "type": "string"
        +    },
        +    "ok": {
        +      "description": "True when the feedback was accepted and stored.",
        +      "type": "boolean"
        +    },
        +    "received_at": {
        +      "description": "ISO-8601 timestamp the feedback was recorded.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "ok",
        +    "feedback_id"
        +  ],
        +  "type": "object"
        +}
  7. 1 tool update
    • Addedsubmit_agent_feedback
  8. 3 tool updates
    • Changeddescribe_corridor2 fields changed
      • changedInput schema / properties / lens / description
        Previous value: -"The cognitive position to project. Defaults to \"synthesis\". Single-lens values surface a focused projection."New value: +"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/regulator → attorney; realtor/intermediary → broker; civic/government → civic-leader; homeowner → resident; operator/site-selector → business; builder → developer."
      • changedInput schema / properties / lens / enum
        Previous value: -[
        -  "synthesis",
        -  "developer",
        -  "investor",
        -  "resident",
        -  "business",
        -  "civic",
        -  "infrastructure",
        -  "policy"
        -]New value: +[
        +  "synthesis",
        +  "developer",
        +  "investor",
        +  "broker",
        +  "attorney",
        +  "business",
        +  "resident",
        +  "civic-leader"
        +]
    • Changeddescribe_meeting2 fields changed
      • changedInput schema / properties / lens / description
        Previous value: -"Optional cognitive lens. Default: synthesis (the whole-picture multi-projection view). Seven stakeholder lenses available: developer, investor, resident, business, civic, infrastructure, policy. When the requested lens is not present in the dossier body, the response falls back to synthesis with fell_back_to_synthesis: true."New value: +"Optional cognitive lens. Default: synthesis (the whole-picture multi-projection view). Canonical lenses: developer, investor, broker, attorney, business, resident, civic-leader. Aliases route to canonical (legal/lawyer/counsel/regulator → attorney; realtor/intermediary → broker; civic/government → civic-leader; homeowner → resident; operator/site-selector → business; builder → developer). When the requested lens is not present in the dossier body, the response falls back to synthesis with fell_back_to_synthesis: true."
      • changedInput schema / properties / lens / enum
        Previous value: -[
        -  "synthesis",
        -  "developer",
        -  "investor",
        -  "resident",
        -  "business",
        -  "civic",
        -  "infrastructure",
        -  "policy"
        -]New value: +[
        +  "synthesis",
        +  "developer",
        +  "investor",
        +  "broker",
        +  "attorney",
        +  "business",
        +  "resident",
        +  "civic-leader"
        +]
    • Changeddescribe_place3 fields changed
      • changedInput schema / properties / lens / description
        Previous value: -"The cognitive position to project. Defaults to \"synthesis\". Single-lens values surface a focused projection from a specific stakeholder position."New value: +"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/land-use-counsel/regulator → attorney; realtor/intermediary/real-estate-broker → broker; civic/government/official/governance → civic-leader; homeowner/citizen → resident; operator/site-selector/occupier → business; builder/land-developer → developer."
      • changedInput schema / properties / lens / enum
        Previous value: -[
        -  "synthesis",
        -  "developer",
        -  "investor",
        -  "resident",
        -  "business",
        -  "civic",
        -  "infrastructure",
        -  "policy"
        -]New value: +[
        +  "synthesis",
        +  "developer",
        +  "investor",
        +  "broker",
        +  "attorney",
        +  "business",
        +  "resident",
        +  "civic-leader"
        +]
      • changedInput schema / properties / slug / description
        Previous value: -"The place slug (e.g., \"clermont-florida\"). Use list_cities to discover available slugs."New value: +"The place slug (e.g., \"clermont-florida\"). Use list_places to discover available slugs."
  9. 18 tool updates
    • Changedcurrent_named_patterns1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "count": {
        +      "type": "number"
        +    },
        +    "patterns": {
        +      "items": {
        +        "properties": {
        +          "audiences": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "canonical_url": {
        +            "type": "string"
        +          },
        +          "direction": {
        +            "type": "string"
        +          },
        +          "exhibits_count": {
        +            "type": "number"
        +          },
        +          "lifecycle_stage": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "pattern_url": {
        +            "type": "string"
        +          },
        +          "related_briefs": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "signal_score": {
        +            "type": "number"
        +          },
        +          "slug": {
        +            "type": "string"
        +          },
        +          "spatial": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "voxel_lead": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "slug",
        +          "name",
        +          "pattern_url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changeddescribe_corridor1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "available_lenses": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "claims": {
        +      "items": {
        +        "properties": {
        +          "citations": {
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "type": "string"
        +                },
        +                "url": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "facet": {
        +            "description": "Structural facet category.",
        +            "enum": [
        +              "primary_force",
        +              "voxel_lead",
        +              "exhibit",
        +              "defensive_response",
        +              "lesson",
        +              "notable_decision",
        +              "voting_record"
        +            ],
        +            "type": "string"
        +          },
        +          "id": {
        +            "description": "Full claim_id slug — `{scope}.{facet}.{noun}`.",
        +            "type": "string"
        +          },
        +          "schema_id": {
        +            "description": "Full @id URL for JSON-LD reference.",
        +            "type": "string"
        +          },
        +          "text": {
        +            "description": "Claim text, verbatim.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "facet",
        +          "text",
        +          "schema_id",
        +          "citations"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "fell_back_to_synthesis": {
        +      "type": "boolean"
        +    },
        +    "freshness": {
        +      "properties": {
        +        "corpus_last_harvested": {
        +          "description": "YYYY-MM-DD — most recent harvest_date in corpus.",
        +          "type": "string"
        +        },
        +        "dossier_last_material_update": {
        +          "description": "YYYY-MM-DD — when this dossier last changed.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "page_last_rendered": {
        +          "description": "ISO 8601 — request-time stamp.",
        +          "type": "string"
        +        },
        +        "site_build_committed": {
        +          "description": "Short git SHA.",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "corpus_last_harvested",
        +        "page_last_rendered",
        +        "site_build_committed"
        +      ],
        +      "type": "object"
        +    },
        +    "frontmatter": {
        +      "type": "object"
        +    },
        +    "lens": {
        +      "type": "string"
        +    },
        +    "lens_was_requested": {
        +      "type": "string"
        +    },
        +    "projection": {
        +      "type": "string"
        +    },
        +    "record_status": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "slug": {
        +      "type": "string"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "type": {
        +      "enum": [
        +        "corridor"
        +      ],
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "slug",
        +    "type",
        +    "url",
        +    "lens",
        +    "projection",
        +    "claims",
        +    "freshness"
        +  ],
        +  "type": "object"
        +}
    • Changeddescribe_entity1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "appears_in_briefs": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "appears_in_meetings": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "appears_in_watches": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "canonical_role": {
        +      "type": "string"
        +    },
        +    "creative_work": {
        +      "type": "object"
        +    },
        +    "display_name": {
        +      "type": "string"
        +    },
        +    "entity_class": {
        +      "type": "string"
        +    },
        +    "exhibits_patterns": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "last_active": {
        +      "type": "string"
        +    },
        +    "legislation": {
        +      "type": "object"
        +    },
        +    "named_at": {
        +      "type": "string"
        +    },
        +    "organization": {
        +      "type": "object"
        +    },
        +    "person": {
        +      "type": "object"
        +    },
        +    "provenance_chain": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "related_entities": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "related_places": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "schema_id": {
        +      "type": "string"
        +    },
        +    "slug": {
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    },
        +    "voxel_lead": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "slug",
        +    "display_name",
        +    "entity_class",
        +    "url",
        +    "schema_id"
        +  ],
        +  "type": "object"
        +}
    • Changeddescribe_meeting1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "available_lenses": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "claims": {
        +      "items": {
        +        "properties": {
        +          "citations": {
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "type": "string"
        +                },
        +                "url": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "facet": {
        +            "description": "Structural facet category.",
        +            "enum": [
        +              "primary_force",
        +              "voxel_lead",
        +              "exhibit",
        +              "defensive_response",
        +              "lesson",
        +              "notable_decision",
        +              "voting_record"
        +            ],
        +            "type": "string"
        +          },
        +          "id": {
        +            "description": "Full claim_id slug — `{scope}.{facet}.{noun}`.",
        +            "type": "string"
        +          },
        +          "schema_id": {
        +            "description": "Full @id URL for JSON-LD reference.",
        +            "type": "string"
        +          },
        +          "text": {
        +            "description": "Claim text, verbatim.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "facet",
        +          "text",
        +          "schema_id",
        +          "citations"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "fell_back_to_synthesis": {
        +      "type": "boolean"
        +    },
        +    "freshness": {
        +      "properties": {
        +        "corpus_last_harvested": {
        +          "description": "YYYY-MM-DD — most recent harvest_date in corpus.",
        +          "type": "string"
        +        },
        +        "dossier_last_material_update": {
        +          "description": "YYYY-MM-DD — when this dossier last changed.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "page_last_rendered": {
        +          "description": "ISO 8601 — request-time stamp.",
        +          "type": "string"
        +        },
        +        "site_build_committed": {
        +          "description": "Short git SHA.",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "corpus_last_harvested",
        +        "page_last_rendered",
        +        "site_build_committed"
        +      ],
        +      "type": "object"
        +    },
        +    "frontmatter": {
        +      "type": "object"
        +    },
        +    "lens": {
        +      "type": "string"
        +    },
        +    "lens_was_requested": {
        +      "type": "string"
        +    },
        +    "projection": {
        +      "type": "string"
        +    },
        +    "record_status": {
        +      "properties": {
        +        "meeting_status": {
        +          "enum": [
        +            "scheduled",
        +            "convened",
        +            "cancelled"
        +          ],
        +          "type": "string"
        +        },
        +        "minutes_available": {
        +          "type": "boolean"
        +        },
        +        "outcome_status": {
        +          "enum": [
        +            "pending",
        +            "recorded"
        +          ],
        +          "type": "string"
        +        },
        +        "record_type": {
        +          "enum": [
        +            "agenda",
        +            "minutes"
        +          ],
        +          "type": "string"
        +        },
        +        "vote_final": {
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "record_type",
        +        "meeting_status",
        +        "outcome_status",
        +        "minutes_available",
        +        "vote_final"
        +      ],
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "slug": {
        +      "type": "string"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "type": {
        +      "enum": [
        +        "meeting"
        +      ],
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "slug",
        +    "type",
        +    "url",
        +    "lens",
        +    "projection",
        +    "claims",
        +    "freshness",
        +    "record_status"
        +  ],
        +  "type": "object"
        +}
    • Changeddescribe_pattern1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "audiences": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "claims": {
        +      "items": {
        +        "properties": {
        +          "citations": {
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "type": "string"
        +                },
        +                "url": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "facet": {
        +            "description": "Structural facet category.",
        +            "enum": [
        +              "primary_force",
        +              "voxel_lead",
        +              "exhibit",
        +              "defensive_response",
        +              "lesson",
        +              "notable_decision",
        +              "voting_record"
        +            ],
        +            "type": "string"
        +          },
        +          "id": {
        +            "description": "Full claim_id slug — `{scope}.{facet}.{noun}`.",
        +            "type": "string"
        +          },
        +          "schema_id": {
        +            "description": "Full @id URL for JSON-LD reference.",
        +            "type": "string"
        +          },
        +          "text": {
        +            "description": "Claim text, verbatim.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "facet",
        +          "text",
        +          "schema_id",
        +          "citations"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "defensive_response": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "exhibits": {
        +      "items": {
        +        "properties": {
        +          "date": {
        +            "type": "string"
        +          },
        +          "detected_via": {
        +            "type": "string"
        +          },
        +          "note": {
        +            "type": "string"
        +          },
        +          "source": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "freshness": {
        +      "properties": {
        +        "corpus_last_harvested": {
        +          "description": "YYYY-MM-DD — most recent harvest_date in corpus.",
        +          "type": "string"
        +        },
        +        "dossier_last_material_update": {
        +          "description": "YYYY-MM-DD — when this dossier last changed.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "page_last_rendered": {
        +          "description": "ISO 8601 — request-time stamp.",
        +          "type": "string"
        +        },
        +        "site_build_committed": {
        +          "description": "Short git SHA.",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "corpus_last_harvested",
        +        "page_last_rendered",
        +        "site_build_committed"
        +      ],
        +      "type": "object"
        +    },
        +    "lifecycle_stage": {
        +      "type": "string"
        +    },
        +    "name": {
        +      "type": "string"
        +    },
        +    "named_at": {
        +      "type": "string"
        +    },
        +    "provenance_chain": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "related_briefs": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "related_corridors": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "related_places": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "scope": {
        +      "properties": {
        +        "corridors": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "spatial": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "temporal": {
        +          "type": "string"
        +        },
        +        "topical": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "signal_status": {
        +      "properties": {
        +        "confidence": {
        +          "enum": [
        +            "low",
        +            "medium",
        +            "high",
        +            "very-high"
        +          ],
        +          "type": "string"
        +        },
        +        "confidence_pips": {
        +          "maximum": 5,
        +          "minimum": 0,
        +          "type": "number"
        +        },
        +        "direction": {
        +          "enum": [
        +            "rising",
        +            "stable",
        +            "cooling"
        +          ],
        +          "type": "string"
        +        },
        +        "horizon": {
        +          "type": "string"
        +        },
        +        "score": {
        +          "maximum": 100,
        +          "minimum": 0,
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "slug": {
        +      "type": "string"
        +    },
        +    "surfaces": {
        +      "properties": {
        +        "defined_term_id": {
        +          "type": "string"
        +        },
        +        "defined_term_set": {
        +          "type": "string"
        +        },
        +        "dossier": {
        +          "type": "string"
        +        },
        +        "list_in_atlas": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "url": {
        +      "type": "string"
        +    },
        +    "voxel_lead": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "slug",
        +    "name",
        +    "url",
        +    "claims",
        +    "freshness"
        +  ],
        +  "type": "object"
        +}
    • Changeddescribe_place1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "available_lenses": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "claims": {
        +      "items": {
        +        "properties": {
        +          "citations": {
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "type": "string"
        +                },
        +                "url": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "facet": {
        +            "description": "Structural facet category.",
        +            "enum": [
        +              "primary_force",
        +              "voxel_lead",
        +              "exhibit",
        +              "defensive_response",
        +              "lesson",
        +              "notable_decision",
        +              "voting_record"
        +            ],
        +            "type": "string"
        +          },
        +          "id": {
        +            "description": "Full claim_id slug — `{scope}.{facet}.{noun}`.",
        +            "type": "string"
        +          },
        +          "schema_id": {
        +            "description": "Full @id URL for JSON-LD reference.",
        +            "type": "string"
        +          },
        +          "text": {
        +            "description": "Claim text, verbatim.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "facet",
        +          "text",
        +          "schema_id",
        +          "citations"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "fell_back_to_synthesis": {
        +      "type": "boolean"
        +    },
        +    "freshness": {
        +      "properties": {
        +        "corpus_last_harvested": {
        +          "description": "YYYY-MM-DD — most recent harvest_date in corpus.",
        +          "type": "string"
        +        },
        +        "dossier_last_material_update": {
        +          "description": "YYYY-MM-DD — when this dossier last changed.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "page_last_rendered": {
        +          "description": "ISO 8601 — request-time stamp.",
        +          "type": "string"
        +        },
        +        "site_build_committed": {
        +          "description": "Short git SHA.",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "corpus_last_harvested",
        +        "page_last_rendered",
        +        "site_build_committed"
        +      ],
        +      "type": "object"
        +    },
        +    "frontmatter": {
        +      "type": "object"
        +    },
        +    "lens": {
        +      "type": "string"
        +    },
        +    "lens_was_requested": {
        +      "type": "string"
        +    },
        +    "projection": {
        +      "type": "string"
        +    },
        +    "record_status": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "slug": {
        +      "type": "string"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "type": {
        +      "enum": [
        +        "place"
        +      ],
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "slug",
        +    "type",
        +    "url",
        +    "lens",
        +    "projection",
        +    "claims",
        +    "freshness"
        +  ],
        +  "type": "object"
        +}
    • Changeddescribe_watch1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "body": {
        +      "type": "string"
        +    },
        +    "claims": {
        +      "items": {
        +        "properties": {
        +          "citations": {
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "type": "string"
        +                },
        +                "url": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "facet": {
        +            "description": "Structural facet category.",
        +            "enum": [
        +              "primary_force",
        +              "voxel_lead",
        +              "exhibit",
        +              "defensive_response",
        +              "lesson",
        +              "notable_decision",
        +              "voting_record"
        +            ],
        +            "type": "string"
        +          },
        +          "id": {
        +            "description": "Full claim_id slug — `{scope}.{facet}.{noun}`.",
        +            "type": "string"
        +          },
        +          "schema_id": {
        +            "description": "Full @id URL for JSON-LD reference.",
        +            "type": "string"
        +          },
        +          "text": {
        +            "description": "Claim text, verbatim.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "facet",
        +          "text",
        +          "schema_id",
        +          "citations"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "freshness": {
        +      "properties": {
        +        "corpus_last_harvested": {
        +          "description": "YYYY-MM-DD — most recent harvest_date in corpus.",
        +          "type": "string"
        +        },
        +        "dossier_last_material_update": {
        +          "description": "YYYY-MM-DD — when this dossier last changed.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "page_last_rendered": {
        +          "description": "ISO 8601 — request-time stamp.",
        +          "type": "string"
        +        },
        +        "site_build_committed": {
        +          "description": "Short git SHA.",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "corpus_last_harvested",
        +        "page_last_rendered",
        +        "site_build_committed"
        +      ],
        +      "type": "object"
        +    },
        +    "outcome": {
        +      "properties": {
        +        "citations": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "lesson": {
        +          "type": "string"
        +        },
        +        "outcome_summary": {
        +          "type": "string"
        +        },
        +        "outcome_type": {
        +          "type": "string"
        +        },
        +        "prediction_assessment": {
        +          "type": "object"
        +        },
        +        "resolved_at_meeting": {
        +          "type": "string"
        +        },
        +        "resolved_date": {
        +          "type": "string"
        +        },
        +        "status": {
        +          "enum": [
        +            "pending",
        +            "resolved",
        +            "obsolete"
        +          ],
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "status"
        +      ],
        +      "type": "object"
        +    },
        +    "scope": {
        +      "properties": {
        +        "brief": {
        +          "type": "string"
        +        },
        +        "corridor": {
        +          "type": "string"
        +        },
        +        "pattern": {
        +          "type": "string"
        +        },
        +        "place": {
        +          "type": "string"
        +        },
        +        "region": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "significance": {
        +      "properties": {
        +        "confidence": {
        +          "type": "string"
        +        },
        +        "confidence_pips": {
        +          "type": "number"
        +        },
        +        "horizon": {
        +          "type": "string"
        +        },
        +        "score": {
        +          "type": "number"
        +        },
        +        "why_it_matters_voxel": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "slug": {
        +      "type": "string"
        +    },
        +    "subtitle": {
        +      "type": "string"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "trigger": {
        +      "properties": {
        +        "condition": {
        +          "type": "string"
        +        },
        +        "date": {
        +          "type": "string"
        +        },
        +        "type": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "type": {
        +      "enum": [
        +        "watch"
        +      ],
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "slug",
        +    "type",
        +    "url",
        +    "outcome",
        +    "claims",
        +    "freshness"
        +  ],
        +  "type": "object"
        +}
    • Changeddescribe_zoning_signal1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "artifact_types": {
        +      "items": {
        +        "properties": {
        +          "purpose": {
        +            "type": "string"
        +          },
        +          "type": {
        +            "type": "string"
        +          },
        +          "url_pattern": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "type",
        +          "url_pattern",
        +          "purpose"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "built_by": {
        +      "properties": {
        +        "studio": {
        +          "type": "string"
        +        },
        +        "url": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "description": {
        +      "type": "string"
        +    },
        +    "methodology": {
        +      "properties": {
        +        "cognitive_lenses": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "default_projection": {
        +          "type": "string"
        +        },
        +        "summary": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "name": {
        +      "type": "string"
        +    },
        +    "regional_scope": {
        +      "properties": {
        +        "cities": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "primary_region": {
        +          "type": "string"
        +        },
        +        "state": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "surfaces": {
        +      "properties": {
        +        "decoder_index": {
        +          "type": "string"
        +        },
        +        "llms_full": {
        +          "type": "string"
        +        },
        +        "llms_index": {
        +          "type": "string"
        +        },
        +        "mcp_endpoint": {
        +          "type": "string"
        +        },
        +        "mcp_manifest": {
        +          "type": "string"
        +        },
        +        "patterns_atlas": {
        +          "type": "string"
        +        },
        +        "schema_url": {
        +          "type": "string"
        +        },
        +        "site": {
        +          "type": "string"
        +        },
        +        "sitemap": {
        +          "type": "string"
        +        },
        +        "status_url": {
        +          "type": "string"
        +        },
        +        "track_record": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "site",
        +        "mcp_endpoint",
        +        "status_url",
        +        "schema_url"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "name",
        +    "description",
        +    "artifact_types",
        +    "methodology",
        +    "surfaces"
        +  ],
        +  "type": "object"
        +}
    • Changedget_track_record1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "by_confidence": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "directional": {
        +      "properties": {
        +        "accuracy_pct": {
        +          "type": "number"
        +        },
        +        "aligned": {
        +          "type": "number"
        +        },
        +        "misread": {
        +          "type": "number"
        +        },
        +        "mixed": {
        +          "type": "number"
        +        },
        +        "total": {
        +          "type": "number"
        +        },
        +        "unforeseen": {
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "horizon": {
        +      "properties": {
        +        "accuracy_pct": {
        +          "type": "number"
        +        },
        +        "early": {
        +          "type": "number"
        +        },
        +        "late": {
        +          "type": "number"
        +        },
        +        "total": {
        +          "type": "number"
        +        },
        +        "within": {
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "obsolete": {
        +      "type": "number"
        +    },
        +    "pending": {
        +      "type": "number"
        +    },
        +    "recent": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "scope": {
        +      "type": "object"
        +    },
        +    "significance": {
        +      "properties": {
        +        "accuracy_pct": {
        +          "type": "number"
        +        },
        +        "confirmed": {
        +          "type": "number"
        +        },
        +        "overstated": {
        +          "type": "number"
        +        },
        +        "total": {
        +          "type": "number"
        +        },
        +        "understated": {
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "surfaces": {
        +      "properties": {
        +        "list_resolved_watches": {
        +          "type": "string"
        +        },
        +        "public_scorecard": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "total_resolved": {
        +      "type": "number"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedlist_cities1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "cities": {
        +      "items": {
        +        "properties": {
        +          "city": {
        +            "type": "string"
        +          },
        +          "signal_direction": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "signal_strength": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "slug": {
        +            "type": "string"
        +          },
        +          "state": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "slug",
        +          "city",
        +          "state",
        +          "url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "count": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "cities",
        +    "count"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_corridors1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "corridors": {
        +      "items": {
        +        "properties": {
        +          "constituent_places": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "primary_axis": {
        +            "type": "string"
        +          },
        +          "slug": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "slug",
        +          "name",
        +          "url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "count": {
        +      "type": "number"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedlist_entities1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "by_class": {
        +      "additionalProperties": {
        +        "type": "number"
        +      },
        +      "type": "object"
        +    },
        +    "count": {
        +      "type": "number"
        +    },
        +    "entities": {
        +      "items": {
        +        "properties": {
        +          "briefs_count": {
        +            "type": "number"
        +          },
        +          "canonical_role": {
        +            "type": "string"
        +          },
        +          "case_number": {
        +            "type": "string"
        +          },
        +          "display_name": {
        +            "type": "string"
        +          },
        +          "entity_class": {
        +            "type": "string"
        +          },
        +          "jurisdiction": {
        +            "type": "string"
        +          },
        +          "legal_status": {
        +            "type": "string"
        +          },
        +          "meetings_count": {
        +            "type": "number"
        +          },
        +          "patterns_count": {
        +            "type": "number"
        +          },
        +          "schema_id": {
        +            "type": "string"
        +          },
        +          "slug": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          },
        +          "voxel_lead": {
        +            "type": "string"
        +          },
        +          "watches_count": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "slug",
        +          "display_name",
        +          "entity_class",
        +          "url",
        +          "schema_id"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "filters": {
        +      "properties": {
        +        "entity_class": {
        +          "type": "string"
        +        },
        +        "place": {
        +          "type": "string"
        +        },
        +        "search": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "surfaces": {
        +      "properties": {
        +        "architecture_doc": {
        +          "type": "string"
        +        },
        +        "decoder_index_hub": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedlist_meetings1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "count": {
        +      "type": "number"
        +    },
        +    "filters": {
        +      "properties": {
        +        "board": {
        +          "type": "string"
        +        },
        +        "jurisdiction": {
        +          "type": "string"
        +        },
        +        "year": {
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "meetings": {
        +      "items": {
        +        "properties": {
        +          "board": {
        +            "type": "string"
        +          },
        +          "document_type": {
        +            "type": "string"
        +          },
        +          "jurisdiction": {
        +            "type": "string"
        +          },
        +          "meeting_date": {
        +            "type": "string"
        +          },
        +          "slug": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          },
        +          "voxel_lead": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "slug",
        +          "url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedlist_patterns1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "count": {
        +      "type": "number"
        +    },
        +    "patterns": {
        +      "items": {
        +        "properties": {
        +          "audiences": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "canonical_url": {
        +            "type": "string"
        +          },
        +          "direction": {
        +            "type": "string"
        +          },
        +          "exhibits_count": {
        +            "type": "number"
        +          },
        +          "lifecycle_stage": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "pattern_url": {
        +            "type": "string"
        +          },
        +          "related_briefs": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "signal_score": {
        +            "type": "number"
        +          },
        +          "slug": {
        +            "type": "string"
        +          },
        +          "spatial": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "voxel_lead": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "slug",
        +          "name",
        +          "pattern_url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedlist_places1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "cities": {
        +      "items": {
        +        "properties": {
        +          "city": {
        +            "type": "string"
        +          },
        +          "signal_direction": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "signal_strength": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "slug": {
        +            "type": "string"
        +          },
        +          "state": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "slug",
        +          "city",
        +          "state",
        +          "url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "count": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "cities",
        +    "count"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_watch_items1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "count": {
        +      "type": "number"
        +    },
        +    "status": {
        +      "enum": [
        +        "pending",
        +        "resolved",
        +        "obsolete",
        +        "all"
        +      ],
        +      "type": "string"
        +    },
        +    "watch_items": {
        +      "items": {
        +        "properties": {
        +          "outcome": {
        +            "type": "object"
        +          },
        +          "scope": {
        +            "type": "object"
        +          },
        +          "significance": {
        +            "type": "object"
        +          },
        +          "slug": {
        +            "type": "string"
        +          },
        +          "subtitle": {
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          },
        +          "trigger_date": {
        +            "type": "string"
        +          },
        +          "trigger_type": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "slug",
        +          "title",
        +          "url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmeeting_index1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "city": {
        +      "type": "string"
        +    },
        +    "count": {
        +      "type": "number"
        +    },
        +    "from_date": {
        +      "type": "string"
        +    },
        +    "meetings": {
        +      "items": {
        +        "properties": {
        +          "board": {
        +            "type": "string"
        +          },
        +          "month": {
        +            "type": "number"
        +          },
        +          "slug": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          },
        +          "year": {
        +            "type": "number"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "to_date": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsemantic_search1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "count": {
        +      "type": "number"
        +    },
        +    "hits": {
        +      "items": {
        +        "properties": {
        +          "similarity": {
        +            "type": "number"
        +          },
        +          "slug": {
        +            "type": "string"
        +          },
        +          "subtitle": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "title": {
        +            "type": "string"
        +          },
        +          "type": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "slug",
        +          "type",
        +          "title",
        +          "similarity",
        +          "url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "query": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
  10. 5 tool updates
    • Addeddescribe_meeting
    • Addeddescribe_watch
    • Changedlist_cities1 field changed
      • changedInput schema / properties / state / description
        Previous value: -"Optional US state name (e.g., \"Florida\") to filter the result set. Omit for all cities across all states."New value: +"Optional US state name (e.g., \"Florida\") to filter the result set."
    • Addedlist_patterns
    • Addedlist_places
  11. 2 tool updates
    • Addeddescribe_entity
    • Addedlist_entities
  12. 2 tool updates
    • Addeddescribe_pattern
    • Addedget_track_record
  13. 1 tool update
    • Addedlist_watch_items
  14. 1 tool update
    • Addedlist_meetings
  15. 8 tool updates
    • First observedcurrent_named_patterns
    • First observeddescribe_corridor
    • First observeddescribe_place
    • First observeddescribe_zoning_signal
    • First observedlist_cities
    • First observedlist_corridors
    • First observedmeeting_index
    • First observedsemantic_search

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents and developers to look up zoning, land-use, and development records for Gwinnett County, Georgia through five public read-only tools: resolving an address to its actual governing jurisdiction, searching and retrieving county zoning cases, fetching ordinance code sections, and listing jurisdictions. It exposes the same operations over a REST API so questions about setbacks, permits, and case histories can be answered from indexed source records rather than guesses.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides programmatic access to municipal codes, ordinances, and zoning regulations from thousands of US cities and counties through the Municode digital library, enabling search, navigation, and retrieval of local government legal documents.
    6
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources