npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

homecastr-mcp-server

v1.16.0

Published

MCP server for Homecastr forecasts, canonical data, benchmarks, and permit or zoning readiness for ChatGPT, Cursor, Claude, and other AI agents

Readme

Homecastr MCP Server

Probabilistic home value forecasts for any US address, ZIP, Census tract, county, or state, available as a Model Context Protocol (MCP) server for ChatGPT, Cursor, Claude, Windsurf, and other AI agents.

Quick Start

Remote (no install)

{
  "mcpServers": {
    "homecastr": {
      "url": "https://www.homecastr.com/api/mcp/mcp"
    }
  }
}

Local (stdio)

npx homecastr-mcp-server

MCP Client Config

{
  "mcpServers": {
    "homecastr": {
      "command": "npx",
      "args": ["-y", "homecastr-mcp-server"],
      "env": {
        "HOMECASTR_API_KEY": "hc_demo_public_readonly"
      }
    }
  }
}

Discovery

  • Well-known server metadata: https://www.homecastr.com/.well-known/mcp/server.json
  • Well-known server card: https://www.homecastr.com/.well-known/mcp/server-card.json
  • Discovery mirror: https://www.homecastr.com/.well-known/mcp.json
  • Human-readable MCP docs: https://www.homecastr.com/docs/mcp

Environment Variables

| Variable | Required | Default | Description | |---|---|---|---| | HOMECASTR_API_KEY | No | hc_demo_public_readonly | API key. Demo key rate-limited (50 req/hr). Get a free key and docs at homecastr.com/docs. | | HOMECASTR_API_URL | No | https://www.homecastr.com | Override for staging/self-hosted environments. | | WORLDCASTR_API_KEY | No | hc_demo_public_readonly | Worldcastr alias for the same API credential. HOMECASTR_API_KEY takes precedence when both are set. | | WORLDCASTR_API_URL | No | https://worldcastr.com | Set to https://worldcastr.com to use the Worldcastr endpoint. HOMECASTR_API_URL takes precedence when both are set. |

PostHog MCP Analytics

