housing_metro_demand
Pack: housing-intel · Connect: https://pipeworx.io/mcp (see Connect below for a single-pack URL)
No MCP client? Call it directly: GET https://gateway.pipeworx.io/v1/tools/housing_metro_demand for the schema, then POST the same URL with its arguments for the data.
Demand + rent-durability signals for a shortlist of US metros in ONE call — population & 5-year growth, renter share, median household income, and unemployment, straight from Census ACS. Deterministic by metro (CBSA-keyed) — NO FRED series-ID guessing. Pass metros (“City, ST”, e.g. the top results from housing_market_screen). This is the Stage-2 “is the demand real?” filter on a yield shortlist — high yield in a shrinking metro is a trap. No API key needed. HIGHEST-LAG SOURCE IN THIS PACK: figures are a Census ACS 5-YEAR rolling average (currently 2018-2022, released Dec 2023) — for structural demand, not a current-quarter read. freshness states the exact age.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
metros | array | yes | Metro names to enrich, “City, ST” form, e.g. [“Lubbock, TX”,“Pittsburgh, PA”] — match the housing_market_screen output. Required. |
items | string | no | |
limit | number | no | Max metros to enrich (default 25, max 100). |
Example call
Arguments
{
"metros": [
"Lubbock, TX",
"Pittsburgh, PA"
]
}
curl
curl -X POST https://gateway.pipeworx.io/housing-intel/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"housing_metro_demand","arguments":{"metros":["Lubbock, TX","Pittsburgh, PA"]}}}'
TypeScript (@pipeworx/sdk)
import { Pipeworx } from '@pipeworx/sdk';
const pipeworx = new Pipeworx();
const result = await pipeworx.call('housing_metro_demand', {
"metros": [
"Lubbock, TX",
"Pittsburgh, PA"
]
});
More examples
{
"metros": [
"Denver, CO",
"Austin, TX",
"Boise, ID"
],
"limit": 10
}
Response shape
| Field | Type | Description |
|---|---|---|
analysis | string | |
acs_year | number | |
population_growth_basis | string | |
matched | number | |
metros | array | |
note | string | |
freshness | object |
Full JSON Schema
{
"type": "object",
"properties": {
"analysis": {
"type": "string"
},
"acs_year": {
"type": "number"
},
"population_growth_basis": {
"type": "string"
},
"matched": {
"type": "number"
},
"metros": {
"type": "array",
"items": {
"type": "object",
"properties": {
"metro": {
"type": "string"
},
"cbsa": {
"type": "string"
},
"population": {
"type": "number"
},
"population_growth_5yr_pct": {
"type": "number"
},
"median_household_income": {
"type": "number"
},
"renter_share_pct": {
"type": "number"
},
"unemployment_rate_pct": {
"type": "number"
}
}
}
},
"note": {
"type": "string"
},
"freshness": {
"type": "object",
"properties": {
"as_of": {
"type": "string"
},
"acs_5yr_release_date": {
"type": [
"string",
"null"
]
},
"age_days_since_release": {
"type": "number"
},
"statement": {
"type": "string"
}
}
}
}
}
Connect
Add this to your MCP client config — every tool in the catalog, including this one — or use one-click install buttons:
{
"mcpServers": {
"pipeworx": {
"url": "https://pipeworx.io/mcp"
}
}
}
Connect to just the housing-intel pack
{
"mcpServers": {
"housing-intel": {
"url": "https://gateway.pipeworx.io/housing-intel/mcp"
}
}
}
See Getting Started for client-specific install steps.