Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

io.github.jdw2111/propraven

NPM · @PROPRAVEN/MCP · 2 COMPONENTS · SCANNED AUG 3

Property intelligence: 180M+ US parcels — lookup, search, owners, hazards, permits, deeds.

+35 this week 77 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →

Supply Chain Security86
  • No malware found by supply-chain analysis.Pass
  • Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree.Partial
  • No install/post-install scripts declared.Pass
  • Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency97
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to jdw2111/propraven-mcp). View diagnostics → Pass
  • Clear OSI-approved license (Apache-2.0).Pass
  • Actively maintained (last published 78 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability65
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 1613 tokens (~201/item across 8 items; 8 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
  • Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage94
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 83% of tool parameters carry a description.Partial
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

npm · @propraven/mcp

# add to Claude Code
claude mcp add jdw2111-propraven -- npx -y @propraven/mcp
# add to Codex CLI
codex mcp add jdw2111-propraven -- npx -y @propraven/mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "jdw2111-propraven": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@propraven/mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add jdw2111-propraven --command npx --arg -y --arg @propraven/mcp
# ~/.hermes/config.yaml
mcp_servers:
  jdw2111-propraven:
    command: "npx"
    args: ["-y", "@propraven/mcp"]
// mcp.json
{
  "mcpServers": {
    "jdw2111-propraven": {
      "command": "npx",
      "args": [
        "-y",
        "@propraven/mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 3 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

  • 2 Aug 26 +68
    • Install scripts: unverified → pass security
    • Provenance: unverified → pass security
    • Known CVEs: unverified → partial security
    • Malware scan: unverified → pass security
    • The attested source repository moved: jdw2111/propraven-mcp security
    • Dependency health: partial → unverified functional
    • Security disclosure: fail → unverified functional
    • Maintenance: unverified → pass functional
    • License: unverified → pass functional
    • Tool coverage: unverified → 100 functional
    • MCP protocol: unverified → pass functional
    • Stability: unverified → 0.23 functional
    • Schema quality: unverified → excellent functional
    • Licence: Apache-2.0 functional
  • 1 Aug 26 −10
    • Tool coverage: 100 → unverified functional
    • Dependency health: unverified → partial functional
  • 31 Jul 26 +12
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 30 Jul 26 −18
    • Malware scan: pass → unverified security
  • 28 Jul 26 −18
    • Security disclosure: unverified → fail functional
    • Tool coverage: 100 → unverified functional
    • First check of Schema quality: unverified functional
  • 27 Jul 26 42

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Analysed npm/@propraven/[email protected]

Provenance verified

Ecosystem: npm · Outcome: verified

Reason: verified

Source repo:
jdw2111/propraven-mcp
Certificate issuer:
https://token.actions.githubusercontent.com
Certificate SAN:
https://github.com/jdw2111/propraven-mcp/.github/workflows/publish-npm.yml@refs/heads/main
Rekor log index:
1554408840
Predicate type:
https://slsa.dev/provenance/v1
Subject digest:
sha512:17481dd54d018a7cc0b06d8a9d59a3483d8df1910b8c0eca96771a9b3b48b3302c1967561beb0fe2b1375a1a9391cddb856f74b594f83c61781b6522e
Discovery method:
attestation_endpoint
Dependencies 94 packages

94 packages in the resolved dependency tree · 94 deprecated · 29 stale.

The dependency tree was only partially resolved, so these counts may be incomplete.

MCP tools — 8 exposed · ~1,613 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
hazard.score ~194

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.

NameTypeReqDescription
includearraySubset of hazards to keep in the response. Default: return all.
parcel_idstringyesComposite parcel ID (county_fips:parcel_id). Use parcel.lookup to obtain.

No output schema declared.

No examples provided.

owner.pierce ~254

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.

NameTypeReqDescription
namestringOwner name or entity name. Free-form — PropRaven normalizes (trims suffixes, handles trust/LLC variants).
statestringOptional 2-letter state filter to scope the portfolio.
tickerstringPublic-company ticker. The tool attempts to resolve to a company name via owner search first.

No output schema declared.

No examples provided.

parcel.compare ~207

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.

NameTypeReqDescription
criteriaarrayyes1–8 ranking criteria, free-form natural language. Echoed back in the response to anchor the agent's scoring.
parcel_idsarrayyesComposite parcel IDs to compare (e.g. "37183:0012345"). 2–25 parcels. Get IDs via parcel.search or parcel.lookup.

No output schema declared.

No examples provided.

parcel.lookup ~183

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" })`.

NameTypeReqDescription
querystringyesParcel identifier in any of three forms: (1) composite ID like "37183:0012345" — preferred, direct lookup; (2) full street address with state — uses fuzzy search, top 5 returned; (3) raw APN — search…

No output schema declared.

No examples provided.

parcel.search ~229

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.

NameTypeReqDescription
citystringCity filter (when q is non-city).
dirstring
fieldstringRestrict the q match to one field.
limitinteger
pageinteger
qstringyesText query — owner name, address fragment, or city. Min 2 chars.
sortstring
statestring2-letter state filter.

No output schema declared.

No examples provided.

permits.history ~174

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.

NameTypeReqDescription
parcel_idstringyesComposite parcel ID.
sincestringISO date — only return permits issued on or after this date (client-side filter).
typesarrayFilter by permit type substring (e.g. ["Building", "Demolition"]). Case-insensitive.

No output schema declared.

No examples provided.

sales.history ~219

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.

NameTypeReqDescription
include_liensbooleanInclude UCC liens. Default false. Adds one extra API call.
parcel_idstringyesComposite parcel ID.
sincestringISO date — only return events on or after this date (client-side filter).

No output schema declared.

No examples provided.

valuation.estimate ~153

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.

NameTypeReqDescription
as_ofstringISO date — historical AVM. NOT YET SUPPORTED in v1; ignored.
parcel_idstringyesComposite parcel ID (county_fips:parcel_id).

No output schema declared.

No examples provided.