Skip to main content
Glama
@propraven/mcp

@propraven/mcp

@propraven/mcp

Model Context Protocol server for PropRaven — gives Claude, ChatGPT, Cursor, and any MCP-compatible agent canonical access to 191.3M US parcels (110.0M mapped) with ownership, valuation, permits, deeds, hazard, and market data.

Hosted endpoint: https://propraven.com/mcp (Streamable HTTP, no install — docs: https://propraven.com/docs/mcp · agents + x402: https://propraven.com/docs/agents). Or run the stdio server locally (below).


Hosted (no install)

Point any HTTP-transport MCP client at https://propraven.com/mcp with your API key as a bearer header. Claude Desktop / Cursor (claude_desktop_config.json, ~/.cursor/mcp.json):

{
  "mcpServers": {
    "propraven": {
      "url": "https://propraven.com/mcp",
      "headers": { "Authorization": "Bearer pz_your_real_key_here" }
    }
  }
}

Claude Code: claude mcp add --transport http propraven https://propraven.com/mcp --header "Authorization: Bearer pz_your_real_key_here". The claude.ai web connector uses OAuth instead — add a custom connector with the same URL and sign in.


Related MCP server: Dilix MCP

Local stdio server (npx @propraven/mcp)

Requirements: Node ≥18, a PropRaven API key (pz_…) from https://propraven.com/settings/api-keys (free, no card).

Claude Desktop — edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "propraven": {
      "command": "npx",
      "args": ["-y", "@propraven/mcp"],
      "env": { "PROPRAVEN_API_KEY": "pz_your_real_key_here" }
    }
  }
}

Cursor (~/.cursor/mcp.json) takes the same block. Claude Code: claude mcp add propraven --env PROPRAVEN_API_KEY=pz_your_real_key_here -- npx -y @propraven/mcp.

Restart the client. The 8 PropRaven tools appear in the tool list.

Quick test

Look up parcel 37:119:12104406 and tell me the owner.

The agent should pick parcel_lookup and return the canonical parcel card with the owner.

ChatGPT: Custom GPT → Actions → OpenAPI URL https://api.propraven.com/openapi.json with API-key (Bearer) auth; native MCP-in-ChatGPT can use the hosted endpoint https://propraven.com/mcp (OAuth 2.1 + PKCE).


Tools

Names match the hosted server (^[a-zA-Z0-9_-]{1,64}$, as MCP clients and the Anthropic API require).

Tool

Purpose

Backed by

parcel_lookup

Resolve one parcel by ID, address, or APN

GET /api/v1/parcels/{id} (ID) or GET /api/v1/search/full (address / APN)

parcel_search

Text search by owner, address fragment, APN or city (+ state/city filters, keyset cursor)

GET /api/v1/search/full

parcel_compare

Free card (+ hazards) for 2–25 parcels, for agent-side ranking

GET /api/v1/parcels/{id} (+ /risks) × N

owner_pierce

Parcels titled under an owner name (optional state filter, best-effort ticker)

GET /api/v1/owners/{name}/portfolio (+ /owners/search for ticker)

hazard_score

Flood / wildfire / seismic / windstorm / air-quality / crime blocks

GET /api/v1/parcels/{id}/risks

valuation_estimate

Market value, AVM, assessed values, last sale, $/sqft

GET /api/v1/parcels/{id}

permits_history

Permit timeline (≤100 newest, with true-count basis)

GET /api/v1/parcels/{id}/permits?shape=envelope

sales_history

Deed / transfer timeline

GET /api/v1/parcels/{id}/deeds?shape=envelope

Parcel IDs. The canonical form is state_fips:county_fips:parcel_id, e.g. 37:119:12104406. The legacy 5-digit form (37119:12104406) and PropRaven parcel UUIDs are also accepted. parcel_search and parcel_lookup's address search add a lookup_id to every result (search rows carry the PropRaven UUID in parcel_id), which parcel_lookup / parcel_compare accept.

