PropRaven MCP Server
Model Context Protocol server for Claude, ChatGPT, Cursor, and any MCP-compatible agent. 18 tools cover the underwriting and due-diligence workflow.
Hosted (recommended)
No install — just configure your MCP client to point at the hosted endpoint and pass your API key.
PropRaven uses API-key bearer auth: pass Authorization: Bearer pz_…. This works today in Claude Desktop, Claude Code, Cursor, and Smithery (header config). The Claude.ai web connector UI has no header field and uses OAuth — see the OAuth section below. Get a free key →
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\\Claude\\claude_desktop_config.json (Windows):
{
"mcpServers": {
"propraven": {
"url": "https://mcp.propraven.com/",
"headers": {
"Authorization": "Bearer pz_your_real_key_here"
}
}
}
}Cursor
Same config at ~/.cursor/mcp.json.
Claude.ai (web) — OAuth
The claude.ai web connector UI has no header field, so it uses OAuth (authorization-code + PKCE). Add the connector with the hosted URL and PropRaven's OAuth client id when prompted; you'll approve a one-time consent screen. The token maps to a read-only key on your account's plan. Bearer-header clients (Desktop/Code/Cursor) don't need this.
ChatGPT Custom GPT
Add an Action with OpenAPI URL api.propraven.com/openapi.json and authentication = API Key (Bearer). Native MCP support in ChatGPT requires OAuth — coming with v0.2.
Local (stdio)
Use the npm package for offline / latency-sensitive workflows. Talks to the PropRaven REST API directly.
npm install -g @propraven/mcp{
"mcpServers": {
"propraven": {
"command": "propraven-mcp",
"env": {
"PROPRAVEN_API_KEY": "pz_your_real_key_here"
}
}
}
}Tools
parcel.lookupparcel.searchparcel.compareowner.piercehazard.scorevaluation.estimatepermits.historysales.historyget_freshnessdeals.absenteedeals.flipsdeals.contractorsdeals.lendersdeals.entitiesdeals.long_holddeals.high_land_ratiodeals.portfolio_ownersmarket.coverageEach tool description is tuned for agent reasoning — explicit “use when / do NOT use when” framing.
Verification
curl -X POST https://mcp.propraven.com/ \
-H "Authorization: Bearer pz_your_real_key" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | jq '.result.tools | length'
# expect: 18