Propraven vs Exa MCP Server

A side-by-side look at the Propraven and Exa MCP Server MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.

Propraven logoPropravenReal Estate · Local subprocess (stdio)Property intelligence: 180M+ US parcels — lookup, search, owners, hazards, permits, deeds.60GoodAuth: not declaredExa MCP Server logoExa MCP ServerSearch & Data Extraction · Local subprocess (stdio)A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.73GreatAuth: no auth required

Verdict: choose Propraven for real estate work as a local process; choose Exa MCP Server for search & data extraction as a local process. You can also run both side by side in one mcpServers block.

Which MCP server should you choose?

Propraven logoChoose Propraven when

  • You need dedicated capabilities in the Real Estate domain.
  • You prefer a local stdio subprocess transport.
  • You have the keys it needs: PROPRAVEN_API_KEY.
  • You want tools like parcel_lookup, parcel_search, parcel_compare.
Explore Propraven

Exa MCP Server logoChoose Exa MCP Server when

  • You need dedicated capabilities in the Search & Data Extraction domain.
  • You prefer a local stdio subprocess transport.
  • Its auth model fits you: No auth required.
  • You want tools like web_search_exa, web_fetch_exa.
Explore Exa MCP Server

Feature & specification comparison

Rows where the two servers differ are marked.

SpecPropraven logoPropravenExa MCP Server logoExa MCP Server
CategoryReal EstateSearch & Data Extraction
Quality signal60/100 · Good73/100 · Great
Install commandConfirmedConfirmed
TransportLocal subprocess (stdio)Local subprocess (stdio)
AuthNot declaredNo auth required
PricingNot declaredFree
Required env varsPROPRAVEN_API_KEYNone listed
Verified ownerCommunity listingCommunity listing
GitHub stars05,162
Directory activity 1 views 0 installs 0 upvotes 10 views 0 installs 0 upvotes
Tools82

Tools & capabilities

Propraven tools 8

  • parcel_lookupResolve a single US parcel by identifier (canonical state_fips:county_fips:parcel_id, PropRaven UUID, street address, or APN). An ID returns the canonical PropRaven parcel card (GET /api/v1/parcels/{id}): identity, current owner, valuation, geography and source provenance. An address or APN runs the text search and returns up to 5 candidates — re-call with the chosen candidate's `lookup_id` to get the card. 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: "37:119:12104406" })` or `parcel_lookup({ query: "2232 Wilmore Dr, Charlotte, NC 28203" })`. Free read — never purchases anything.
  • parcel_searchText search over US parcels (GET /api/v1/search/full): pass `q` as a city, owner name, address fragment or APN, optionally narrowed by `field`, `state` and `city`. Returns `{ results, total, totalCapped, page, pages, hasMore, nextCursor }` (default 50 per page, max 200); each result carries parcel_id, apn, county_fips, state_fips, site_address, city, zip5, owner_name, total_value, latitude, longitude (in search rows `parcel_id` is the PropRaven UUID and `county_fips` is 5-digit), plus `lookup_id`, added by this server — pass it to parcel_lookup / parcel_compare. Page with `cursor` (the previous response's `nextCursor`) rather than `page`; `total` is a floor when `totalCapped` is true. Use when the user wants properties matching a name, place or address fragment. Do NOT use when looking up a single known property (use parcel_lookup) or ranking a known set (use parcel_compare). Free read — never purchases anything.
  • parcel_compareFetch 2–25 parcels side by side so they can be ranked against criteria. For each parcel it reads the free parcel card (GET /api/v1/parcels/{id}: identity, owner, valuation, building, lot) and, unless include_risks=false, the hazard block (GET /api/v1/parcels/{id}/risks), and returns a normalized `summary` plus the raw `card` / `risks`. The calling agent does the per-criterion scoring and final ranking. NEVER buys the paid parcel report or any other paid product. 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). For deed or permit timelines call sales_history / permits_history per parcel. The `criteria` argument is returned verbatim so the agent can pin its scoring to the user's intent.
  • owner_pierceList the parcels titled under an owner-of-record name (GET /api/v1/owners/{name}/portfolio). Returns the matched owner name, a portfolio `summary` (count, total_value, total_acreage, by_state, truncated) and the `properties` list (parcel_id, county_fips, state_fips, address, assessed values, last sale, match_basis, match_confidence). This matches owner-name SPELLINGS — it is NOT a verified corporate, parent-subsidiary or beneficial-ownership link. Use when the user names a person, LLC, trust, or company and wants to see what is titled under that name. Do NOT use when starting from a parcel (use parcel_lookup, which returns owner inline). `ticker` is best-effort: it runs an owner-name search (GET /api/v1/owners/search) for the ticker text and uses the top match, returning the candidates under `resolution` — verify them, or call again with `name`. `state` filters the returned properties client-side (the summary stays portfolio-wide). Free read — never purchases anything.
  • hazard_scoreHazard profile for a parcel (GET /api/v1/parcels/{id}/risks): flood (FEMA zone + SFHA flag), wildfire, seismic, windstorm, air quality and crime blocks, plus withhold_gate / identity_gate provenance. 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, which includes each parcel's hazards). Every requested key is present: the value, or null when PropRaven does not hold it. Coverage varies by hazard. Free read — never purchases anything (this is not the paid risk-score product).
  • valuation_estimateValue fields for a parcel from its free card (GET /api/v1/parcels/{id}): market_value, avm_value with avm_confidence / avm_method, total / land / improvement assessed value, tax, last sale price and date, price_per_sqft. Numbers are normalized to JSON numbers (null = not held). 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 — this is a modeled estimate. Historical AVM (as_of) is not supported; the tool returns the current snapshot. Free read — never purchases anything.
  • permits_historyTimeline of building / construction / demolition permits filed against a parcel (GET /api/v1/parcels/{id}/permits). Each permit includes permit_number, permit_type, permit_status, description, work_class, issued_date, completed_date, estimated_cost, contractor_name (where disclosed). 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. At most 100 permits are returned (newest first). `permit_count` is the parcel's TRUE count when `permit_count_basis` is "exact"; "capped" means it is the size of the 100-row window (a floor); `truncated: true` means the parcel has more permits than returned. `since` / `types` filter the returned window only (`returned_count` is after filtering). Coverage varies by county. Free read — never purchases anything.
  • sales_historyDeed / transaction timeline for a parcel (GET /api/v1/parcels/{id}/deeds): recorded sales and transfers with recording and sale dates, sale price (where disclosed), grantor (seller), grantee (buyer), deed/document type and book/page. 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, or to estimate current market value (use valuation_estimate). Note: 13 states do not disclose sale prices on deeds (KS, MS, TX, UT, WY, etc.). `event_count` is the number of events returned. `status` says where they came from: per_deed (deed rows), rollup_events (dated rollup entries), summary_only (no events served, but `known_deed_count` deeds are known — see known_deed_count_basis), or none. UCC liens are NOT available here (they are only in the paid parcel report, which this server never buys). Free read — never purchases anything.