No tool spends money. The client only issues GETs to the seven free / metered read endpoints above, refuses every other path before a request is sent (the paid parcel report, comp pack, risk score, owner report, leads, storefront, …), and never sends a payment header. If the API ever answers with an x402 402 Payment Required, the tool returns 402 payment required — this tool never pays. Calls still count against your plan's monthly quota. To buy a dossier, use the hosted server's explicit buy_* tools or propraven.com.

Errors are RFC 7807 problem details, surfaced as <status> <code>: <detail> (e.g. 404 not_found: …). A 429 or 503 is retried once when Retry-After is ≤ 10 s.

Tool descriptions call out when not to use each tool, which is the biggest determinant of agent selection accuracy.


Environment

Variable

Default

Purpose

PROPRAVEN_API_KEY

(required)

Bearer token, format pz_...

PROPRAVEN_BASE_URL

https://propraven.com

API host (every path starts with /api/v1).

PROPRAVEN_TIMEOUT_MS

30000

Per-request timeout in ms.

Requests carry User-Agent: @propraven/mcp/<version>.


Develop / inspect

npm ci
npm run build
npm test          # node:test suite — no network, no API key needed

# Live-reloading dev (TypeScript, no build step):
PROPRAVEN_API_KEY=pz_test... npm run dev

# Or open the MCP Inspector UI:
PROPRAVEN_API_KEY=pz_test... npm run inspect

The inspector at https://modelcontextprotocol.io/legacy/tools/inspector lets you call each tool manually and see request/response payloads.


Why this exists

Every Claude / ChatGPT / Cursor workflow that touches property data needs an authoritative parcel-lookup tool. There is no canonical property-data MCP today. PropRaven aims to be it before the first-mover window closes (~12–18 months).


License

Apache-2.0

Available Tools

8 tools
hazard.scoreAInspect

Composite hazard score for a parcel: flood (FEMA NFIP zone), wildfire (USFS WUI), seismic (USGS ASCE7), windstorm, air quality (EPA AQS), and crime (composite tier). Each sub-score includes source citations. Use when the user asks about a property's risk profile — insurance pricing, underwriting, or due diligence. Do NOT use to compare multiple parcels (use parcel.compare with a hazard criterion). Backed by /api/v1/parcels/{id}/risks. Coverage varies by hazard: flood and crime are widely available; wildfire is strongest in CA/OR/WA/ID/MT/CO; seismic strongest on the West Coast.

Inputs: parcel_id (required), include.

owner.pierceAInspect

Resolve an owner name or entity to its full property portfolio. Pierces LLC/Trust veils where PropRaven has linked the entity to its parent (via SEC Ex 21, sponsor parent-rollup, and county-level filings). Returns: canonical owner name, entity type, portfolio summary (count, total value, geographic distribution), and a list of parcels owned. Use when the user names a person, LLC, trust, or public company and wants to see what they own. Do NOT use when starting from a parcel (use parcel.lookup, which returns owner inline). If ticker is provided, the tool searches owner records for the company name first (best-effort). Tier-1 portfolios (SEC-tracked public companies — DHI, INVH, AMH, PHM, etc.) have higher confidence on cross-state attribution.

Inputs: name, state, ticker.

parcel.compareAInspect

Fetch reports for 2–25 parcels so they can be ranked against criteria. Returns each parcel's full report (identity, owner, valuation, risks, permits, deeds) in a single payload — the calling agent does the per-criterion scoring and final ranking. This is the underwriting / shortlist loop. Use when the user has identified candidate properties (often from parcel.search) and wants them ranked. Do NOT use to discover new candidates (use parcel.search) or for a single property (use parcel.lookup + hazard.score). The criteria argument is returned verbatim in the response so the agent can pin its scoring to the user's intent.

Inputs: criteria (required), parcel_ids (required).

parcel.lookupAInspect

Resolve a single US parcel by identifier (composite county_fips:parcel_id, street address, or APN). Returns the canonical PropRaven record: identity, current owner, valuation, geography, and source provenance. Use when the user names one specific property. Do NOT use when ranking multiple parcels (use parcel.compare) or when filtering by criteria (use parcel.search). Example: parcel.lookup({ query: "37183:0012345" }) or parcel.lookup({ query: "420 S Tryon St, Charlotte NC" }).

