Propraven Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Propraven Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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).
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.
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.
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).
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.
| 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>.
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 inspectThe inspector at https://modelcontextprotocol.io/legacy/tools/inspector lets you call each tool manually and see request/response payloads.
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).
Apache-2.0
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.