Server data from the Official MCP Registry
Evidence-linked municipal permit preflight for 7 Canadian jurisdictions with deterministic rules.
About
Evidence-linked municipal permit preflight for 7 Canadian jurisdictions with deterministic rules.
Remote endpoints: streamable-http: https://projectpermit-mcp-production.up.railway.app/mcp
Security Report
Valid MCP server (6 strong, 2 medium validity signals). No known CVEs in dependencies. Imported from the Official MCP Registry.
2 tools verified · Open access · No issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
Permissions Required
This plugin requests these system permissions. Most are normal for its category.
How to Connect
Remote Plugin
No local installation needed. Your AI client connects to the remote endpoint directly.
Add this to your MCP configuration to connect:
{
"mcpServers": {
"io-github-changhuliu-projectpermit": {
"url": "https://projectpermit-mcp-production.up.railway.app/mcp"
}
}
}Documentation
View on GitHubFrom the project's GitHub README.
ProjectPermit / BuildRequirements
ProjectPermit is an evidence-linked municipal permit preflight engine for construction and renovation projects. BuildRequirements is the deterministic rules engine inside it.
Current jurisdiction coverage
Current deterministic rule footprint:
gatineau_qcottawa_ontoronto_onmississauga_onlaval_qclongueuil_qcvancouver_bc
The engine covers 8 normalized project families, preserves uncertainty instead of guessing, attaches official-source evidence to rule results, and exposes the same jurisdiction router through HTTP, standard MCP, and x402-paid MCP.
First-party municipal/open-data address resolution is available for Gatineau, Ottawa, Toronto, Mississauga and Vancouver. Laval and Longueuil currently support rule preflight with resolve_address=false.
The engine deliberately does not call an LLM. A calling agent normalizes natural-language scope into structured facts; BuildRequirements applies deterministic municipal rules.
Live endpoints
- HTTP API:
https://projectpermit-api-v2-production.up.railway.app - Standard MCP developer-validation preview:
https://projectpermit-mcp-production.up.railway.app/mcp - Paid MCP:
https://projectpermit-x402-mcp-production.up.railway.app/mcp
The HTTP API exposes free machine-readable capability discovery at GET /v1/capabilities.
The paid MCP exposes a free projectpermit_info tool and the x402-paid check_project_requirements tool. The current testnet discovery price is $0.01 USDC on Base Sepolia (eip155:84532); it is not the intended commercial price.
The result is a preflight information package, not municipal authorization, legal advice, engineering certification, or building-code design approval.
Market thesis
The business target is not a homeowner-only Do I need a permit? wizard and not a managed permit-submission service. ProjectPermit is intended to become a cross-jurisdiction permit-requirements intelligence layer embedded in contractor, property-management, construction/design, permitting, and real-estate software/Agent workflows.
Seven jurisdictions are now enough to validate distribution. Additional city expansion is intentionally paused until repeated external usage, a credible high-volume integration, or a design partner requests more coverage with measurable call volume.
The first commercially meaningful internal checkpoint is roughly 10,000 monthly external preflight calls. A preferred proof shape is approximately 5 integrations × 2,000 calls/month, or one platform workflow capable of the same volume. This is a validation target, not a forecast.
Read:
docs/MARKET_VALIDATION.md— market background, pricing thesis and original call-volume modeldocs/DISTRIBUTION_VALIDATION.md— 2026 platform evidence, competition and 30-day validation plandocs/CALL_VOLUME_THRESHOLDS.md— bottom-up monthly-call and revenue thresholdsdocs/PAIN_EVIDENCE.md— observed field/community pain evidence separated from assumptionsdocs/TARGET_ACCOUNT_RANKING.md— ranked design-partner targets by pain and distribution leveragedocs/OUTREACH_BATCH_01.md— tailored first outreach batch, prepared but not sentdocs/DESIGN_PARTNER_TRIAL.md— low-friction 20-case pilot protocoldocs/EXTERNAL_USAGE_BASELINE.md— clean external-usage starting baselinedocs/INTEGRATION_QUICKSTART.md— copy-paste developer integration examples
Architecture
All transports call the same shared address-aware preflight pipeline:
HTTP / standard MCP / x402 paid MCP -> preflight_service -> municipal address/GIS adapters -> jurisdiction router -> deterministic rules
Resolved non-null municipal property facts can enrich a request before rule evaluation. Unknown overlays remain unknown and never silently overwrite an explicit caller value.
Successful preflight calls also emit privacy-minimal structured usage telemetry for market validation. The telemetry excludes civic address, coordinates, property identifiers, payment credentials, IP/user-agent data and raw client tags. Internal CI/owner smoke traffic is explicitly tagged so it can be excluded from external call counts. Municipal HTTP request URL logging is suppressed so address/query details are not leaked indirectly through httpx INFO logs.
Quick start
python -m venv .venv
source .venv/bin/activate
pip install -e .
uvicorn projectpermit.api:app --host 127.0.0.1 --port 8000
For standard MCP support:
pip install -e '.[mcp]'
projectpermit-mcp
projectpermit-mcp uses MCP Python SDK v2 Streamable HTTP, JSON responses, and stateless HTTP. It listens on 127.0.0.1:8001 by default. Override with PROJECTPERMIT_MCP_HOST and PROJECTPERMIT_MCP_PORT.
Run tests:
PYTHONPATH=src python -m unittest discover -s tests -v
API
POST /v1/check-project-requirements
Example:
{
"jurisdiction": "toronto_on",
"resolve_address": false,
"project": {
"family": "window_door",
"action": "replace_same_size",
"single_dwelling_house": true,
"structural_change": false,
"new_exit": false
}
}
For an address-aware jurisdiction, set resolve_address=true and supply address; the same behavior is available through standard MCP and paid MCP.
Developer-validation workflow
The standard MCP endpoint is temporarily free so a design partner can test workflow fit without a wallet or billing setup. A recommended pilot uses 20 anonymized real scopes, a stable non-PII context.client_tag, and measures whether the result actually changes the next workflow step.
Partner evidence is tracked in:
data/partner_targets.csv— 20 candidate design-partner accountsdata/partner_feedback.csv— structured conversation/pilot/call-volume outcomesdata/design_partner_scope_template.csv— anonymized pilot-case template
Summarize validation evidence with:
python scripts/summarize_partner_feedback.py
Unknown interview values remain unknown rather than being silently converted to zero. The commercial gates therefore depend on recorded external evidence, not optimistic inference.
Repository map
src/projectpermit/engine.py— original Gatineau/Ottawa deterministic rulessrc/projectpermit/expansion_rules.py— Toronto/Mississauga rulessrc/projectpermit/quebec_expansion_rules.py— Laval/Longueuil rulessrc/projectpermit/vancouver_rules.py— Vancouver rulessrc/projectpermit/jurisdiction_router.py— public jurisdiction dispatchersrc/projectpermit/preflight_service.py— shared address-aware preflight pipelinesrc/projectpermit/address.py— Gatineau/Ottawa/Toronto address/GIS adapterssrc/projectpermit/mississauga_address.py— Mississauga address/property adaptersrc/projectpermit/vancouver_address.py— Vancouver first-party open-data adaptersrc/projectpermit/telemetry.py— privacy-minimal usage eventssrc/projectpermit/http_fetch.py— municipal HTTP fetch with request-URL log suppressionsrc/projectpermit/api.py— HTTP APIsrc/projectpermit/mcp_server.py— standard MCP v2 developer previewsrc/projectpermit/paid_mcp_server.py— x402-native paid MCP v2 serversrc/projectpermit/mcp_v2_x402_compat.py— MCP SDK v2 / x402 result compatibility shimdata/source_manifest.json— official source registry/freshness metadatadata/partner_targets.csv— first 20 design-partner targetsdata/partner_feedback.csv— structured external-validation trackerdata/design_partner_scope_template.csv— anonymized 20-case pilot templateschemas/— public request/response schemasscripts/mcp_remote_smoke.py— seven-city + Vancouver address-aware public MCP smokescripts/paid_mcp_unpaid_smoke.py— no-cost remote payment-challenge testscripts/paid_mcp_buyer_smoke.py— real buyer-side testnet paid MCP callscripts/facilitator_capability_probe.py— no-cost facilitator capability matrixscripts/projectpermit_bazaar_lookup.py— read-only Bazaar catalog lookupscripts/summarize_usage_logs.py— external/internal usage-log summarizerscripts/summarize_partner_feedback.py— partner conversation/call-volume gate summarizerdocs/PHASE0_SPEC.md— original product/engineering scopedocs/PHASE0_RELEASE_READINESS.md— completed Phase 0 release gatedocs/MARKET_VALIDATION.md— market background and original business gatesdocs/DISTRIBUTION_VALIDATION.md— platform distribution validation plandocs/CALL_VOLUME_THRESHOLDS.md— monthly API-call economics and go/no-go thresholdsdocs/PAIN_EVIDENCE.md— observed workflow pain evidencedocs/TARGET_ACCOUNT_RANKING.md— account prioritization modeldocs/PARTNER_OUTREACH.md— outreach/discovery playbookdocs/OUTREACH_BATCH_01.md— first tailored outreach batchdocs/DESIGN_PARTNER_TRIAL.md— design-partner pilot packagedocs/EXTERNAL_USAGE_BASELINE.md— telemetry baseline before outreachdocs/INTEGRATION_QUICKSTART.md— developer quickstartdocs/X402_ARCHITECTURE.md— payment/discovery design
Production verification
The seven-city public MCP footprint and Vancouver address-aware resolution have been verified from GitHub Actions against Railway production. The Vancouver production smoke resolved the City Hall civic address 453 W 12TH AV and City zoning CD-1 (46) through Vancouver first-party open data.
Real buyer-side paid HTTP and paid MCP flows were already verified end-to-end earlier. No additional paid smoke calls should be made merely to prove plumbing that has already passed.
x402 / Bazaar status
The canonical paid HTTP resource is:
https://projectpermit-api-v2-production.up.railway.app/v1/check-project-requirements
It is indexed by the current Bazaar-capable facilitator canary with canonical HTTPS discovery metadata.
Current facilitator canary:
https://facilitator.goplausible.xyz
CI / verification
Current CI covers:
- Python 3.11 + 3.13
- deterministic jurisdiction-rule and schema tests
- address-adapter and shared-preflight regressions
- telemetry privacy contract
- municipal request-log privacy guard
- partner-validation metric summarizer tests
- official source-manifest contracts
- MCP v2 integration
- x402 wire behavior
- MCP v2 settlement-receipt compatibility
- Docker build + live
/health - public seven-jurisdiction MCP tool invocation
- public Vancouver address-aware MCP invocation
- public paid-MCP unpaid challenge
- public HTTP Bazaar unpaid challenge
- facilitator capability checks
- canonical HTTPS Bazaar catalog state
See STATUS.md for the current engineering state and the distribution documents above for the commercial gates.
Safety boundary
Determinations intentionally use preflight language such as REQUIRED, LIKELY_REQUIRED, LIKELY_NOT_REQUIRED, ADDITIONAL_REVIEW_REQUIRED, and MUNICIPAL_CONFIRMATION_REQUIRED where uncertainty exists. Ambiguous official thresholds are conservatively routed to confirmation instead of being silently resolved.
The engine should not be presented as a municipality, permit issuer, lawyer, architect, or engineer.
Reviews
No reviews yet
Be the first to review this server!
More Developer Tools MCP Servers
Git
Freeby Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
Fetch
Freeby Modelcontextprotocol · Developer Tools
Web content fetching and conversion for efficient LLM usage
Toleno
Freeby Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
mcp-creator-python
Freeby mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.
MCP Marketplace
Freeby mcp-marketplace · Developer Tools
Search and install MCP servers from inside your AI client.
MarkItDown
Freeby Microsoft · Content & Media
Convert files (PDF, Word, Excel, images, audio) to Markdown for LLM consumption