Inputs: query (required).

parcel.searchAInspect

Filter US parcels by geography + attributes. Returns a ranked list (default 50, max 200) of matches with summary fields (id, address, owner, assessed value, last sale). Use when the user wants properties matching criteria ("absentee-owned SFR in Mecklenburg County over $400k", "flipped properties in Phoenix since 2024"). Do NOT use when looking up a single known property (use parcel.lookup) or ranking a known set (use parcel.compare). Backed by the /api/v1/search/full text+attribute index; pass q as either a city, owner name, or address fragment.

Inputs: q (required), dir, city, page, +4 more.

permits.historyAInspect

Timeline of building / construction / demolition permits filed against a parcel. Each permit includes type, status, declared value, issued date, completion date, contractor (where disclosed), and the originating jurisdiction's permit ID. Use when the user asks about construction activity, recent renovations, planned work, or wants to detect a property that's actively changing. Do NOT use to find properties WITH recent permits across a market (use parcel.search). Coverage varies by county: top-100 metros have near-complete permit feeds; smaller jurisdictions may be empty.

Inputs: parcel_id (required), since, types.

sales.historyAInspect

Deed / transaction timeline for a parcel: every recorded sale, transfer, refinance. Each event includes date, sale price (where disclosed; flagged when withheld by state), buyer, seller, and deed type. Use when the user asks about a property's transaction history, flip activity, or holding period. Do NOT use to find properties with recent sales market-wide (use parcel.search with sold_since) or to estimate current market value (use valuation.estimate, which incorporates this data plus comps). Note: 13 states do not disclose sale prices on deeds (KS, MS, TX, UT, WY, etc.); PropRaven flags these explicitly. If include_liens=true, the tool ALSO fetches UCC liens via the parcel report — two API calls.

Inputs: parcel_id (required), since, include_liens.

valuation.estimateAInspect

Estimated market value for a parcel: market estimate, assessed value, last sale price, and the underlying assessment + improvement breakdown. Use when the user asks for a property's value, market estimate, AVM, or wants to compare assessed vs market. Do NOT use as a substitute for an appraisal — PropRaven AVM has ±10–15% MAE in normal markets, wider in tail. Historical AVM (as_of) is not yet supported in v1; tool returns the current snapshot.

Inputs: parcel_id (required), as_of.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.5/5.0

    Scored across 8 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose: parcel.lookup for single parcel, parcel.search for filtering, parcel.compare for ranking multiple, owner.pierce for portfolio, hazard.score for risk, valuation.estimate for value, permits.history for construction, sales.history for transactions. No overlaps.

    Naming Consistency5/5

    All tools use a consistent 'domain.action' pattern with lowercase and underscores (e.g., parcel.lookup, parcel.search, owner.pierce). The verb or noun after the dot is descriptive and follows a clear taxonomy.

    Tool Count5/5

    8 tools is well-scoped for a property intelligence server. Covers core operations (lookup, search, compare), ownership, risk, valuation, permits, and sales without excessive granularity.

    Completeness4/5

    Covers most key workflows: parcel identification, search, comparison, owner research, hazard, valuation, permits, and sales history. Minor gaps like zoning or tax history are minor; the set is comprehensive for typical use cases.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      A comprehensive Model Context Protocol server for real estate data management that provides tools and resources for property listings, agent management, market analysis, client relationships, and area intelligence.
      72
      AGPL 3.0
    • A
      license
      A
      quality
      D
      maintenance
      Open-source MCP server providing real estate regulatory intelligence (zoning, permits, entitlements, deal scoring) for US properties, enabling AI agents to access 10 callable tools.
      12
      7 npm
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables AI agents to look up county assessor public records for properties, check MLS discrepancies against public data, and discover new county assessor sources, all via a local MCP server for real-estate appraisal workflows.
      6
      MIT