Zoning Signal
Planning and zoning records: 25 jurisdictions in Lake, Orange, Osceola, Polk, Seminole counties, FL
¿Debería usar esto?
Calidad y seguridad
Hallazgos (1)
- LOWen describe_corridor
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"observatory": {
"url": "https://zoningsignal.com/mcp"
}
}
}Puntos de conexión remotos
https://zoningsignal.com/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (18)
🟢describe_zoning_signal
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.
Esquema de entrada
{
"type": "object",
"properties": {},
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"artifact_types": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"url_pattern": {
"type": "string"
},
"purpose": {
"type": "string"
}
},
"required": [
"type",
"url_pattern",
"purpose"
]
}
},
"regional_scope": {
"type": "object",
"properties": {
"primary_region": {
"type": "string"
},
"cities": {
"type": "array",
"items": {
"type": "string"
}
},
"state": {
"type": "string"
}
}
},
"methodology": {
"type": "object",
"properties": {
"summary": {
"type": "string"
},
"cognitive_lenses": {
"type": "array",
"items": {
"type": "string"
}
},
"default_projection": {
"type": "string"
}
}
},
"built_by": {
"type": "object",
"properties": {
"studio": {
"type": "string"
},
"url": {
"type": "string"
}
}
},
"surfaces": {
"type": "object",
"properties": {
"site": {
"type": "string"
},
"sitemap": {
"type": "string"
},
"llms_index": {
"type": "string"
},
"llms_full": {
"type": "string"
},
"mcp_endpoint": {
"type": "string"
},
"mcp_manifest": {
"type": "string"
},
"status_url": {
"type": "string"
},
"schema_url": {
"type": "string"
},
"track_record": {
"type": "string"
},
"patterns_atlas": {
"type": "string"
},
"decoder_index": {
"type": "string"
}
},
"required": [
"site",
"mcp_endpoint",
"status_url",
"schema_url"
]
}
},
"required": [
"name",
"description",
"artifact_types",
"methodology",
"surfaces"
]
}🟢list_places(state)
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).
Esquema de entrada
{
"type": "object",
"properties": {
"state": {
"type": "string",
"description": "Optional US state name (e.g., \"Florida\") to filter the result set. Omit for all places across all states."
}
},
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"cities": {
"type": "array",
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"city": {
"type": "string"
},
"state": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"slug",
"city",
"state",
"url"
]
}
},
"count": {
"type": "number"
}
},
"required": [
"cities",
"count"
]
}🟢list_corridors
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.
Esquema de entrada
{
"type": "object",
"properties": {},
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"corridors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"constituent_places": {
"type": "array",
"items": {
"type": "string"
}
},
"primary_axis": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"slug",
"name",
"url"
]
}
},
"count": {
"type": "number"
}
}
}🟢list_patterns
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).
Esquema de entrada
{
"type": "object",
"properties": {},
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"patterns": {
"type": "array",
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"pattern_url": {
"type": "string"
},
"canonical_url": {
"type": "string"
},
"lifecycle_stage": {
"type": "string"
},
"horizon": {
"type": "string"
},
"confidence": {
"type": "string"
},
"exhibits_count": {
"type": "number"
},
"spatial": {
"type": "array",
"items": {
"type": "string"
}
},
"audiences": {
"type": "array",
"items": {
"type": "string"
}
},
"related_briefs": {
"type": "array",
"items": {
"type": "string"
}
},
"voxel_lead": {
"type": "string"
}
},
"required": [
"slug",
"name",
"pattern_url"
]
}
},
"count": {
"type": "number"
}
}
}🟢describe_pattern(slug)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "The pattern slug (e.g., \"self-storage-canary\"). Use current_named_patterns to discover available slugs."
}
},
"required": [
"slug"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"url": {
"type": "string"
},
"lifecycle_stage": {
"type": "string"
},
"voxel_lead": {
"type": "string"
},
"signal_status": {
"type": "object",
"properties": {
"horizon": {
"type": "string"
},
"confidence": {
"type": "string",
"enum": [
"low",
"medium",
"high",
"very-high"
]
}
}
},
"scope": {
"type": "object",
"properties": {
"spatial": {
"type": "array",
"items": {
"type": "string"
}
},
"temporal": {
"type": "string"
},
"topical": {
"type": "string"
},
"corridors": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"exhibits": {
"type": "array",
"items": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"date": {
"type": "string"
},
"note": {
"type": "string"
},
"detected_via": {
"type": "string"
}
}
}
},
"defensive_response": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance_chain": {
"type": "array",
"items": {
"type": "object"
}
},
"related_briefs": {
"type": "array",
"items": {
"type": "string"
}
},
"related_places": {
"type": "array",
"items": {
"type": "string"
}
},
"related_corridors": {
"type": "array",
"items": {
"type": "string"
}
},
"audiences": {
"type": "array",
"items": {
"type": "string"
}
},
"named_at": {
"type": "string"
},
"surfaces": {
"type": "object",
"properties": {
"dossier": {
"type": "string"
},
"defined_term_id": {
"type": "string"
},
"defined_term_set": {
"type": "string"
},
"list_in_atlas": {
"type": "string"
}
}
},
"claims": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Full claim_id slug, in the form `{scope}.{facet}.{noun}`."
},
"facet": {
"type": "string",
"enum": [
"primary_force",
"voxel_lead",
"exhibit",
"defensive_response",
"lesson",
"notable_decision",
"voting_record"
],
"description": "Structural facet category."
},
"text": {
"type": "string",
"description": "Claim text, verbatim."
},
"schema_id": {
"type": "string",
"description": "Full @id URL for JSON-LD reference."
},
"citations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"url": {
"type": "string"
}
}
}
}
},
"required": [
"id",
"facet",
"text",
"schema_id",
"citations"
]
}
},
"freshness": {
"type": "object",
"properties": {
"corpus_last_harvested": {
"type": "string",
"description": "YYYY-MM-DD: most recent harvest_date in corpus."
},
"dossier_last_material_update": {
"type": [
"string",
"null"
],
"description": "YYYY-MM-DD: when this dossier last changed."
},
"page_last_rendered": {
"type": "string",
"description": "ISO 8601: request-time stamp."
},
"site_build_committed": {
"type": "string",
"description": "Short git SHA."
}
},
"required": [
"corpus_last_harvested",
"page_last_rendered",
"site_build_committed"
]
}
},
"required": [
"slug",
"name",
"url",
"claims",
"freshness"
]
}🟢list_entities(entity_class, place, search)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"entity_class": {
"type": "string",
"enum": [
"Person",
"Organization",
"Legislation",
"CreativeWork"
],
"description": "Filter 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."
},
"place": {
"type": "string",
"description": "Optional: filter to entities scoped to a specific place (e.g., \"leesburg-florida\"). Matches entities whose related_places, organization.jurisdiction, legislation.jurisdiction, or creative_work.jurisdiction includes the place slug."
},
"search": {
"type": "string",
"description": "Optional case-insensitive substring search across display_name, canonical_role, voxel_lead, and slug. Use for natural-language entity discovery (e.g., \"denial bloc\", \"intersection mitigation\", \"form-based code\")."
}
},
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"filters": {
"type": "object",
"properties": {
"entity_class": {
"type": "string"
},
"place": {
"type": "string"
},
"search": {
"type": "string"
}
}
},
"entities": {
"type": "array",
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"display_name": {
"type": "string"
},
"entity_class": {
"type": "string"
},
"canonical_role": {
"type": "string"
},
"url": {
"type": "string"
},
"schema_id": {
"type": "string"
},
"voxel_lead": {
"type": "string"
},
"jurisdiction": {
"type": "string"
},
"legal_status": {
"type": "string"
},
"case_number": {
"type": "string"
},
"meetings_count": {
"type": "number"
},
"briefs_count": {
"type": "number"
},
"watches_count": {
"type": "number"
},
"patterns_count": {
"type": "number"
}
},
"required": [
"slug",
"display_name",
"entity_class",
"url",
"schema_id"
]
}
},
"count": {
"type": "number"
},
"by_class": {
"type": "object",
"additionalProperties": {
"type": "number"
}
},
"surfaces": {
"type": "object",
"properties": {
"decoder_index_hub": {
"type": "string"
},
"architecture_doc": {
"type": "string"
}
}
}
}
}🟢describe_entity(slug)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "The entity slug (e.g., \"sb-180\", \"hanover-land-company\", \"anita-geraci-carver\"). Use list_entities to discover available slugs. The Decoder Index hub at /entities lists every entity grouped by class."
}
},
"required": [
"slug"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"display_name": {
"type": "string"
},
"entity_class": {
"type": "string"
},
"canonical_role": {
"type": "string"
},
"voxel_lead": {
"type": "string"
},
"url": {
"type": "string"
},
"schema_id": {
"type": "string"
},
"named_at": {
"type": "string"
},
"last_active": {
"type": "string"
},
"person": {
"type": "object"
},
"organization": {
"type": "object"
},
"legislation": {
"type": "object"
},
"creative_work": {
"type": "object"
},
"appears_in_meetings": {
"type": "array",
"items": {
"type": "string"
}
},
"appears_in_briefs": {
"type": "array",
"items": {
"type": "string"
}
},
"appears_in_watches": {
"type": "array",
"items": {
"type": "string"
}
},
"exhibits_patterns": {
"type": "array",
"items": {
"type": "string"
}
},
"related_entities": {
"type": "array",
"items": {
"type": "string"
}
},
"related_places": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance_chain": {
"type": "array",
"items": {
"type": "object"
}
}
},
"required": [
"slug",
"display_name",
"entity_class",
"url",
"schema_id"
]
}🟢meeting_index(city, from_date, to_date)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "City name (e.g., \"Clermont\"). Case-insensitive."
},
"from_date": {
"type": "string",
"format": "date",
"description": "Inclusive lower bound (ISO 8601 date). Omit to span back to the earliest reading."
},
"to_date": {
"type": "string",
"format": "date",
"description": "Inclusive upper bound (ISO 8601 date). Omit for the latest reading."
}
},
"required": [
"city"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"city": {
"type": "string"
},
"from_date": {
"type": "string"
},
"to_date": {
"type": "string"
},
"meetings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"board": {
"type": "string"
},
"year": {
"type": "number"
},
"month": {
"type": "number"
},
"url": {
"type": "string"
}
}
}
},
"count": {
"type": "number"
}
}
}🟢list_meetings(jurisdiction, from_date, to_date)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"jurisdiction": {
"type": "string",
"description": "Optional case-insensitive substring to filter by city (e.g., \"minneola\"). Omit for all cities."
},
"from_date": {
"type": "string",
"format": "date",
"description": "Inclusive lower bound (ISO 8601 date). Omit to span back to the earliest reading."
},
"to_date": {
"type": "string",
"format": "date",
"description": "Inclusive upper bound (ISO 8601 date). Omit for the latest reading."
}
},
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"filters": {
"type": "object",
"properties": {
"jurisdiction": {
"type": "string"
},
"board": {
"type": "string"
},
"year": {
"type": "number"
}
}
},
"meetings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"jurisdiction": {
"type": "string"
},
"board": {
"type": "string"
},
"meeting_date": {
"type": "string"
},
"document_type": {
"type": "string"
},
"url": {
"type": "string"
},
"voxel_lead": {
"type": "string"
}
},
"required": [
"slug",
"url"
]
}
},
"count": {
"type": "number"
}
}
}🟢list_watch_items(status, horizon, place, corridor, brief)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"pending",
"resolved",
"obsolete",
"all"
],
"description": "Filter by lifecycle status. Defaults to 'pending' (active watch items only); pass 'all' for the full corpus including resolved + obsolete entries."
},
"horizon": {
"type": "string",
"enum": [
"imminent",
"near-term",
"structural"
],
"description": "Optional: filter to items in the named horizon band. Imminent = ≤14 days; near-term = ≤90 days; structural = >90 days or condition-triggered."
},
"place": {
"type": "string",
"description": "Optional: filter to items scoped to a specific place dossier (e.g., \"leesburg-florida\")."
},
"corridor": {
"type": "string",
"description": "Optional: filter to items scoped to a specific corridor (e.g., \"us-27-south-lake\")."
},
"brief": {
"type": "string",
"description": "Optional: filter to items linked to a specific named-pattern brief."
}
},
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"pending",
"resolved",
"obsolete",
"all"
]
},
"watch_items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"title": {
"type": "string"
},
"subtitle": {
"type": "string"
},
"trigger_type": {
"type": "string"
},
"trigger_date": {
"type": "string"
},
"scope": {
"type": "object"
},
"significance": {
"type": "object"
},
"outcome": {
"type": "object"
},
"url": {
"type": "string"
}
},
"required": [
"slug",
"title",
"url"
]
}
},
"count": {
"type": "number"
}
}
}🟢get_track_record(jurisdiction, corridor, brief)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"jurisdiction": {
"type": "string",
"description": "Optional: scope to a single place slug (e.g., \"leesburg-florida\") for that city's track record only. Use list_cities to discover available slugs."
},
"corridor": {
"type": "string",
"description": "Optional: scope to a corridor slug (e.g., \"us-27-south-lake\"). Returns the aggregate track record across the corridor's constituent places."
},
"brief": {
"type": "string",
"description": "Optional: scope to a brief slug (e.g., \"six-month-board-flip\"). Returns the track record for watches linked to a specific named-pattern brief."
}
},
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"scope": {
"type": "object"
},
"total_resolved": {
"type": "number"
},
"pending": {
"type": "number"
},
"obsolete": {
"type": "number"
},
"directional": {
"type": "object",
"properties": {
"aligned": {
"type": "number"
},
"mixed": {
"type": "number"
},
"misread": {
"type": "number"
},
"unforeseen": {
"type": "number"
},
"total": {
"type": "number"
},
"accuracy_pct": {
"type": "number"
}
}
},
"horizon": {
"type": "object",
"properties": {
"within": {
"type": "number"
},
"early": {
"type": "number"
},
"late": {
"type": "number"
},
"total": {
"type": "number"
},
"accuracy_pct": {
"type": "number"
}
}
},
"significance": {
"type": "object",
"properties": {
"confirmed": {
"type": "number"
},
"overstated": {
"type": "number"
},
"understated": {
"type": "number"
},
"total": {
"type": "number"
},
"accuracy_pct": {
"type": "number"
}
}
},
"by_confidence": {
"type": "array",
"items": {
"type": "object"
}
},
"recent": {
"type": "array",
"items": {
"type": "object"
}
},
"surfaces": {
"type": "object",
"properties": {
"public_scorecard": {
"type": "string"
},
"list_resolved_watches": {
"type": "string"
}
}
}
}
}🟢describe_place(slug, lens)
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).
Esquema de entrada
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "The place slug (e.g., \"clermont-florida\"). Use list_places to discover available slugs."
},
"lens": {
"type": "string",
"enum": [
"synthesis",
"developer",
"investor",
"broker",
"attorney",
"business",
"resident",
"civic-leader"
],
"default": "synthesis",
"description": "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."
}
},
"required": [
"slug"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"place"
]
},
"title": {
"type": "string"
},
"url": {
"type": "string"
},
"lens": {
"type": "string"
},
"lens_was_requested": {
"type": "string"
},
"fell_back_to_synthesis": {
"type": "boolean"
},
"projection": {
"type": "string"
},
"available_lenses": {
"type": "array",
"items": {
"type": "string"
}
},
"frontmatter": {
"type": "object"
},
"claims": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Full claim_id slug, in the form `{scope}.{facet}.{noun}`."
},
"facet": {
"type": "string",
"enum": [
"primary_force",
"voxel_lead",
"exhibit",
"defensive_response",
"lesson",
"notable_decision",
"voting_record"
],
"description": "Structural facet category."
},
"text": {
"type": "string",
"description": "Claim text, verbatim."
},
"schema_id": {
"type": "string",
"description": "Full @id URL for JSON-LD reference."
},
"citations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"url": {
"type": "string"
}
}
}
}
},
"required": [
"id",
"facet",
"text",
"schema_id",
"citations"
]
}
},
"freshness": {
"type": "object",
"properties": {
"corpus_last_harvested": {
"type": "string",
"description": "YYYY-MM-DD: most recent harvest_date in corpus."
},
"dossier_last_material_update": {
"type": [
"string",
"null"
],
"description": "YYYY-MM-DD: when this dossier last changed."
},
"page_last_rendered": {
"type": "string",
"description": "ISO 8601: request-time stamp."
},
"site_build_committed": {
"type": "string",
"description": "Short git SHA."
}
},
"required": [
"corpus_last_harvested",
"page_last_rendered",
"site_build_committed"
]
},
"record_status": {
"type": [
"object",
"null"
]
}
},
"required": [
"slug",
"type",
"url",
"lens",
"projection",
"claims",
"freshness"
]
}🟢describe_corridor(slug, lens)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "The corridor slug (e.g., \"us-27-south-lake\"). Use list_corridors to discover available slugs."
},
"lens": {
"type": "string",
"enum": [
"synthesis",
"developer",
"investor",
"broker",
"attorney",
"business",
"resident",
"civic-leader"
],
"default": "synthesis",
"description": "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."
}
},
"required": [
"slug"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"corridor"
]
},
"title": {
"type": "string"
},
"url": {
"type": "string"
},
"lens": {
"type": "string"
},
"lens_was_requested": {
"type": "string"
},
"fell_back_to_synthesis": {
"type": "boolean"
},
"projection": {
"type": "string"
},
"available_lenses": {
"type": "array",
"items": {
"type": "string"
}
},
"frontmatter": {
"type": "object"
},
"claims": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Full claim_id slug, in the form `{scope}.{facet}.{noun}`."
},
"facet": {
"type": "string",
"enum": [
"primary_force",
"voxel_lead",
"exhibit",
"defensive_response",
"lesson",
"notable_decision",
"voting_record"
],
"description": "Structural facet category."
},
"text": {
"type": "string",
"description": "Claim text, verbatim."
},
"schema_id": {
"type": "string",
"description": "Full @id URL for JSON-LD reference."
},
"citations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"url": {
"type": "string"
}
}
}
}
},
"required": [
"id",
"facet",
"text",
"schema_id",
"citations"
]
}
},
"freshness": {
"type": "object",
"properties": {
"corpus_last_harvested": {
"type": "string",
"description": "YYYY-MM-DD: most recent harvest_date in corpus."
},
"dossier_last_material_update": {
"type": [
"string",
"null"
],
"description": "YYYY-MM-DD: when this dossier last changed."
},
"page_last_rendered": {
"type": "string",
"description": "ISO 8601: request-time stamp."
},
"site_build_committed": {
"type": "string",
"description": "Short git SHA."
}
},
"required": [
"corpus_last_harvested",
"page_last_rendered",
"site_build_committed"
]
},
"record_status": {
"type": [
"object",
"null"
]
}
},
"required": [
"slug",
"type",
"url",
"lens",
"projection",
"claims",
"freshness"
]
}🟢describe_meeting(slug, lens)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "The meeting slug (e.g., \"leesburg-pc-2026-01\"). Use list_meetings or meeting_index to discover available slugs."
},
"lens": {
"type": "string",
"enum": [
"synthesis",
"developer",
"investor",
"broker",
"attorney",
"business",
"resident",
"civic-leader"
],
"description": "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."
}
},
"required": [
"slug"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"meeting"
]
},
"title": {
"type": "string"
},
"url": {
"type": "string"
},
"lens": {
"type": "string"
},
"lens_was_requested": {
"type": "string"
},
"fell_back_to_synthesis": {
"type": "boolean"
},
"projection": {
"type": "string"
},
"available_lenses": {
"type": "array",
"items": {
"type": "string"
}
},
"frontmatter": {
"type": "object"
},
"claims": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Full claim_id slug, in the form `{scope}.{facet}.{noun}`."
},
"facet": {
"type": "string",
"enum": [
"primary_force",
"voxel_lead",
"exhibit",
"defensive_response",
"lesson",
"notable_decision",
"voting_record"
],
"description": "Structural facet category."
},
"text": {
"type": "string",
"description": "Claim text, verbatim."
},
"schema_id": {
"type": "string",
"description": "Full @id URL for JSON-LD reference."
},
"citations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"url": {
"type": "string"
}
}
}
}
},
"required": [
"id",
"facet",
"text",
"schema_id",
"citations"
]
}
},
"freshness": {
"type": "object",
"properties": {
"corpus_last_harvested": {
"type": "string",
"description": "YYYY-MM-DD: most recent harvest_date in corpus."
},
"dossier_last_material_update": {
"type": [
"string",
"null"
],
"description": "YYYY-MM-DD: when this dossier last changed."
},
"page_last_rendered": {
"type": "string",
"description": "ISO 8601: request-time stamp."
},
"site_build_committed": {
"type": "string",
"description": "Short git SHA."
}
},
"required": [
"corpus_last_harvested",
"page_last_rendered",
"site_build_committed"
]
},
"record_status": {
"type": [
"object",
"null"
],
"properties": {
"record_type": {
"type": "string",
"enum": [
"agenda",
"minutes"
]
},
"meeting_status": {
"type": "string",
"enum": [
"scheduled",
"convened",
"cancelled"
]
},
"outcome_status": {
"type": "string",
"enum": [
"pending",
"recorded"
]
},
"minutes_available": {
"type": "boolean"
},
"vote_final": {
"type": "boolean"
}
},
"required": [
"record_type",
"meeting_status",
"outcome_status",
"minutes_available",
"vote_final"
]
}
},
"required": [
"slug",
"type",
"url",
"lens",
"projection",
"claims",
"freshness",
"record_status"
]
}🟢describe_watch(slug)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "The watch slug (e.g., \"lake-bright-council-mar-23\"). Use list_watch_items to discover available slugs."
}
},
"required": [
"slug"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"watch"
]
},
"title": {
"type": "string"
},
"subtitle": {
"type": "string"
},
"url": {
"type": "string"
},
"trigger": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"date": {
"type": "string"
},
"condition": {
"type": "string"
}
}
},
"scope": {
"type": "object",
"properties": {
"place": {
"type": "string"
},
"corridor": {
"type": "string"
},
"pattern": {
"type": "string"
},
"brief": {
"type": "string"
},
"region": {
"type": "string"
}
}
},
"significance": {
"type": "object",
"properties": {
"score": {
"type": "number"
},
"horizon": {
"type": "string"
},
"confidence": {
"type": "string"
},
"why_it_matters_voxel": {
"type": "string"
}
}
},
"outcome": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"pending",
"resolved",
"obsolete"
]
},
"resolved_date": {
"type": "string"
},
"resolved_at_meeting": {
"type": "string"
},
"outcome_type": {
"type": "string"
},
"outcome_summary": {
"type": "string"
},
"prediction_assessment": {
"type": "object"
},
"lesson": {
"type": "string"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"status"
]
},
"body": {
"type": "string"
},
"claims": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Full claim_id slug, in the form `{scope}.{facet}.{noun}`."
},
"facet": {
"type": "string",
"enum": [
"primary_force",
"voxel_lead",
"exhibit",
"defensive_response",
"lesson",
"notable_decision",
"voting_record"
],
"description": "Structural facet category."
},
"text": {
"type": "string",
"description": "Claim text, verbatim."
},
"schema_id": {
"type": "string",
"description": "Full @id URL for JSON-LD reference."
},
"citations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"url": {
"type": "string"
}
}
}
}
},
"required": [
"id",
"facet",
"text",
"schema_id",
"citations"
]
}
},
"freshness": {
"type": "object",
"properties": {
"corpus_last_harvested": {
"type": "string",
"description": "YYYY-MM-DD: most recent harvest_date in corpus."
},
"dossier_last_material_update": {
"type": [
"string",
"null"
],
"description": "YYYY-MM-DD: when this dossier last changed."
},
"page_last_rendered": {
"type": "string",
"description": "ISO 8601: request-time stamp."
},
"site_build_committed": {
"type": "string",
"description": "Short git SHA."
}
},
"required": [
"corpus_last_harvested",
"page_last_rendered",
"site_build_committed"
]
}
},
"required": [
"slug",
"type",
"url",
"outcome",
"claims",
"freshness"
]
}🟡submit_agent_feedback(category, message, about_tool, about_url, agent_context, ...)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"category": {
"type": "string",
"enum": [
"gap",
"error",
"praise",
"suggestion",
"citation_request"
],
"description": "Bounded 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."
},
"message": {
"type": "string",
"maxLength": 8192,
"description": "The feedback prose itself. Be specific. What were you trying to accomplish? What was missing or wrong? Voice that survives compression. Operators read every submission."
},
"about_tool": {
"type": "string",
"description": "Optional: the tool name this feedback is about (e.g., \"describe_corridor\"). Lets operators rollup feedback per tool."
},
"about_url": {
"type": "string",
"description": "Optional: a URL on the observatory this feedback references (e.g., \"https://zoningsignal.com/corridors/us-27-south-lake\")."
},
"agent_context": {
"type": "string",
"maxLength": 4096,
"description": "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."
},
"suggested_resolution": {
"type": "string",
"description": "Optional: if you have a concrete proposal (a new tool, a renamed parameter, a missing field on a response), name it here."
}
},
"required": [
"category",
"message"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"ok": {
"type": "boolean",
"description": "True when the feedback was accepted and stored."
},
"feedback_id": {
"type": "string",
"description": "Stable id for the stored feedback record."
},
"category": {
"type": "string",
"description": "The category the feedback was filed under."
},
"received_at": {
"type": "string",
"description": "ISO-8601 timestamp the feedback was recorded."
},
"attached_invocation_count": {
"type": "number",
"description": "How many prior invocations (from your MCP-Session-Id) were auto-attached for operator context."
},
"message": {
"type": "string",
"description": "Human-readable acknowledgement."
}
},
"required": [
"ok",
"feedback_id"
],
"additionalProperties": false
}🟢semantic_search(q)
Search every record by exact words and by meaning at once: meeting agendas and minutes, place dossiers, corridors, named patterns and briefs, entities and watch items. Finds a case, ordinance or resolution number, a parcel id or alternate key, an address, a project, firm or person, or a plain-language question. Ranking fuses three lists by reciprocal rank: full-text match (every word as written; "quotes", OR and -word work as in web search), title match, and voyage-4 embedding similarity. Each hit carries its true cosine `similarity` and `matched` (title, text, meaning). Every response states `scope` (the query names a covered place, a place outside coverage, or no place) and `evidence` (strong when a top record contains the query's terms or closely resembles it); when either needs explaining it adds a `note` and the coverage. `weak_match` is deprecated and will be removed in 2.4.0: it is true when scope is outside or evidence is not strong, so read those instead. Coverage: 25 jurisdictions in Lake, Orange, Osceola, Polk and Seminole counties, Florida, from 2024, listed in the coverage resource. Top 12.
Esquema de entrada
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "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."
}
},
"required": [
"q"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"query": {
"type": "string"
},
"hits": {
"type": "array",
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"subtitle": {
"type": [
"string",
"null"
]
},
"similarity": {
"type": "number",
"description": "True cosine between the query and the record embedding."
},
"url": {
"type": "string"
},
"matched": {
"type": "array",
"items": {
"type": "string",
"enum": [
"title",
"text",
"meaning"
]
},
"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."
}
},
"required": [
"slug",
"type",
"title",
"similarity",
"url",
"matched"
]
}
},
"count": {
"type": "number"
},
"scope": {
"type": "string",
"enum": [
"covered",
"outside",
"unknown"
],
"description": "Whether the query names a covered place, a place outside coverage, or no place."
},
"evidence": {
"type": "string",
"enum": [
"strong",
"weak",
"none"
],
"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."
},
"weak_match": {
"type": "boolean",
"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."
},
"note": {
"type": "string",
"description": "Present when scope is outside, evidence is weak, or nothing matched."
},
"coverage": {
"type": "object",
"description": "What the corpus covers; present with note. Same object as the coverage resource."
}
},
"required": [
"query",
"hits",
"count",
"scope",
"evidence"
]
}🟢trace_connection(from, to, evidence, crossing, exclude_published, ...)
Trace how two named things in the planning record connect, and report how specific that connection is. Give `from` and `to` for the shortest route between them; give `from` alone to rank what one actor connects to; give neither to rank the corpus's most specific connections. Endpoints are entity, meeting, or named-pattern slugs; list_entities, list_meetings and list_patterns discover them. Routes run over the three layers where a shared node is a specific claim: meeting attendance transcribed from agendas and minutes (250 references across 78 meeting records; a meeting record holds a median of 3 entities and at most 12), peer claims authored on an entity dossier (169 links, 47 of them stated on both dossiers), and shared named patterns (60 references across 15 patterns; a pattern holds a median of 2 entities and at most 10). That substrate is 162 nodes and 479 links over 69 entities, in one connected component. Place, corridor, brief and watch links serve here as filters and citations rather than as routes: the us-27-south-lake node alone carries 118 links, so a route through it would hold for nearly every pair in the corpus. Hop count is a result here rather than an input. Across the full frontmatter graph, 94.5% of entity pairs already sit within two steps and a three-step expansion reaches a median of 235 of 243 nodes, so depth returns the corpus rather than an answer. What discriminates is the degree of the WIDEST node a route passes through, and the ranking leads on it: a route is only as specific as its least specific waypoint. Two more measured properties travel with every row: how many equally-short routes exist (uniqueness runs 64% at two hops, 41% at three, 16% at four), and whether the two endpoints are minuted in disjoint jurisdictions, which 15 of 69 entities are positioned to be. `interior_degrees` carries every degree on the chain so you can re-rank on any of them, and `provenance` says whether the whole join rests on the meeting record, on a curator’s hand, or on both. Filter with `evidence` to choose which layers may carry a hop, `crossing` to keep only pairs minuted in different jurisdictions, and `exclude_published` to keep only pairs the observatory’s own briefs have not already put together. Every response reports how many of the 2,346 possible entity pairs the filters matched, splits them by provenance, and accounts for the rest, so a query that discriminated nothing says so in its own output. Note one interaction the response also states: two entities minuted in one room share that room’s jurisdiction, so `crossing: "jurisdiction"` holds no two-hop minuted route, and the minuted routes that satisfy it run three hops or more. What it leaves undetermined, stated on every call: vote outcomes and dispositions, which live in meeting prose and item tables; direction and sequence, since a route is co-occurrence in a record; and the 298 of 376 meeting records not yet linked to an entity, where what the tool covers is what has been curated. In from and sweep modes, rows that share a chain of intermediaries collapse to one finding, which names the rest of its roster in `route_also_joins`. Pair with describe_entity for a node’s full dossier, describe_meeting for the room itself, and semantic_search for prose.
Esquema de entrada
{
"type": "object",
"properties": {
"from": {
"type": "string",
"description": "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."
},
"to": {
"type": "string",
"description": "The other endpoint, drawn from the same three vocabularies as `from`. Supplying `to` without `from` is accepted and read as `from`, because the graph is undirected; the response echoes that as query.normalized_as."
},
"evidence": {
"type": "array",
"items": {
"type": "string",
"enum": [
"minuted",
"authored",
"named_pattern"
]
},
"minItems": 1,
"maxItems": 3,
"uniqueItems": true,
"default": [
"minuted",
"authored",
"named_pattern"
],
"description": "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."
},
"crossing": {
"type": "string",
"enum": [
"any",
"jurisdiction"
],
"default": "any",
"description": "\"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."
},
"exclude_published": {
"type": "boolean",
"default": false,
"description": "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."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 25,
"default": 5,
"description": "How many connections to return. It caps connections; routes within one connection are shown five at a time in pair mode and one at a time in from and sweep modes, and `routes_shown` beside the exact `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."
}
},
"required": [],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"query": {
"type": "object",
"properties": {
"mode": {
"type": "string",
"enum": [
"pair",
"from",
"sweep"
],
"description": "Set by arity: both endpoints, one, or neither. The scoring path is identical in all three."
},
"from": {
"type": [
"object",
"null"
],
"properties": {
"slug": {
"type": "string"
},
"resolved_kind": {
"type": "string",
"enum": [
"entity",
"meeting",
"pattern"
]
}
}
},
"to": {
"type": [
"object",
"null"
],
"properties": {
"slug": {
"type": "string"
},
"resolved_kind": {
"type": "string",
"enum": [
"entity",
"meeting",
"pattern"
]
}
}
},
"evidence": {
"type": "array",
"items": {
"type": "string",
"enum": [
"minuted",
"authored",
"named_pattern"
]
}
},
"crossing": {
"type": "string",
"enum": [
"any",
"jurisdiction"
]
},
"exclude_published": {
"type": "boolean"
},
"limit": {
"type": "number"
},
"depth_parameter": {
"type": "string",
"description": "Constant. Hop count is a result the query returns; endpoints and filters are what it takes."
},
"normalized_as": {
"type": "string",
"description": "Present when `to` arrived without `from` and was read as `from`."
},
"resolution_note": {
"type": "string",
"description": "Present when a supplied slug also names a document of another type."
}
},
"required": [
"mode",
"evidence",
"crossing",
"exclude_published",
"limit",
"depth_parameter"
]
},
"substrate": {
"type": "object",
"description": "The graph the routes ran over, for the evidence layers this call selected.",
"properties": {
"nodes": {
"type": "number"
},
"links": {
"type": "number"
},
"components": {
"type": "number",
"description": "Above 1, the chosen layers fragment the graph and a no_path is a property of that choice."
},
"entities_present": {
"type": "string"
},
"by_kind": {
"type": "object",
"properties": {
"entity": {
"type": "number"
},
"meeting": {
"type": "number"
},
"pattern": {
"type": "number"
}
}
},
"layers": {
"type": "object",
"description": "Per-layer reference counts and node-size profiles, measured on the artifact."
},
"excluded_layers": {
"type": "array",
"description": "The frontmatter arrays that serve as filters and citations here rather than as routes, each with the reason.",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"reason": {
"type": "string"
}
},
"required": [
"name",
"reason"
]
}
},
"fragmentation_note": {
"type": "string",
"description": "Present when components > 1."
}
},
"required": [
"nodes",
"links",
"components",
"entities_present",
"layers",
"excluded_layers"
]
},
"selectivity": {
"type": "object",
"description": "How much of the population the filters kept: the tool grading its own discrimination.",
"properties": {
"matched": {
"type": "number",
"description": "Pairs scored, filtered and ranked."
},
"of_possible": {
"type": "number",
"description": "The candidate pairs this call's arity put in scope: one in pair mode, 68 from a named entity, 2,346 across the corpus."
},
"returned": {
"type": "number",
"description": "Rows returned, after the roster collapse and the cut at `limit`."
},
"declared_direct": {
"type": "number",
"description": "Matched pairs that sit at one hop and moved to declared_direct."
},
"unreachable": {
"type": "number",
"description": "Pairs in separate components on the selected evidence layers. Attributing these to the filters would name the wrong cause."
},
"filtered_out": {
"type": "number",
"description": "Pairs a filter rejected. matched + declared_direct + unreachable + filtered_out === of_possible."
},
"by_provenance": {
"type": "object",
"description": "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.",
"properties": {
"record": {
"type": "number"
},
"mixed": {
"type": "number"
},
"curated": {
"type": "number"
}
},
"required": [
"record",
"mixed",
"curated"
]
},
"distinct_routes": {
"type": "number",
"description": "Distinct chains of intermediaries among the matched pairs: findings behind pairs."
},
"reading": {
"type": "string",
"description": "Plain sentence naming the cause it can prove: an unreachable pair reads as unreachable, a filtered one names the filter that rejected it."
}
},
"required": [
"matched",
"of_possible",
"returned",
"declared_direct",
"unreachable",
"filtered_out",
"by_provenance",
"distinct_routes",
"reading"
]
},
"connections": {
"type": "array",
"items": {
"type": "object",
"properties": {
"from": {
"type": "object",
"description": "slug, kind, display_name, entity_class, canonical_role, url, jurisdictions_minuted[]."
},
"to": {
"type": "object"
},
"hops": {
"type": "number"
},
"shortest_path_count": {
"type": "number",
"description": "Exact, independent of how many routes are shown."
},
"routes_shown": {
"type": "number",
"description": "Routes displayed: five in pair mode, one in from and sweep modes. Read against shortest_path_count."
},
"widest_node": {
"type": [
"object",
"null"
],
"description": "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.",
"properties": {
"id": {
"type": "string"
},
"kind": {
"type": "string",
"enum": [
"entity",
"meeting",
"pattern"
]
},
"slug": {
"type": "string"
},
"display_name": {
"type": "string"
},
"url": {
"type": "string"
},
"degree": {
"type": "number"
},
"degree_means": {
"type": "string"
}
}
},
"interior_degrees": {
"type": "array",
"items": {
"type": "number"
},
"description": "Every interior node's degree on the representative route, in route order."
},
"evidence_used": {
"type": "array",
"items": {
"type": "string",
"enum": [
"minuted",
"authored",
"named_pattern"
]
},
"description": "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."
},
"provenance": {
"type": "string",
"enum": [
"record",
"mixed",
"curated"
],
"description": "Derived from evidence_used. \"record\" = every shortest route runs on transcribed meeting attendance; \"curated\" = the whole join is authored on a dossier or grouped into a pattern, which describe_entity and describe_pattern already return."
},
"crosses_jurisdiction": {
"type": "boolean",
"description": "Both footprints are on from.jurisdictions_minuted and to.jurisdictions_minuted."
},
"date_span": {
"type": "object",
"description": "Populated only when every hop on the representative route runs through a meeting record; otherwise carries a reason scoped to that route."
},
"published_together_in": {
"type": "array",
"items": {
"type": "string"
}
},
"summary": {
"type": "string"
},
"routes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"hops": {
"type": "array",
"items": {
"type": "object",
"properties": {
"from": {
"type": "string"
},
"to": {
"type": "string"
},
"evidence": {
"type": "string",
"enum": [
"minuted",
"authored",
"named_pattern"
]
},
"node_degree": {
"type": "number"
},
"url": {
"type": "string"
},
"detail": {
"type": "string"
},
"basis": {
"type": "string",
"description": "A sentence naming what kind of knowing this hop is: a record, an authored claim, or a curated grouping."
},
"jurisdiction": {
"type": "string",
"description": "Present on meeting hops: the room's own jurisdiction slug, so a caller sees where a crossing happens without the tool nominating a carrier."
}
},
"required": [
"from",
"to",
"evidence",
"node_degree",
"url",
"detail",
"basis"
]
}
}
},
"required": [
"hops"
]
}
},
"route_also_joins": {
"type": "object",
"description": "From and sweep modes: the other pairs this same chain of intermediaries joins. A node of degree 6 yields fifteen pairs, and they are one finding rather than fifteen rows.",
"properties": {
"count": {
"type": "number"
},
"pairs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"from": {
"type": "string"
},
"to": {
"type": "string"
}
},
"required": [
"from",
"to"
]
}
}
},
"required": [
"count",
"pairs"
]
},
"undetermined": {
"type": "array",
"items": {
"type": "string"
},
"description": "Read across all shortest routes, matching evidence_used. A row that reports eight routes and qualifies one would under-report what it leaves open."
}
},
"required": [
"from",
"to",
"hops",
"shortest_path_count",
"routes_shown",
"interior_degrees",
"evidence_used",
"provenance",
"crosses_jurisdiction",
"summary",
"routes",
"undetermined"
]
}
},
"declared_direct": {
"type": "array",
"description": "From and sweep modes: one-hop authored pairs, unscored, as slug pairs; describe_entity already returns each one in its dossier context.",
"items": {
"type": "object",
"properties": {
"from": {
"type": "string",
"description": "Entity slug."
},
"to": {
"type": "string",
"description": "Entity slug."
},
"authored_on": {
"type": "array",
"items": {
"type": "string"
},
"description": "The dossiers carrying the reference: one slug for a one-way claim, both for a reciprocal one."
},
"crosses_jurisdiction": {
"type": "boolean"
},
"published_together_in": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"from",
"to",
"authored_on",
"crosses_jurisdiction",
"published_together_in"
]
}
},
"declared_direct_note": {
"type": "string",
"description": "Present whenever declared_direct carries a row: the call that reads any of them in full."
},
"no_path": {
"type": [
"object",
"null"
],
"description": "Pair mode only, when the endpoints are unreachable on the chosen layers. Null everywhere else, including in pair mode when a route exists.",
"properties": {
"from": {
"type": "object"
},
"to": {
"type": "object"
},
"evidence": {
"type": "array",
"items": {
"type": "string"
}
},
"components": {
"type": "number"
},
"note": {
"type": "string"
},
"fragmentation_note": {
"type": "string",
"description": "Present when the chosen layers fragment the substrate; a full-substrate retry may join the two."
}
},
"required": [
"from",
"to",
"evidence",
"components",
"note"
]
},
"tie_note": {
"type": [
"string",
"null"
],
"description": "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."
},
"ranking": {
"type": "string",
"description": "The sort rule, verbatim, labelled a judgement call. Every integer behind it is in each row."
},
"calibration": {
"type": "object",
"description": "Measured background rates for the chosen evidence layers: what to read a row against.",
"properties": {
"distance_histogram": {
"type": "object"
},
"unique_shortest_path_by_distance": {
"type": "object"
},
"max_shortest_path_count": {
"type": "number"
},
"note": {
"type": "string"
}
}
},
"coverage": {
"type": "object",
"description": "What 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."
},
"limits": {
"type": "array",
"items": {
"type": "string"
},
"description": "Assembled per call. The coverage line is always first: absence in this tool is absence of curation."
}
},
"required": [
"query",
"substrate",
"selectivity",
"connections",
"ranking",
"calibration",
"coverage",
"limits"
]
}Comunidad
Evidencia