{
  "status": {
    "canonical_discovery": "https://registry.modelcontextprotocol.io",
    "canonical_transport": "https://zoningsignal.com/mcp",
    "this_file": "directional bet on the Server Cards spec (MCP roadmap Priority Area 1, status: not yet finalized)"
  },
  "protocolVersion": "2025-11-25",
  "name": "zoning-signal",
  "version": "1.0.0",
  "description": "Public read-only MCP server for Zoning Signal — a civic intelligence observatory for places in motion. Reads agendas, minutes, staff reports, and planning records across south Lake County, Florida (US-27 corridor: Clermont, Leesburg, Minneola, Groveland) and projects them through eight cognitive lenses (synthesis plus developer, investor, resident, business, civic, infrastructure, policy). Lens-aware on every dossier tool. Includes semantic search over the full corpus (Voyage AI 1024D embeddings + Supabase pgvector).",
  "baseUrl": "https://zoningsignal.com",
  "mcpEndpoint": "https://zoningsignal.com/mcp",
  "tools": [
    {
      "name": "describe_zoning_signal",
      "title": "Describe Zoning Signal",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "endpoint": "https://zoningsignal.com/api/mcp/describe_zoning_signal",
      "methods": [
        "GET",
        "POST"
      ]
    },
    {
      "name": "list_cities",
      "title": "List Cities",
      "description": "List every city with a published place dossier. 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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "state": {
            "type": "string",
            "description": "Optional US state name (e.g., \"Florida\") to filter the result set. Omit for all cities across all states."
          }
        },
        "additionalProperties": false
      },
      "endpoint": "https://zoningsignal.com/api/mcp/list_cities",
      "methods": [
        "GET",
        "POST"
      ]
    },
    {
      "name": "list_corridors",
      "title": "List Corridors",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "endpoint": "https://zoningsignal.com/api/mcp/list_corridors",
      "methods": [
        "GET",
        "POST"
      ]
    },
    {
      "name": "current_named_patterns",
      "title": "Current Named Patterns",
      "description": "List every named pattern currently being tracked across the regional field. A named pattern is a coined recurring structure observed across multiple jurisdictions or multiple meetings (e.g., \"The Quiet Revolution\"). Returns pattern name, anchoring brief, brief URL, and spatial coverage.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "endpoint": "https://zoningsignal.com/api/mcp/current_named_patterns",
      "methods": [
        "GET",
        "POST"
      ]
    },
    {
      "name": "meeting_index",
      "title": "Meeting Index",
      "description": "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.",
      "inputSchema": {
        "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
      },
      "endpoint": "https://zoningsignal.com/api/mcp/meeting_index",
      "methods": [
        "GET",
        "POST"
      ]
    },
    {
      "name": "describe_place",
      "title": "Describe Place",
      "description": "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 — useful when the agent is acting on behalf of a user with a specific stake (developer underwriting, investor thesis, attorney precedent search, resident orientation).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "description": "The place slug (e.g., \"clermont-florida\"). Use list_cities to discover available slugs."
          },
          "lens": {
            "type": "string",
            "enum": [
              "synthesis",
              "developer",
              "investor",
              "resident",
              "business",
              "civic",
              "infrastructure",
              "policy"
            ],
            "default": "synthesis",
            "description": "The cognitive position to project. Defaults to \"synthesis\". Single-lens values surface a focused projection from a specific stakeholder position."
          }
        },
        "required": [
          "slug"
        ],
        "additionalProperties": false
      },
      "endpoint": "https://zoningsignal.com/api/mcp/describe_place",
      "methods": [
        "GET",
        "POST"
      ]
    },
    {
      "name": "describe_corridor",
      "title": "Describe Corridor",
      "description": "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.",
      "inputSchema": {
        "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",
              "resident",
              "business",
              "civic",
              "infrastructure",
              "policy"
            ],
            "default": "synthesis",
            "description": "The cognitive position to project. Defaults to \"synthesis\". Single-lens values surface a focused projection."
          }
        },
        "required": [
          "slug"
        ],
        "additionalProperties": false
      },
      "endpoint": "https://zoningsignal.com/api/mcp/describe_corridor",
      "methods": [
        "GET",
        "POST"
      ]
    },
    {
      "name": "semantic_search",
      "title": "Semantic Search",
      "description": "Semantic search across the full corpus — every place dossier, corridor signal, meeting reading, and named-pattern brief. Returns results ranked by cosine similarity in a 1024-dimensional embedding space (Voyage AI 4 + Supabase pgvector). Use when the agent does not know the canonical entity slug or named-pattern title in advance — the search returns the readings whose semantic structure best matches the natural-language query, with type, title, similarity, and resolved URL per hit. Threshold 0.55, top 12.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "description": "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."
          }
        },
        "required": [
          "q"
        ],
        "additionalProperties": false
      },
      "endpoint": "https://zoningsignal.com/api/mcp/semantic_search",
      "methods": [
        "GET",
        "POST"
      ]
    }
  ],
  "resources": [
    {
      "name": "sitemap",
      "description": "Canonical XML sitemap enumerating every published URL.",
      "url": "https://zoningsignal.com/sitemap.xml"
    },
    {
      "name": "llms_index",
      "description": "Lightweight navigation index in markdown (the llms.txt convention).",
      "url": "https://zoningsignal.com/llms.txt"
    },
    {
      "name": "llms_full",
      "description": "IDE-scale long-form companion to llms.txt — full project description, methodology, named patterns, and corpus inventory.",
      "url": "https://zoningsignal.com/llms-full.txt"
    }
  ]
}