{
  "markdown": "# Altos Research — Real-Time Real Estate Market Data\n\nAltos Research is the industry's standard for weekly-cadence US real estate market statistics: median list prices, price reductions, days on market, inventory by ZIP / metro / state, broken out by property type (single-family, condo) and market quartile. Where MLS data is fragmented and lagged, Altos aggregates and publishes weekly.\n\nPart of [Pipeworx](https://pipeworx.io) — an MCP gateway connecting AI agents to 1476+ live data sources.\n\n## Why this matters for AI agents\n\nMost public housing data (Census ACS, FRED home price index) updates monthly or quarterly. Altos updates weekly with the data agents and lenders actually use to gauge market temperature. If an agent is answering \"is this market hot or cold right now?\" the Altos data is most fit-for-purpose.\n\nCommon flows:\n\n- **Metro stats.** `altos_market_stats({region: \"us-co-denver\"})` → median list, days on market, inventory, weekly trend.\n- **Property type filter.** Same call with `res_type: \"single_family\"` or `\"condo\"`.\n- **Quartile filter.** `quartile: \"FIRST\"` to focus on the bottom-quartile market (entry-level), `\"FOURTH\"` for luxury.\n- **Multi-metro comparison.** Iterate calls in parallel for a peer comparison.\n\nUsed by the `housing_property_report` and `housing_market_brief` compounds.\n\n## Auth\n\nAltos is a paid commercial data product. Two paths:\n\n1. **BYO key**: get an Altos partner key directly (commercial relationship), pass via `_altosKey`.\n2. **Pipeworx Housing Vertical**: subscribe at [pipeworx.io/account](https://pipeworx.io/account) and Pipeworx fronts the relationship. No `_altosKey` needed.\n\nThe vertical option is the common case — most agents using Altos also want ATTOM, FRED, and BLS for housing analysis. Bundling them is cheaper than separate keys.\n\n## Region codes\n\nAltos uses geo-coded region IDs:\n\n| Format | Example |\n|---|---|\n| National | `us_national` |\n| State | `us-co` (Colorado) |\n| Metro | `us-co-denver` (Denver MSA) |\n| ZIP | `us-co-denver-80202` |\n\nSmaller geographies have noisier data — single-ZIP weekly stats can swing wildly with low listing counts.\n\n## Update cadence\n\nWeekly, typically published Monday or Tuesday for the prior week's data. Pipeworx caches with 24-hour TTL; intra-week, the same number is returned (Altos doesn't intra-week update).\n\n## Common pitfalls\n\n- **List vs. sale price.** Altos primarily tracks active listings — list price, days on market, price reductions. Sale prices and YoY-sale-price-change come from county records (ATTOM) and have longer lag. Don't conflate \"Altos median price\" with \"sold for.\"\n- **Active inventory ≠ months-of-supply.** Altos gives you the level; months-of-supply (a more interpretable metric) needs absorption rate too. Compute as inventory / monthly sales rate.\n- **Quartile semantics.** Altos splits the market into 4 price quartiles per region. The first quartile is bottom 25%, fourth is top 25%. Quartile boundaries are recomputed each week.\n- **Property type changes coverage.** Single-family is universally covered; condos exist in metros where condos are common (urban centers). Rural metros may return null for condo queries.\n- **\"This week\" gets revised.** The most recent week is provisional and gets revised slightly the following week as more listings flow in. Don't deploy production decisions on the most-recent-week number alone.\n\n## Quick Start\n\nAdd to your MCP client (Claude Desktop, Cursor, Windsurf, etc.):\n\n```json\n{\n  \"mcpServers\": {\n    \"altos\": {\n      \"url\": \"https://gateway.pipeworx.io/altos/mcp\"\n    }\n  }\n}\n```\n\n### What this endpoint actually serves\n\n`tools/list` at `https://gateway.pipeworx.io/altos/mcp` returns the tools in the table\nabove **plus the shared Pipeworx meta-tools** — `ask_pipeworx`,\n`discover_tools`, `search_within`, `remember`/`recall` and the rest of the\ngateway-wide set. So the tool count you see is larger than this table: a\nsingle-pack endpoint currently lists roughly 30 shared tools alongside the\npack's own. The connection's `initialize` response states its exact scope, and\nis the authoritative answer for a given day.\n\nThis is deliberate, not multiplexing by accident. The meta-tools are what let a\nscoped connection answer a question this pack does not cover — via\n`ask_pipeworx`, which routes across the whole catalog — without you adding a\nsecond MCP server. There is currently no way to mount a pack endpoint without\nthem; if the extra schemas cost you more context than the routing is worth,\nconnect to the full gateway once rather than to several pack endpoints.\n\nOr connect to the full Pipeworx gateway to get every pack's tools listed\ndirectly, instead of just this one's:\n\n```json\n{\n  \"mcpServers\": {\n    \"pipeworx\": {\n      \"url\": \"https://gateway.pipeworx.io/mcp\"\n    }\n  }\n}\n```\n\nBoth URLs reach the same gateway and the same 1476+ data sources. The\nonly difference is which pack's tools are listed **directly**; `ask_pipeworx`\nreaches all of them from either one.\n\n## Using with ask_pipeworx\n\nInstead of calling tools directly, you can ask questions in plain English —\nthis works on the pack endpoint above as well as on the full gateway:\n\n```\nask_pipeworx({ question: \"your question about Altos data\" })\n```\n\nThe gateway picks the right tool and fills the arguments automatically.\n\n## More\n\n- [Docs and guides](https://pipeworx.io/docs)\n- [pipeworx.io](https://pipeworx.io)\n\n## License\n\nMIT\n",
  "bytes": 5402,
  "sha": "e5c9fed03e76e3dde12a82ec982092c4a6e0ec2a3607d22c5f65dee6016ebf53",
  "repo_slug": "pipeworx-io/mcp-altos",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_pipeworx_io_altos_1e26c1b3/readme"
}