Exa MCP Server tools 2

  • web_search_exaSearch the web for any topic and get clean, ready-to-use content. Best for: Finding current information, news, facts, people, companies, or answering questions about any topic. Returns: Clean text content from top search results. Query tips: describe the ideal page, not keywords. "blog post comparing React and Vue performance" not "React vs Vue". Use category:people / category:company to search through Linkedin profiles / companies respectively. If highlights are insufficient, follow up with web_fetch_exa on the best URLs.
  • web_fetch_exaRead a webpage's full content as clean markdown. Use after web_search_exa when highlights are insufficient or to read any URL. Best for: Extracting full content from known URLs. Batch multiple URLs in one call. Returns: Clean text content and metadata from the page(s).

Ready-to-paste client configs

Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.

Propraven

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "propraven": {
      "command": "npx",
      "args": [
        "-y",
        "@propraven/mcp"
      ],
      "env": {
        "PROPRAVEN_API_KEY": "YOUR_PROPRAVEN_API_KEY_HERE"
      }
    }
  }
}

Exa MCP Server

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "exa-labs-exa-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "exa-mcp-server"
      ]
    }
  }
}

Frequently asked questions

Propraven is categorized under Real Estate and uses a local stdio subprocess. Exa MCP Server belongs to Search & Data Extraction and uses a local stdio subprocess. Pick Propraven for real estate work and Exa MCP Server for search & data extraction.

Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.

Propraven has no declared pricing — check the project's own site. Exa MCP Server is listed as free. Auth: no auth required. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.

Yes. MCP clients support multiple servers: add propraven and exa-labs-exa-mcp-server as separate keys in the same mcpServers object, and your assistant will call tools from either one.

On AllMCPs, Propraven has a quality signal of 60/100 (Good) with 1 views, 0 installs and 0 GitHub stars. Exa MCP Server has 73/100 (Great) with 10 views, 0 installs and 5,162 GitHub stars.