Set POSTHOG_PROJECT_API_KEY to enable MCP tool-call analytics. The server also reads POSTHOG_HOST (default https://us.i.posthog.com) and falls back to NEXT_PUBLIC_POSTHOG_KEY / NEXT_PUBLIC_POSTHOG_HOST if those are already configured in your environment.

Tools (38 HTTP tools, 42 stdio tools)

Forecasts (public - demo key works)

| Tool | Input | Coverage | |---|---|---| | forecast_by_address | address (string), year (optional 2026–2030) | Houston metro | | forecast_by_parcel | acct (tax parcel ID) | FL + Houston | | forecast_by_unit | acct, include_siblings (optional bool) | FL + Houston | | forecast_by_tabblock | geoid (15-digit Census GEOID20) | NYC + Houston | | forecast_by_tract | geoid (11-digit Census GEOID20) | Nationwide (~82K tracts) | | forecast_by_zcta | zcta (5-digit ZIP) | Nationwide (~20K ZCTAs) | | forecast_by_zip3 | zip3 (3-digit ZIP prefix) | Nationwide (6,210 areas) | | forecast_by_county | fips (5-digit county FIPS) | Nationwide | | forecast_by_state | fips (2-digit state FIPS) | All 50 states | | forecast_by_h3_cell | h3_id, year (optional) | Houston metro (legacy) |

Benchmarks & Public Data (public - demo key works)

| Tool | Input | Notes | |---|---|---| | list_benchmark_datasets | phase (optional), asset_class (optional), public_readiness (optional) | Catalog of public-safe benchmark and data assets | | get_benchmark_dataset | asset_id | Resolve one asset to its benchmark/public surface | | get_public_forecast_vintage | vintage_id (optional), support_level (optional), target (optional) | Validated public-vintage tables with provenance | | get_backtest_scores | benchmark_id (optional), target (optional) | Public-safe score summaries such as model-vs-persistence | | get_target_metric_forecast | geoid, target | Aggregate tract target-metric bridge surface; may be deployment-gated | | get_census_bps_county_monthly | year, month, kind, county_fips, state_fips, limit, history, summary (all optional) | Normalized Census BPS county-month permit rows from the public R2-backed permit surface | | get_fast41_projects | project_id, state, status, sector, lead_agency, limit, summary (all optional) | Normalized FAST-41 federal permitting project inventory rows; not a milestone-date settlement oracle until the full dataset is normalized | | get_epa_echo_npdes_sewer_overflows | state, permit_id, event_type, year, min_volume_gallons, with_coordinates, limit, summary (all optional) | Normalized EPA ECHO NPDES current sewer-overflow and bypass event rows; not a settlement oracle until refresh/checksum/replacement-report policy is published | | get_epa_echo_npdes_sewer_overflow_history | state, permit_id, event_type, year, min_volume_gallons, with_coordinates, current_only, include_replaced, limit, summary (all optional) | Normalized EPA ECHO NPDES all-version sewer-overflow and bypass event rows with amendment/replacement history; not a settlement oracle until refresh/checksum/revision policy is published | | get_epa_echo_npdes_outfalls | state, permit_id, status, component, current_violation, cwa_status, with_coordinates, limit, summary (all optional) | Normalized EPA ECHO ICIS-NPDES outfall/facility/permit-status rows; not a settlement oracle until limits, effluent violations, detailed enforcement rows, and refresh/checksum/revision policy are published | | get_epa_echo_npdes_violations | state, permit_id, category, violation_code, rnc_detection_code, rnc_resolution_code, year, has_linked_enforcement, limit, summary (all optional) | Normalized EPA ECHO ICIS-NPDES permit-schedule, compliance-schedule, and single-event violation rows; not a settlement oracle until effluent violations, limits, detailed enforcement rows, refresh/checksum, and revision policy are published |

Canonical Data Discovery (public - demo key works)

| Tool | Input | Notes | |---|---|---| | list_data_assets | data_family (optional), public_status (optional), visibility (optional), inventory_asset (optional) | Canonical 89-row asset catalog across public, metadata-only, restricted, and unavailable surfaces | | get_data_asset | asset_id | Full canonical asset card with contracts, provenance, access policy, and related artifacts | | list_data_sources | data_family (optional), public_status (optional), license_status (optional) | Source-oriented view across provenance manifests, source catalogs, panels, and reference datasets | | get_data_source | source_id | One upstream source record with official URLs, source family, panel links, provenance metadata, and access policy | | get_panel_lineage | panel_id, source_id (optional) | Source-to-panel lineage edges with source roles, join keys, transforms, output fields, and official source URLs | | get_data_coverage | none | Source, official-link, family, geography, resolution, panel-lineage, source-to-geography index, and coverage-map rollup counts | | list_source_coverage_index | source_id (optional), coverage_feature_id (optional), panel_id (optional), coverage_geometry_role (optional), native_boundary_status (optional) | Source-to-geography index rows with coverage feature IDs, reference-boundary metadata, native-boundary review status, official URLs, and geometry redistribution policy | | list_public_records_acquisition | lane_id (optional), source_family (optional), geography (optional), current_status (optional), records_law_gate (optional) | Metadata-only public-records acquisition evidence lanes with durable cloud evidence, public-route checks, records-law gate posture, holdbacks, and next safe action | | get_source_coverage_map | none | Selectable source-coverage GeoJSON layer with public reference boundaries where available, generalized regions elsewhere, source IDs, official URLs, panel links, readiness, license metadata, and geometry notes | | list_data_schemas | data_family (optional), schema_id (optional) | Schema bundle catalog for canonical dataset, panel, forecast, benchmark, and artifact contracts | | get_data_schema | schema_id | Full JSON Schema definition plus referenced families and assets | | get_entity | entity_id, entity_type (optional) | Canonical geography entity metadata with normalized IDs, labels, and parent hierarchy | | get_geography_crosswalk | source_entity_id, source_entity_type (optional), target_entity_type (optional) | Canonical crosswalk rows such as tract-to-county or tract-to-ZCTA | | get_provenance | provenance_id | Reviewed provenance manifest or source ledger with retrieval and publication metadata | | get_data_artifact | artifact_id | Artifact manifest metadata, including format, owner asset, and canonical download path |

Canonical Data Query (public - demo key works)

| Tool | Input | Notes | |---|---|---| | query_observations | entity_id, asset_id (optional), entity_type (optional), metric_id (optional), period_start (optional), period_end (optional) | Canonical observation rows for aggregate-safe histories such as tract ACS target panels | | query_features | entity_id, asset_id (optional), entity_type (optional), metric_id (optional), feature_id (optional), as_of_date (optional), period_start (optional), period_end (optional) | Canonical feature rows with transform metadata and leakage-safe input references | | get_panel_slice | panel_id, entity_id, entity_type (optional), metrics (optional), period_start (optional), period_end (optional) | Canonical multi-metric panel rows for benchmark or training-candidate review | | query_forecasts | entity_id, asset_id (optional), entity_type (optional), metric_id (optional) | Canonical forecast-series records with origin time, horizon points, and training cutoff metadata | | get_forecast_vintage | vintage_id, target (optional) | Canonical same-vintage public forecast series with provenance-heavy benchmark labeling | | get_benchmark_result | benchmark_id, target (optional) | Canonical benchmark result record with standardized score rows and reproducibility references | | get_synthetic_dataset | synthetic_id, entity_type (optional), entity_id (optional), metric_id (optional) | Explicitly labeled synthetic scenario bundle derived from canonical forecasts |

Content & Analytics (real API key required for last two)

| Tool | Input | Notes | |---|---|---| | get_narrative | geoid, level (optional: state|county|city|tract) | AI-generated market narrative | | get_county_outlook | fips (5-digit county FIPS) | Pre-computed appreciation + trajectory | | get_permit_zoning_readiness | source_id, market_id, summary (all optional) | Permit/zoning source evidence and market-readiness gates; use get_census_bps_county_monthly, get_fast41_projects, get_epa_echo_npdes_sewer_overflows, get_epa_echo_npdes_sewer_overflow_history, get_epa_echo_npdes_outfalls, and get_epa_echo_npdes_violations for currently exposed normalized row surfaces | | list_training_runs | jurisdiction (optional), year (optional), limit (optional) | ML training history | | get_analytics_events | event_name (optional), page_path (optional), days (optional) | Product event stats |

Output Format

Every forecast tool returns probabilistic bands:

  • P10 - pessimistic downside (10th percentile)
  • P25 - conservative estimate
  • P50 - median expected value
  • P75 - optimistic estimate
  • P90 - upside scenario (90th percentile)

Plus appreciation %, growth $, and a multi-year fan chart.

Example Prompts

  • "What's the 5-year home price forecast for 5000 Westheimer Rd, Houston TX?"
  • "Compare the forecast for ZIP 77056 vs 10001 over the next 3 years."
  • "What's the P90 appreciation for Harris County TX by 2030?"
  • "Get the market narrative for Census tract 48201231400."
  • "List the phase_1 benchmark datasets and tell me which ones are launch-ready."
  • "Get the Arizona OEO Maricopa 2022 public forecast vintage for total_population."
  • "List all draft input_panel assets and tell me which ones are training candidates."
  • "Load the source coverage map and show which official sources are associated with Phoenix / Maricopa / Pinal."
  • "List source coverage-index rows for Phoenix and show which sources have public reference boundaries versus native-boundary terms review."
  • "List public-records acquisition lanes for utility infrastructure where the request gate is closed, and summarize the holdbacks."
  • "Show me the canonical schema for hc.panel_row.v1."
  • "Get the provenance manifest for provenance.arizona_archive_status_ledger."

Links

License

MIT