--- title: CrossBeam MCP Server emoji: 🔌 colorFrom: indigo colorTo: gray sdk: docker app_port: 7860 pinned: false --- # CrossBeam MCP Server — municipal plan review for agentic AI Exposes the CrossBeam plan-review engine as **MCP tools** for any agent platform: Claude, ChatGPT, Gemini, n8n, HF UI, local clients, or through a tunnel. **Endpoint:** `https://-.hf.space/mcp` (both `/mcp` and `/mcp/` work) ## Tools | Tool | What it does | |---|---| | `list_municipalities` | Configured jurisdictions and their code/bylaw frameworks | | `list_review_tracks` | Review types (suites, multi-residential, institutional…) + available models | | `list_knowledge` | The knowledge base reviews are grounded in | | `review_plan_set` | Review a plan set (PDF, base64) → structured findings, technical screening report, and City-style Detailed Review | | `analyze_corrections_letter` | Interpret a corrections letter → item-by-item analysis + draft response | | `generate_checklist` | Pre-submission checklist for a project type | The first three need no API key. The rest call an LLM provider — pass `api_key` per call, or set a Space secret (`OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, `GEMINI_API_KEY`, `GROQ_API_KEY`) and pass just `provider`. **The agent's own model does not perform the review.** These tools run the deterministic engine — scope gate, grounded citations, verdict reconciliation — so the guarantees hold no matter which client calls them. In particular the corrections draft never claims a correction is resolved; every resolution is an `[APPLICANT: …]` placeholder. ### City of Calgary Detailed Review output For Calgary reviews, pass municipal metadata when it is available: - `application_number`, `site_address`, `applicant`, and `community` - `land_use_district` and `use_type` - `planning_contact`, `date_dr_sent`, and `response_due_date` - `municipal_records_context` for verified City facts not shown on the drawings, such as an existing registered or permitted secondary suite The returned `city_review_letter_markdown` follows the City's Development Permit sequence: application header, General Comments, Bylaw Discrepancies (`Regulation | Standard | Provided`), Prior to Decision Requirements, applicant options, and Advisory Comments. Building-code and engineer-of-record observations remain in the separate technical report and are not presented as City DP conditions. The Calgary suite track deterministically reconciles parcel coverage, parking for each dwelling unit, backyard-suite rear setback, closest-façade separation, private amenity space, and same-parcel suite density. A missing check becomes a verification item; the engine does not silently omit it or invent compliance. ## Running locally (STDIO, e.g. Claude Desktop) ```bash pip install -r requirements.txt python mcp_server.py # STDIO MCP_HTTP=1 MCP_PORT=7860 python mcp_server.py # HTTP for remote clients ``` See `mcp_config_examples.md` for per-client configuration. ## Any municipality Same as the UI Space: add `jurisdictions/.yaml` and that city's `skills/`. Callers select it with the `municipality` argument. See `FORKING.md`.