Permit Verdicts MCP
Provides decision-ready verdicts for AI agents, including a crypto settlement oracle for resolving price events and municipal risk intelligence for building permits. It offers tools to check permit activity, find active projects, and resolve crypto price conditions with audit trails.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://permit-api-production-7375.up.railway.app/mcpWhat its tools do
10 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Check building permit activity for a specific address
- Resolve crypto price events with venue-specific evidence
- Find recently permitted projects in a city
- Verify the authenticity of a signed decision ID
Source and maintenance
Protocol and capabilities
- Server
- permit-intelligence 0.5.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 10 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
}
}Tools
10 advertised
list_jurisdictions
List cities covered by the Permit Intelligence API, with pricing and payment details. Free. Full paid feeds for humans: https://permitverdict.com/pricing
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}{
"title": "List covered cities",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}check_permit_activity
FREE. Quick check on whether a street address has building-permit activity on record: how many permits, how many are open, and when the last activity was. No permit detail and no verdict — use get_permit_verdict for those. Full paid feeds for humans: https://permitverdict.com/pricing
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"jurisdiction",
"address"
],
"properties": {
"address": {
"type": "string",
"minLength": 3,
"description": "Street address, e.g. '760 14th St'"
},
"jurisdiction": {
"enum": [
"san_francisco",
"seattle",
"austin",
"nyc",
"chicago",
"los_angeles",
"new_orleans"
],
"type": "string",
"description": "Covered city, e.g. san_francisco"
}
}
}{
"title": "Check permit activity (free)",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}find_active_projects
FREE PREVIEW (5 results). Recently permitted construction projects in a covered city, filtered by declared budget. Use feed='investor' instead to surface expired and abandoned permits (stalled projects, often motivated owners). Full paid feeds for humans: https://permitverdict.com/pricing
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"jurisdiction"
],
"properties": {
"days": {
"type": "integer",
"maximum": 180,
"minimum": 1,
"description": "Lookback window, default 30"
},
"feed": {
"enum": [
"contractor",
"investor"
],
"type": "string",
"description": "contractor = newly filed/issued permits (default); investor = expired/stalled"
},
"max_cost": {
"type": "number",
"minimum": 0,
"description": "Maximum declared job value, 0 = no ceiling"
},
"min_cost": {
"type": "number",
"minimum": 0,
"description": "Minimum declared job value, default 50000"
},
"jurisdiction": {
"enum": [
"san_francisco",
"seattle",
"austin",
"nyc",
"chicago",
"los_angeles",
"new_orleans"
],
"type": "string",
"description": "Covered city, e.g. san_francisco"
}
}
}{
"title": "Find active construction projects (free preview)",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}list_settlement_assets
FREE. Which crypto assets, venues, operators and modes the settlement oracle supports, plus pricing. Full paid feeds for humans: https://permitverdict.com/pricing
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}{
"title": "List settlement oracle coverage (free)",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}resolve_price_event
Settlement verdict for a crypto price event. Answers 'did this asset trade or close above/below a threshold during a window?' with YES/NO/DISPUTED/UNRESOLVED, per-venue evidence from Hyperliquid, Coinbase and Kraken, and stated confidence. (Binance is configured but blocks this host's region; it is reported unavailable rather than silently counted.) Use mode='close' when a market settles on candle closes and mode='touch' when any intrabar print counts — they give different answers and that difference is the most common settlement dispute. Paid: $0.05 in USDC via x402.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"asset",
"operator",
"threshold"
],
"properties": {
"to": {
"type": "string",
"description": "ISO-8601 window end. Defaults to now."
},
"from": {
"type": "string",
"description": "ISO-8601 window start. Defaults to 24h before `to`."
},
"mode": {
"enum": [
"touch",
"close"
],
"type": "string",
"description": "touch = any intrabar print counts (default); close = only candle closes count"
},
"asset": {
"type": "string",
"description": "Asset symbol, e.g. BTC, ETH, SOL"
},
"operator": {
"enum": [
"above",
"at_or_above",
"below",
"at_or_below"
],
"type": "string",
"description": "Comparison against the threshold"
},
"threshold": {
"type": "number",
"description": "Price threshold in USD",
"exclusiveMinimum": 0
},
"payment_header": {
"type": "string",
"description": "X-PAYMENT header from a settled x402 payment. Omit on first call to receive payment requirements."
}
}
}{
"title": "Resolve a crypto price event",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_crypto_spot
Live cross-venue spot price with venue agreement and spread. A wide spread means venues disagree and any settlement in that range is contestable. Paid: $0.01 in USDC via x402.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"asset"
],
"properties": {
"asset": {
"type": "string",
"description": "Asset symbol, e.g. BTC, ETH, SOL"
},
"payment_header": {
"type": "string",
"description": "X-PAYMENT header from a settled x402 payment."
}
}
}{
"title": "Cross-venue spot price",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}decode_decision_id
FREE. Read what a Permit Verdict decision_id claims and check whether we actually issued it. The id is signed by the same wallet that receives payment, so forgery and after-the-fact editing are both detectable. Needs no payment. This tells you the record is genuine; it does NOT tell you the verdict is still correct — use verify_decision for that. Full paid feeds for humans: https://permitverdict.com/pricing
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"decision_id"
],
"properties": {
"decision_id": {
"type": "string",
"description": "A decision_id of the form pv1.<payload>.<signature>"
}
}
}{
"title": "Decode and authenticate a decision_id (free)",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}verify_decision
Re-resolve an attested settlement against the price venues right now and report whether it still holds: CONFIRMED, CHANGED or INDETERMINATE. Call this whenever someone hands you a decision_id you are about to rely on — an attestation proves what was said at the time, but only a fresh resolution proves it is still true. Exchanges revise candle history, and a venue that was unreachable at issue time may answer differently now. Paid: $0.02 in USDC via x402 — cheaper than resolving fresh because you are checking someone else's answer rather than buying a new one.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"decision_id"
],
"properties": {
"decision_id": {
"type": "string",
"description": "A decision_id issued by /v1/oracle/attest"
},
"payment_header": {
"type": "string",
"description": "X-PAYMENT header from a settled x402 payment. Omit on first call to receive payment requirements."
}
}
}{
"title": "Verify an attested settlement",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}attest_price_event
Settlement verdict plus a citable record: a signed decision_id, an integrity hash over the evidence, and every candle that determined the outcome. Use this when the answer may later have to be defended to a counterparty, not when you just need to know. KEEP THE decision_id — it is self-contained, so anyone you show it to can authenticate it for free and re-check it for $0.02 without you supplying anything else. Paid: $0.25 in USDC via x402.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"asset",
"operator",
"threshold"
],
"properties": {
"to": {
"type": "string",
"description": "ISO-8601 window end. Defaults to now."
},
"from": {
"type": "string",
"description": "ISO-8601 window start. Defaults to 24h before `to`."
},
"mode": {
"enum": [
"touch",
"close"
],
"type": "string",
"description": "touch (default) or close"
},
"asset": {
"type": "string",
"description": "Asset symbol, e.g. BTC, ETH, SOL"
},
"operator": {
"enum": [
"above",
"at_or_above",
"below",
"at_or_below"
],
"type": "string",
"description": "Comparison against the threshold"
},
"threshold": {
"type": "number",
"description": "Price threshold in USD",
"exclusiveMinimum": 0
},
"payment_header": {
"type": "string",
"description": "X-PAYMENT header from a settled x402 payment."
}
}
}{
"title": "Attested settlement record",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_permit_verdict
Address-level building-permit intelligence for a covered city: normalized permit history + activity signals + a decision-ready verdict with cited public records. Paid: $2.00 in USDC on base via x402.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"jurisdiction",
"address"
],
"properties": {
"address": {
"type": "string",
"minLength": 3,
"description": "Street address, e.g. '760 14th St'"
},
"jurisdiction": {
"enum": [
"san_francisco",
"seattle",
"austin",
"nyc",
"chicago",
"los_angeles",
"new_orleans"
],
"type": "string",
"description": "Covered city, e.g. san_francisco"
},
"payment_header": {
"type": "string",
"description": "Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive payment requirements."
}
}
}{
"title": "Get permit verdict for an address",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-06: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1243 ms
- 95th percentile latency
- 1243 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1243 ms · metadata changed · 10 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http permit-verdicts-mcp https://permit-api-production-7375.up.railway.app/mcpCodex
codex mcp add permit-verdicts-mcp --url https://permit-api-production-7375.up.railway.app/mcpCursor
{
"mcpServers": {
"permit-verdicts-mcp": {
"url": "https://permit-api-production-7375.up.railway.app/mcp"
}
}
}Cline
{
"mcpServers": {
"permit-verdicts-mcp": {
"type": "streamableHttp",
"url": "https://permit-api-production-7375.up.railway.app/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"permit-verdicts-mcp": {
"type": "http",
"url": "https://permit-api-production-7375.up.railway.app/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http permit-verdicts-mcp https://permit-api-production-7375.up.railway.app/mcpClaude Desktop
https://permit-api-production-7375.up.railway.app/mcpWindsurf
{
"mcpServers": {
"permit-verdicts-mcp": {
"serverUrl": "https://permit-api-production-7375.up.railway.app/mcp"
}
}
}Let your agent find its tools
Find servers like Permit Verdicts MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.