Permit Verdicts

Building-permit verdicts by address, with cited records. SF, Seattle, Austin, NYC. Pay per call.

Should I use this

Quality & Safety

B
Description quality
98%
Schema completeness
86%
Naming quality
94%
Poisoning risk
0%
Permission match
100%
Protocol compliance
100%

Findings (6)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains URL to non-standard domainin list_jurisdictions
  • MEDIUMTool description contains URL to non-standard domainin check_permit_activity
  • MEDIUMTool description contains URL to non-standard domainin find_active_projects
  • MEDIUMTool description contains URL to non-standard domainin list_settlement_assets
  • MEDIUMTool description contains URL to non-standard domainin decode_decision_id

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,290Tokens (tool definitions)
~1.3 KBTypical response size
Moderate attention impact (1.79% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "permit-verdicts": {
      "url": "https://permit-api-production-7375.up.railway.app/mcp"
    }
  }
}

Remote endpoints

https://permit-api-production-7375.up.railway.app/mcpstreamable-http

What it can do

Tool inventory

Tools (10)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢check_permit_activity(jurisdiction, address)

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

Input Schema

{
  "type": "object",
  "properties": {
    "jurisdiction": {
      "type": "string",
      "enum": [
        "san_francisco",
        "seattle",
        "austin",
        "nyc",
        "chicago",
        "los_angeles",
        "new_orleans"
      ],
      "description": "Covered city, e.g. san_francisco"
    },
    "address": {
      "type": "string",
      "minLength": 3,
      "description": "Street address, e.g. '760 14th St'"
    }
  },
  "required": [
    "jurisdiction",
    "address"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢find_active_projects(jurisdiction, feed, days, min_cost, max_cost)

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

Input Schema

{
  "type": "object",
  "properties": {
    "jurisdiction": {
      "type": "string",
      "enum": [
        "san_francisco",
        "seattle",
        "austin",
        "nyc",
        "chicago",
        "los_angeles",
        "new_orleans"
      ],
      "description": "Covered city, e.g. san_francisco"
    },
    "feed": {
      "description": "contractor = newly filed/issued permits (default); investor = expired/stalled",
      "type": "string",
      "enum": [
        "contractor",
        "investor"
      ]
    },
    "days": {
      "description": "Lookback window, default 30",
      "type": "integer",
      "minimum": 1,
      "maximum": 180
    },
    "min_cost": {
      "description": "Minimum declared job value, default 50000",
      "type": "number",
      "minimum": 0
    },
    "max_cost": {
      "description": "Maximum declared job value, 0 = no ceiling",
      "type": "number",
      "minimum": 0
    }
  },
  "required": [
    "jurisdiction"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢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

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢resolve_price_event(asset, operator, threshold, from, to, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "asset": {
      "type": "string",
      "description": "Asset symbol, e.g. BTC, ETH, SOL"
    },
    "operator": {
      "type": "string",
      "enum": [
        "above",
        "at_or_above",
        "below",
        "at_or_below"
      ],
      "description": "Comparison against the threshold"
    },
    "threshold": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Price threshold in USD"
    },
    "from": {
      "description": "ISO-8601 window start. Defaults to 24h before `to`.",
      "type": "string"
    },
    "to": {
      "description": "ISO-8601 window end. Defaults to now.",
      "type": "string"
    },
    "mode": {
      "description": "touch = any intrabar print counts (default); close = only candle closes count",
      "type": "string",
      "enum": [
        "touch",
        "close"
      ]
    },
    "payment_header": {
      "description": "X-PAYMENT header from a settled x402 payment. Omit on first call to receive payment requirements.",
      "type": "string"
    }
  },
  "required": [
    "asset",
    "operator",
    "threshold"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_crypto_spot(asset, payment_header)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "asset": {
      "type": "string",
      "description": "Asset symbol, e.g. BTC, ETH, SOL"
    },
    "payment_header": {
      "description": "X-PAYMENT header from a settled x402 payment.",
      "type": "string"
    }
  },
  "required": [
    "asset"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢decode_decision_id(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

Input Schema

{
  "type": "object",
  "properties": {
    "decision_id": {
      "type": "string",
      "description": "A decision_id of the form pv1.<payload>.<signature>"
    }
  },
  "required": [
    "decision_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢verify_decision(decision_id, payment_header)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "decision_id": {
      "type": "string",
      "description": "A decision_id issued by /v1/oracle/attest"
    },
    "payment_header": {
      "description": "X-PAYMENT header from a settled x402 payment. Omit on first call to receive payment requirements.",
      "type": "string"
    }
  },
  "required": [
    "decision_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢attest_price_event(asset, operator, threshold, from, to, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "asset": {
      "type": "string",
      "description": "Asset symbol, e.g. BTC, ETH, SOL"
    },
    "operator": {
      "type": "string",
      "enum": [
        "above",
        "at_or_above",
        "below",
        "at_or_below"
      ],
      "description": "Comparison against the threshold"
    },
    "threshold": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Price threshold in USD"
    },
    "from": {
      "description": "ISO-8601 window start. Defaults to 24h before `to`.",
      "type": "string"
    },
    "to": {
      "description": "ISO-8601 window end. Defaults to now.",
      "type": "string"
    },
    "mode": {
      "description": "touch (default) or close",
      "type": "string",
      "enum": [
        "touch",
        "close"
      ]
    },
    "payment_header": {
      "description": "X-PAYMENT header from a settled x402 payment.",
      "type": "string"
    }
  },
  "required": [
    "asset",
    "operator",
    "threshold"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_permit_verdict(jurisdiction, address, payment_header)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "jurisdiction": {
      "type": "string",
      "enum": [
        "san_francisco",
        "seattle",
        "austin",
        "nyc",
        "chicago",
        "los_angeles",
        "new_orleans"
      ],
      "description": "Covered city, e.g. san_francisco"
    },
    "address": {
      "type": "string",
      "minLength": 3,
      "description": "Street address, e.g. '760 14th St'"
    },
    "payment_header": {
      "description": "Optional X-PAYMENT header value from a completed x402 payment. Omit on first call to receive payment requirements.",
      "type": "string"
    }
  },
  "required": [
    "jurisdiction",
    "address"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded10 tools
verifiedversion not recorded10 tools