{
  "markdown": "# @propraven/mcp\n\nModel 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.\n\n**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).\n\n---\n\n## Hosted (no install)\n\nPoint 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`):\n\n```json\n{\n  \"mcpServers\": {\n    \"propraven\": {\n      \"url\": \"https://propraven.com/mcp\",\n      \"headers\": { \"Authorization\": \"Bearer pz_your_real_key_here\" }\n    }\n  }\n}\n```\n\nClaude Code: `claude mcp add --transport http propraven https://propraven.com/mcp --header \"Authorization: Bearer pz_your_real_key_here\"`.\nThe claude.ai web connector uses OAuth instead — add a custom connector with the same URL and sign in.\n\n---\n\n## Local install in Claude Desktop\n\n**Requirements:** Node ≥18, a PropRaven API key (`pz_…`) from https://propraven.com/settings/api-keys (free, no card).\n\n### One-time setup\n\n```bash\ngit clone https://github.com/jdw2111/propraven-mcp.git\ncd propraven-mcp\nnpm install\nnpm run build\n```\n\n### Wire into Claude Desktop\n\nEdit `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\\Claude\\claude_desktop_config.json` (Windows):\n\n```json\n{\n  \"mcpServers\": {\n    \"propraven\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/propraven-mcp/dist/index.js\"],\n      \"env\": {\n        \"PROPRAVEN_API_KEY\": \"pz_your_real_key_here\"\n      }\n    }\n  }\n}\n```\n\nRestart Claude Desktop. The 8 PropRaven tools (parcel.lookup, parcel.search, parcel.compare, owner.pierce, hazard.score, valuation.estimate, permits.history, sales.history) appear in the tool list.\n\n### Quick test\n\n```\nLook up parcel 37183:0012345 and tell me the owner.\n```\n\nClaude should pick `parcel.lookup` and return canonical record + owner.\n\n---\n\n## Cursor + ChatGPT\n\n**Cursor:** install via the MCP marketplace (search \"PropRaven\") once we publish, or wire manually:\n```jsonc\n// ~/.cursor/mcp.json\n{\n  \"mcpServers\": {\n    \"propraven\": { \"command\": \"node\", \"args\": [\"/abs/path/dist/index.js\"], \"env\": { \"PROPRAVEN_API_KEY\": \"pz_...\" } }\n  }\n}\n```\n\n**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).\n\n---\n\n## Tools\n\n| Tool | Purpose | Backed by |\n|---|---|---|\n| `parcel.lookup` | Resolve one parcel by composite ID, address, or APN | `GET /api/v1/parcels/{id}` or `GET /api/v1/search/full` |\n| `parcel.search` | Filter parcels by geography + attributes | `GET /api/v1/search/full` |\n| `parcel.compare` | Fetch reports for 2–25 parcels for agent-side ranking | `GET /api/v1/parcels/{id}/report` × N |\n| `owner.pierce` | Resolve a name/entity to its full portfolio | `GET /api/v1/owners/{name}/portfolio` |\n| `hazard.score` | Flood / fire / seismic / windstorm / air-quality / crime composite | `GET /api/v1/parcels/{id}/risks` |\n| `valuation.estimate` | AVM + assessed / market values for a parcel | `GET /api/v1/parcels/{id}` |\n| `permits.history` | Permit timeline for a parcel | `GET /api/v1/parcels/{id}/permits` |\n| `sales.history` | Deed timeline ± UCC liens | `GET /api/v1/parcels/{id}/deeds` (+ `/report` if liens) |\n\nTool descriptions are optimized for agent reasoning — they explicitly call out **when not to use** each tool, which is the biggest determinant of agent selection accuracy.\n\n---\n\n## Environment\n\nThe server reads:\n\n| Variable | Default | Purpose |\n|---|---|---|\n| `PROPRAVEN_API_KEY` | *(required)* | Bearer token, format `pz_...` |\n| `PROPRAVEN_BASE_URL` | `https://api.propraven.com` | API host. Use `https://propzilla.vercel.app` during the DNS cutover window. |\n| `PROPRAVEN_TIMEOUT_MS` | `30000` | Per-request timeout in ms. |\n\n---\n\n## Develop / inspect\n\n```bash\n# Live-reloading dev (TypeScript, no build step):\nPROPRAVEN_API_KEY=pz_test... npm run dev\n\n# Or open the MCP Inspector UI:\nPROPRAVEN_API_KEY=pz_test... npm run inspect\n```\n\nThe inspector at https://modelcontextprotocol.io/legacy/tools/inspector lets you call each tool manually and see request/response payloads.\n\n---\n\n## Why this exists\n\nEvery 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).\n\n---\n\n## License\n\nApache-2.0\n",
  "bytes": 4755,
  "sha": "aee1090d21ba09c97ac6bef8fd66352debd5ec143b7974e9586d96e6966ebd7f",
  "repo_slug": "jdw2111/propraven-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_jdw2111_propraven_6e59a3e8/readme"
}