> ## Documentation Index
> Fetch the complete documentation index at: https://develop.cotality.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Market and trend analytics

> US residential real estate market data across five domains — listing activity, market metrics, rental trends, Cotality Home Price Index (HPI), and HPI forecasts. Excludes commercial real estate.

**Data capabilities:**

| Domain             | Key metrics                                                                                | Use cases                                                                   |
| ------------------ | ------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------- |
| **Listing trends** | Active listings, new listings, median list price, days on market, list-to-sale price ratio | Inventory monitoring, pricing strategy, buyer demand signals                |
| **Market trends**  | Closed sales volume, median sales price, months of supply, sale-to-list ratio              | Market health assessment, investment underwriting, risk/reward analysis     |
| **Rental trends**  | Median rental rate, year-over-year rent change                                             | SFR acquisition underwriting, rent roll benchmarking, market entry analysis |
| **HPI**            | Cotality Home Price Index value, month-over-month and year-over-year percent change        | Portfolio valuation, appraisal benchmarking, collateral monitoring          |
| **HPI Forecasts**  | Projected appreciation or depreciation over a forward window                               | Acquisition modeling, exit strategy analysis, portfolio stress-testing      |

**Data scope:**

| Attribute                  | Value                                                                                                     |
| -------------------------- | --------------------------------------------------------------------------------------------------------- |
| **Input**                  | Shared `AnalyticsFilter` — `geography_filter` (required) + `time_range` (optional)                        |
| **Output**                 | Common response envelope — `success`, `data`, `count`, `messages`                                         |
| **Geographic granularity** | ZIP code (`zip_code`), county FIPS (`county_fips_code`), CBSA (`cbsa_code`), state (`state` / `state_id`) |
| **Update frequency**       | Monthly *(confirm exact lag with data team)*                                                              |
| **Historical depth**       | `[CONFIRM WITH DATA TEAM — e.g., available from 2000]`                                                    |
| **Exclusions**             | US residential real estate only — commercial properties are not included                                  |

***

## Shared input: `AnalyticsFilter`

All five analytics tools accept a single required parameter — `analytics_filter` — containing an `AnalyticsFilter` object.

### `AnalyticsFilter`

| Field              | Type                       | Required | Description                                                             |
| ------------------ | -------------------------- | -------- | ----------------------------------------------------------------------- |
| `geography_filter` | `AnalyticsGeographyFilter` | Yes      | Geography filter criteria                                               |
| `time_range`       | `TimeRange`                | No       | Time range filter — omit entirely to retrieve the latest available data |

### `AnalyticsGeographyFilter`

| Field                   | Type            | Required | Description                                                        |
| ----------------------- | --------------- | -------- | ------------------------------------------------------------------ |
| `geography_type`        | `string` (enum) | Yes      | Geography level to query (see [Geography types](#geography-types)) |
| `geography_type_values` | `array[string]` | Yes      | One or more geography values to include in the query               |

### Geography types

All `geography_type` values must be **lowercase**.

| Value              | Format                | Example   |
| ------------------ | --------------------- | --------- |
| `zip_code`         | 5-digit ZIP           | `"90210"` |
| `county_fips_code` | 5-digit FIPS          | `"06037"` |
| `cbsa_code`        | CBSA / metro code     | `"31080"` |
| `state`            | 2-letter abbreviation | `"CA"`    |
| `state_id`         | Numeric state ID      | `"06"`    |

`geography_type_values` accepts a list, so a single call can retrieve results for multiple geographies simultaneously (e.g., `["06037", "06059", "06065"]`).

### `TimeRange`

If `time_range` is provided, **both** `from` and `to` are required. Do not pass a partial object — omit `time_range` entirely to retrieve the latest data.

| Field  | Type        | Required                           | Description             |
| ------ | ----------- | ---------------------------------- | ----------------------- |
| `from` | `YearMonth` | Yes (when `time_range` is present) | Start of the date range |
| `to`   | `YearMonth` | Yes (when `time_range` is present) | End of the date range   |

### `YearMonth`

| Field   | Type      | Required | Description                 |
| ------- | --------- | -------- | --------------------------- |
| `year`  | `integer` | Yes      | 4-digit year (e.g., `2024`) |
| `month` | `integer` | Yes      | Month, 1–12                 |

### Example filter

```json theme={null}
{
  "geography_filter": {
    "geography_type": "cbsa_code",
    "geography_type_values": ["31080"]
  },
  "time_range": {
    "from": { "year": 2024, "month": 1 },
    "to": { "year": 2024, "month": 12 }
  }
}
```

***

## Response envelope

All five tools return the same top-level envelope. All four fields are **always present** in every response.

| Field      | Type            | Description                                                                                         |
| ---------- | --------------- | --------------------------------------------------------------------------------------------------- |
| `success`  | `boolean`       | Whether the request completed successfully                                                          |
| `data`     | `array[object]` | Wrapper containing an `analytics` array — structure varies per tool (see each tool's output schema) |
| `count`    | `integer`       | Number of records                                                                                   |
| `messages` | `array[string]` | Informational or warning messages                                                                   |

The `data` array contains a wrapper object with an `analytics` array. Each element in `analytics` groups results by geography and includes `geographyType`, `geographyTypeValue`, and a tool-specific data container (`trends` for the three trend tools, `indices` for the two HPI tools).

<Note>
  Do not assume response ordering. Always match results by reading the `geographyType` and `geographyTypeValue` fields on each result object, not by position.
</Note>

***

## Shared geography response fields

Every tool's trend or index record includes the following geography and period fields. All fields are optional, nullable, and default to `null`.

| Field            | Type      | Description                           |
| ---------------- | --------- | ------------------------------------- |
| `cbsaCode`       | `string`  | CBSA code for the requested geography |
| `cbsaName`       | `string`  | CBSA name                             |
| `countyFipsCode` | `string`  | 5-digit county FIPS code              |
| `countyName`     | `string`  | County name                           |
| `dataPeriod`     | `string`  | Cotality-assigned period identifier   |
| `state`          | `string`  | Two-letter state abbreviation         |
| `stateName`      | `string`  | Full state name                       |
| `stateId`        | `string`  | Two-digit state FIPS code             |
| `yearMonth`      | `integer` | Year and month in `YYYYMM` format     |
| `zipCode`        | `string`  | 5-digit ZIP code                      |

***

## Reading numeric values

Analytics fields use consistent numeric conventions:

| Format            | Convention                | Example                                         |
| ----------------- | ------------------------- | ----------------------------------------------- |
| Prices            | Raw dollar value          | `762000` = \$762,000                            |
| Rates and shares  | Decimal fraction          | `0.048` = 4.8%                                  |
| Index values      | Base year 2000 = 100      | `412.3` = 312.3% above baseline                 |
| Counts            | Integer                   | `4821` = 4,821 transactions                     |
| Percentile ranges | 5th / 95th in field names | `rentMin` / `rentMax` = 5th and 95th percentile |

***

## `pa-analytics_listing_trends_tool`

Retrieve property listing trends data for analyzing inventory levels, pricing, and market velocity in the residential real estate market.

**When to use:**

* Monitoring new listings, pending sales, closed sales, or delisted properties
* Analyzing list prices, price reductions, or asking prices
* Tracking days on market, time to sell, or listing duration
* Evaluating market velocity, buyer/seller market indicators, or months of supply

**Examples:**

* *"How many active listings are there in Los Angeles County?"*
* *"What is the median days on market for sold listings in California?"*
* *"Show me buyer vs seller market indicators for CBSA 31080"*

### Input schema

All analytics tools accept the shared [`AnalyticsFilter`](#shared-input-analyticsfilter) input.

| Parameter          | Type              | Required | Description                              |
| ------------------ | ----------------- | -------- | ---------------------------------------- |
| `analytics_filter` | `AnalyticsFilter` | Yes      | Geography and optional time range filter |

### Example request

```json theme={null}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "pa-analytics_listing_trends_tool",
    "arguments": {
      "analytics_filter": {
        "geography_filter": {
          "geography_type": "state",
          "geography_type_values": ["CA"]
        },
        "time_range": {
          "from": { "year": 2024, "month": 1 },
          "to": { "year": 2024, "month": 12 }
        }
      }
    }
  }
}
```

### Output schema

The `analytics` array contains elements with `geographyType`, `geographyTypeValue`, and a `trends.listingTrends` array.

Each `listingTrends` record includes the [shared geography fields](#shared-geography-response-fields) plus the fields below. All fields are optional, nullable, and default to `null`.

| Field             | Type              | Description                                                                |
| ----------------- | ----------------- | -------------------------------------------------------------------------- |
| `marketVelocity`  | `number`          | Active listings at month-end ÷ 12-month moving average of sold listings    |
| `activeListings`  | `ActiveListings`  | Active inventory metrics                                                   |
| `allListings`     | `AllListings`     | Aggregate statistics across all listing statuses                           |
| `closedListings`  | `ClosedListings`  | Listings that closed (sold + delisted) during the month                    |
| `delisted`        | `Delisted`        | Listings removed without selling (cancellations, expirations, withdrawals) |
| `marketIndicator` | `MarketIndicator` | Buyer/seller market balance scores                                         |
| `newListings`     | `NewListings`     | Fresh inventory entering the market                                        |
| `pendingListings` | `PendingListings` | Listings under contract                                                    |
| `soldListings`    | `SoldListings`    | Completed sale transactions                                                |

#### `ActiveListings`

All fields are optional, nullable, and default to `null`.

| Field                                | Type      | Description                                                                              |
| ------------------------------------ | --------- | ---------------------------------------------------------------------------------------- |
| `inventoryCount`                     | `integer` | Number of listings active at month-end                                                   |
| `inventoryCountChangeFromPriorMonth` | `number`  | Month-over-month change in active inventory count                                        |
| `inventoryCountFiveYearMonthlyMean`  | `number`  | Five-year monthly average of active inventory count                                      |
| `listPriceMean`                      | `integer` | Mean current list price for active listings                                              |
| `listPriceMedian`                    | `number`  | Median current list price for active listings                                            |
| `listPriceStandardDeviation`         | `number`  | Standard deviation of current list price for active listings                             |
| `domMean`                            | `number`  | Mean standard days on market for active listings                                         |
| `domMedian`                          | `number`  | Median standard days on market for active listings                                       |
| `domStandardDeviation`               | `number`  | Standard deviation of standard DOM for active listings                                   |
| `cumulativeDomMean`                  | `number`  | Mean cumulative DOM for active listings (re-opened listings within 30 days count as one) |
| `cumulativeDomMedian`                | `number`  | Median cumulative DOM for active listings                                                |
| `cumulativeDomStandardDeviation`     | `number`  | Standard deviation of cumulative DOM for active listings                                 |
| `monthsSupply`                       | `number`  | Active listings ÷ 12-month moving average of sold listings                               |

#### `AllListings`

Statistics across all listing statuses (active, pending, and closed). All fields are optional, nullable, and default to `null`.

| Field                                               | Type    | Description                                                                                         |
| --------------------------------------------------- | ------- | --------------------------------------------------------------------------------------------------- |
| `inventoryCount`                                    | integer | Total listings in the month across active, pending, and closed statuses (each listing counted once) |
| `listPriceMean`                                     | number  | Mean current list price                                                                             |
| `listPriceMedian`                                   | number  | Median current list price                                                                           |
| `listPrice25thPercentile`                           | number  | 25th percentile of current list price                                                               |
| `listPrice75thPercentile`                           | number  | 75th percentile of current list price                                                               |
| `listPriceStandardDeviation`                        | number  | Standard deviation of current list price                                                            |
| `domMean`                                           | number  | Mean standard DOM                                                                                   |
| `domMedian`                                         | number  | Median standard DOM                                                                                 |
| `dom25thPercentile`                                 | number  | 25th percentile of standard DOM                                                                     |
| `dom75thPercentile`                                 | number  | 75th percentile of standard DOM                                                                     |
| `domStandardDeviation`                              | number  | Standard deviation of standard DOM                                                                  |
| `cumulativeDomMean`                                 | number  | Mean cumulative DOM                                                                                 |
| `cumulativeDomMedian`                               | number  | Median cumulative DOM                                                                               |
| `cumulativeDom25thPercentile`                       | number  | 25th percentile of cumulative DOM                                                                   |
| `cumulativeDom75thPercentile`                       | number  | 75th percentile of cumulative DOM                                                                   |
| `cumulativeDomStandardDeviation`                    | number  | Standard deviation of cumulative DOM                                                                |
| `listPricePercentChangeMean`                        | number  | Mean percent change from original to current list price                                             |
| `listPricePercentChangeMedian`                      | number  | Median percent change from original to current list price                                           |
| `listPricePercentChange25thPercentile`              | number  | 25th percentile of list price percent change                                                        |
| `listPricePercentChange75thPercentile`              | number  | 75th percentile of list price percent change                                                        |
| `listPricePercentChangeStandardDeviation`           | number  | Standard deviation of list price percent change                                                     |
| `listPricePercentChangeMeanChangeFromPriorMonth`    | number  | Mean list price percent change — month-over-month delta                                             |
| `listPricePercentChangeMeanChangeFromPriorYear`     | number  | Mean list price percent change — year-over-year delta                                               |
| `listPricePercentChangeMeanFiveYearMonthlyMean`     | number  | Mean list price percent change — five-year monthly average                                          |
| `listPricePercentChangeMedianChangeFromPriorMonth`  | number  | Median list price percent change — month-over-month delta                                           |
| `listPricePercentChangeMedianChangeFromPriorYear`   | number  | Median list price percent change — year-over-year delta                                             |
| `listPricePercentChangeMedianFiveYearMonthlyMedian` | number  | Median list price percent change — five-year monthly median                                         |

#### `ClosedListings`

Listings that closed during the month, including both sold and delisted (cancellations, expirations, withdrawals). All fields are optional, nullable, and default to `null`.

| Field                                               | Type    | Description                                                 |
| --------------------------------------------------- | ------- | ----------------------------------------------------------- |
| `inventoryCount`                                    | integer | Number of listings that closed during the month             |
| `listPriceMean`                                     | number  | Mean current list price at time of close                    |
| `listPriceMedian`                                   | number  | Median current list price at time of close                  |
| `listPriceStandardDeviation`                        | number  | Standard deviation of current list price at time of close   |
| `domMean`                                           | number  | Mean standard DOM                                           |
| `domMedian`                                         | number  | Median standard DOM                                         |
| `domStandardDeviation`                              | number  | Standard deviation of standard DOM                          |
| `cumulativeDomMean`                                 | number  | Mean cumulative DOM                                         |
| `cumulativeDomMedian`                               | number  | Median cumulative DOM                                       |
| `cumulativeDomStandardDeviation`                    | number  | Standard deviation of cumulative DOM                        |
| `cumulativeDomMeanChangeFromPriorMonth`             | number  | Mean cumulative DOM — month-over-month delta                |
| `cumulativeDomMeanFiveYearMonthlyMean`              | number  | Mean cumulative DOM — five-year monthly average             |
| `cumulativeDomMedianChangeFromPriorMonth`           | number  | Median cumulative DOM — month-over-month delta              |
| `cumulativeDomMedianFiveYearMonthlyMedian`          | number  | Median cumulative DOM — five-year monthly median            |
| `listPricePercentChangeMean`                        | number  | Mean percent change from original to current list price     |
| `listPricePercentChangeMedian`                      | number  | Median percent change from original to current list price   |
| `listPricePercentChangeStandardDeviation`           | number  | Standard deviation of list price percent change             |
| `listPricePercentChangeMeanChangeFromPriorMonth`    | number  | Mean list price percent change — month-over-month delta     |
| `listPricePercentChangeMeanChangeFromPriorYear`     | number  | Mean list price percent change — year-over-year delta       |
| `listPricePercentChangeMeanFiveYearMonthlyMean`     | number  | Mean list price percent change — five-year monthly average  |
| `listPricePercentChangeMedianChangeFromPriorMonth`  | number  | Median list price percent change — month-over-month delta   |
| `listPricePercentChangeMedianChangeFromPriorYear`   | number  | Median list price percent change — year-over-year delta     |
| `listPricePercentChangeMedianFiveYearMonthlyMedian` | number  | Median list price percent change — five-year monthly median |

#### `NewListings`

All fields are optional, nullable, and default to `null`.

| Field                        | Type      | Description                                       |
| ---------------------------- | --------- | ------------------------------------------------- |
| `inventoryCount`             | `integer` | Number of new listings during the month           |
| `listPriceMean`              | `number`  | Mean list price for new listings                  |
| `listPriceMedian`            | `number`  | Median list price for new listings                |
| `listPriceStandardDeviation` | `number`  | Standard deviation of list price for new listings |

#### `PendingListings`

All fields are optional, nullable, and default to `null`.

| Field               | Type      | Description                                                 |
| ------------------- | --------- | ----------------------------------------------------------- |
| `inventoryCount`    | `integer` | Number of listings that changed to pending during the month |
| `listPriceMean`     | `number`  | Mean list price for pending listings                        |
| `domMean`           | `number`  | Mean standard DOM before going pending                      |
| `cumulativeDomMean` | `number`  | Mean cumulative DOM before going pending                    |

#### `SoldListings`

All fields are optional, nullable, and default to `null`.

| Field                                            | Type    | Description                                       |
| ------------------------------------------------ | ------- | ------------------------------------------------- |
| `inventoryCount`                                 | integer | Number of listings sold during the month          |
| `inventoryCountChangeFromPriorMonth`             | number  | Sold count — month-over-month delta               |
| `inventoryCountChangeFromPriorYear`              | number  | Sold count — year-over-year delta                 |
| `inventoryCountFiveYearMonthlyMean`              | number  | Sold count — five-year monthly average            |
| `inventoryCountYearlyTotal`                      | number  | Sold count — yearly total                         |
| `listPriceMean`                                  | number  | Mean list price for sold listings                 |
| `listPriceMeanChangeFromPriorMonth`              | number  | Mean sold list price — month-over-month delta     |
| `listPriceMeanChangeFromPriorYear`               | number  | Mean sold list price — year-over-year delta       |
| `listPriceMeanFiveYearMonthlyMean`               | number  | Mean sold list price — five-year monthly average  |
| `listPricePerSquareFootMean`                     | number  | Mean list price per square foot for sold listings |
| `listPricePerSquareFootMeanChangeFromPriorMonth` | number  | Mean sold price/sqft — month-over-month delta     |
| `listPricePerSquareFootMeanChangeFromPriorYear`  | number  | Mean sold price/sqft — year-over-year delta       |
| `listPricePerSquareFootMeanFiveYearMonthlyMean`  | number  | Mean sold price/sqft — five-year monthly average  |
| `domMean`                                        | number  | Mean standard DOM for sold listings               |
| `domMeanChangeFromPriorMonth`                    | number  | Mean sold DOM — month-over-month delta            |
| `domMeanFiveYearMonthlyMean`                     | number  | Mean sold DOM — five-year monthly average         |
| `cumulativeDomMean`                              | number  | Mean cumulative DOM for sold listings             |

#### `Delisted`

Listings removed from the market without selling (cancellations, expirations, withdrawals). All fields are optional, nullable, and default to `null`.

| Field               | Type      | Description                                  |
| ------------------- | --------- | -------------------------------------------- |
| `inventoryCount`    | `integer` | Number of delisted listings during the month |
| `listPriceMean`     | `number`  | Mean list price for delisted listings        |
| `domMean`           | `number`  | Mean standard DOM for delisted listings      |
| `cumulativeDomMean` | `number`  | Mean cumulative DOM for delisted listings    |

#### `MarketIndicator`

Buyer/seller market balance scores calculated as new listings ÷ 12-month moving average of sold listings. Values ≥ 1.5 indicate a buyer's market, ≤ 1.0 indicate a seller's market, and 1.0–1.5 indicate a balanced market.
All fields are optional, nullable, and default to `null`.

| Field                                         | Type     | Description                                             |
| --------------------------------------------- | -------- | ------------------------------------------------------- |
| `buyerSellerMarketIndicatorMean`              | `number` | Mean buyer/seller market indicator                      |
| `buyerSellerMarketIndicatorMedian`            | `number` | Median buyer/seller market indicator                    |
| `buyerSellerMarketIndicatorStandardDeviation` | `number` | Standard deviation of the buyer/seller market indicator |

***

### Understanding DOM and comparison fields

* **Standard DOM:** treats listings re-opened within 30 days as separate listings, tracking individual listing periods
* **Cumulative DOM:** treats listings re-opened within 30 days as the same listing, tracking total time on market
* **Market Velocity:** (active listings at month-end) ÷ (12-month moving average of sold listings)
* **Five-Year Monthly Mean/Median:** historical baseline using five-year averages for comparison
* **Change-from-Prior:** month-over-month, year-over-year, and five-year comparisons for trend analysis

### Example response

```json theme={null}
{
  "success": true,
  "data": [
    {
      "analytics": [
        {
          "geographyType": "state",
          "geographyTypeValue": "CA",
          "trends": {
            "listingTrends": [
              {
                "state": "CA",
                "stateName": "California",
                "stateId": "06",
                "yearMonth": 202412,
                "dataPeriod": "457 - December 2024",
                "cbsaCode": null,
                "cbsaName": null,
                "countyFipsCode": null,
                "countyName": null,
                "zipCode": null,
                "marketVelocity": 1.2,
                "activeListings": {
                  "inventoryCount": 68423,
                  "inventoryCountChangeFromPriorMonth": -0.032,
                  "inventoryCountFiveYearMonthlyMean": 62100.4,
                  "listPriceMean": 1124000,
                  "listPriceMedian": 785000,
                  "listPriceStandardDeviation": 892000,
                  "domMean": 42,
                  "domMedian": 38,
                  "domStandardDeviation": 28.5,
                  "cumulativeDomMean": 48,
                  "cumulativeDomMedian": 41,
                  "cumulativeDomStandardDeviation": 32.1,
                  "monthsSupply": 2.8
                },
                "allListings": null,
                "closedListings": null,
                "newListings": {
                  "inventoryCount": 18200,
                  "listPriceMean": 895000,
                  "listPriceMedian": 725000,
                  "listPriceStandardDeviation": 654000
                },
                "pendingListings": {
                  "inventoryCount": 15830,
                  "listPriceMean": 810000,
                  "domMean": 22,
                  "cumulativeDomMean": 26
                },
                "soldListings": {
                  "inventoryCount": 24318,
                  "inventoryCountChangeFromPriorMonth": 0.045,
                  "inventoryCountChangeFromPriorYear": -0.012,
                  "inventoryCountFiveYearMonthlyMean": 23500.2,
                  "inventoryCountYearlyTotal": 289000,
                  "listPriceMean": 762000,
                  "listPriceMeanChangeFromPriorMonth": 0.008,
                  "listPriceMeanChangeFromPriorYear": 0.052,
                  "listPriceMeanFiveYearMonthlyMean": 710000,
                  "listPricePerSquareFootMean": 485,
                  "listPricePerSquareFootMeanChangeFromPriorMonth": 0.003,
                  "listPricePerSquareFootMeanChangeFromPriorYear": 0.048,
                  "listPricePerSquareFootMeanFiveYearMonthlyMean": 442,
                  "domMean": 31,
                  "domMeanChangeFromPriorMonth": -2,
                  "domMeanFiveYearMonthlyMean": 34,
                  "cumulativeDomMean": 36
                },
                "delisted": {
                  "inventoryCount": 8420,
                  "listPriceMean": 920000,
                  "domMean": 65,
                  "cumulativeDomMean": 72
                },
                "marketIndicator": {
                  "buyerSellerMarketIndicatorMean": 1.15,
                  "buyerSellerMarketIndicatorMedian": 1.10,
                  "buyerSellerMarketIndicatorStandardDeviation": 0.35
                }
              }
            ]
          }
        }
      ]
    }
  ],
  "count": 1,
  "messages": []
}
```

## `pa-analytics_market_trends_tool`

Retrieve residential real estate market trends data for analyzing sales activity, equity positions, foreclosures, and market health.

**When to use:**

* You need home sales volumes, prices, or trends (total sales, resales, new construction)
* Analyzing foreclosures, distressed properties, or REO/short sales
* Evaluating equity positions, negative equity, or loan-to-value ratios
* Assessing market conditions, housing stock, or delinquency rates

**Examples:**

* *"What are the total home sales in Los Angeles County this year?"*
* *"Show me the foreclosure pipeline for Florida"*
* *"Compare median sale prices across CBSAs 31080, 16980, and 35620"*

### Input schema

All analytics tools accept the shared [`AnalyticsFilter`](#shared-input-analyticsfilter) input.

| Parameter          | Type              | Required | Description                              |
| ------------------ | ----------------- | -------- | ---------------------------------------- |
| `analytics_filter` | `AnalyticsFilter` | Yes      | Geography and optional time range filter |

### Example request

```json theme={null}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "pa-analytics_market_trends_tool",
    "arguments": {
      "analytics_filter": {
        "geography_filter": {
          "geography_type": "county_fips_code",
          "geography_type_values": ["06037"]
        },
        "time_range": {
          "from": { "year": 2024, "month": 1 },
          "to": { "year": 2024, "month": 12 }
        }
      }
    }
  }
}
```

### Output schema

The `analytics` array contains elements with `geographyType`, `geographyTypeValue`, and a `trends.marketTrends` array.

Each `marketTrends` record includes the [shared geography fields](#shared-geography-response-fields) plus the fields below.

| Field                     | Type                     | Description                                                                                                |
| ------------------------- | ------------------------ | ---------------------------------------------------------------------------------------------------------- |
| `loanCount`               | `integer`                | Total outstanding first-lien loans (\~85% coverage)                                                        |
| `residentialHousingStock` | `integer`                | Residential housing stock including SFA, SFD, townhouses, duplexes, triplexes, and condos (\~85% coverage) |
| `totalSales`              | `TotalSales`             | Total sale counts and prices with change-from-prior comparisons                                            |
| `resale`                  | `Resale`                 | Previously constructed home sales (excludes REO and short sales)                                           |
| `newConstructionSales`    | `NewConstructionSales`   | Newly constructed residential unit sales                                                                   |
| `reoSales`                | `ReoSales`               | Bank-owned property sales (\~50% coverage)                                                                 |
| `shortSales`              | `ShortSales`             | Sales where proceeds fall short of loan balance                                                            |
| `otherSales`              | `OtherSales`             | Non-arms-length transactions not covered by other categories                                               |
| `equity`                  | `Equity`                 | Equity percentages, negative equity, and LTV ratios (quarterly updates from Sept 2009)                     |
| `foreclosure`             | `Foreclosure`            | Foreclosure pipeline: completed, active, 90+ day delinquent, and pre-foreclosure filings                   |
| `nonOwnerOccupied`        | `NonOwnerOccupied`       | Investment property percentages by origination type                                                        |
| `residentialMarketSales`  | `ResidentialMarketSales` | Price-per-square-foot metrics with change-from-prior comparisons                                           |

#### `TotalSales`

Coverage is approximately 90%. All fields are optional, nullable, and default to `null`.

| Field                                | Type      | Description                                   |
| ------------------------------------ | --------- | --------------------------------------------- |
| `salesCount`                         | `integer` | Total home-sale transactions during the month |
| `salesCountChangeFromPriorMonth`     | `number`  | Sales count — month-over-month delta          |
| `salesCountChangeFromPriorYear`      | `number`  | Sales count — year-over-year delta            |
| `salesCountFiveYearMonthlyMean`      | `number`  | Sales count — five-year monthly average       |
| `salesCountYearlyTotal`              | `number`  | Sales count — yearly total                    |
| `salesPriceMean`                     | `number`  | Mean sale price for the month                 |
| `salesPriceMeanChangeFromPriorMonth` | `number`  | Mean sale price — month-over-month delta      |
| `salesPriceMeanChangeFromPriorYear`  | `number`  | Mean sale price — year-over-year delta        |
| `salesPriceMeanFiveYearMonthlyMean`  | `number`  | Mean sale price — five-year monthly average   |
| `salesPriceMedian`                   | `number`  | Median sale price for the month               |

#### `Resale`

Previously constructed homes sold to unaffiliated third parties. Does not include REO or short sales. All fields are optional, nullable, and default to `null`.

| Field              | Type      | Description                   |
| ------------------ | --------- | ----------------------------- |
| `salesCount`       | `integer` | Number of resale transactions |
| `salesPriceMean`   | `number`  | Mean resale price             |
| `salesPriceMedian` | `number`  | Median resale price           |

#### `NewConstructionSales`

All fields are optional, nullable, and default to `null`.

| Field              | Type      | Description                        |
| ------------------ | --------- | ---------------------------------- |
| `salesCount`       | `integer` | Number of new-construction sales   |
| `salesPriceMean`   | `number`  | Mean new-construction sale price   |
| `salesPriceMedian` | `number`  | Median new-construction sale price |

#### `ReoSales`

Bank-owned properties sold to an unaffiliated third party. Coverage is approximately 50%. All fields are optional, nullable, and default to `null`.

| Field              | Type      | Description                   |
| ------------------ | --------- | ----------------------------- |
| `loanCount`        | `integer` | Number of REO loans           |
| `salesCount`       | `integer` | Number of REO properties sold |
| `salesPriceMean`   | `number`  | Mean REO sale price           |
| `salesPriceMedian` | `number`  | Median REO sale price         |

#### `ShortSales`

Sales where proceeds fall short of the balance owed on the property's loan. All fields are optional, nullable, and default to `null`.

| Field              | Type      | Description             |
| ------------------ | --------- | ----------------------- |
| `salesCount`       | `integer` | Number of short sales   |
| `salesPriceMean`   | `number`  | Mean short-sale price   |
| `salesPriceMedian` | `number`  | Median short-sale price |

#### `OtherSales`

Non-arms-length transactions not accounted for by resales, REO, or short sales. All fields are optional, nullable, and default to `null`.

| Field              | Type      | Description             |
| ------------------ | --------- | ----------------------- |
| `salesCount`       | `integer` | Number of other sales   |
| `salesPriceMean`   | `number`  | Mean other-sale price   |
| `salesPriceMedian` | `number`  | Median other-sale price |

#### `Equity`

Updated quarterly from September 2009. Monthly values between quarterly updates are interpolated by dividing the quarterly difference by three. All fields are optional, nullable, and default to `null`.

| Field                 | Type      | Description                                                         |
| --------------------- | --------- | ------------------------------------------------------------------- |
| `equityPercentage`    | `number`  | Equity percentage — calculated as `1 − LTV`                         |
| `negativeEquityLoans` | `integer` | Number of mortgaged properties in negative equity                   |
| `negativeEquityShare` | `number`  | Share of mortgaged properties in negative equity (decimal fraction) |
| `totalLtvMedian`      | `number`  | Median loan-to-value ratio                                          |

#### `Foreclosure`

Coverage is approximately 85% for foreclosures and 75–90% for 90+ day delinquency (varies by market). These are directional indicators, not complete tallies. All fields are optional, nullable, and default to `null`.

| Field                      | Type      | Description                                                                  |
| -------------------------- | --------- | ---------------------------------------------------------------------------- |
| `completedForeclosures`    | `integer` | Properties sold at public auction due to missed payments                     |
| `foreclosures`             | `integer` | Loans currently in the foreclosure process                                   |
| `ninetyDayPlusDelinquency` | `integer` | Mortgages delinquent 90+ days (includes REO/foreclosure, prime and subprime) |
| `preForeclosureFilings`    | `integer` | Mortgages with foreclosure proceedings initiated via public notice (NOD)     |

#### `NonOwnerOccupied`

Percentages based on origination month. All fields are optional, nullable, and default to `null`.

| Field               | Type     | Description                                                                  |
| ------------------- | -------- | ---------------------------------------------------------------------------- |
| `percentPurchases`  | `number` | Percent of purchase originations attributed to non-owner occupied properties |
| `percentRefinances` | `number` | Percent of refinance originations attributed to non-owner occupied           |
| `percentTotal`      | `number` | Percent of total originations attributed to non-owner occupied               |

#### `ResidentialMarketSales`

All fields are optional, nullable, and default to `null`.

| Field                                             | Type     | Description                                 |
| ------------------------------------------------- | -------- | ------------------------------------------- |
| `salesPricePerSquareFootMean`                     | `number` | Mean sale price per square foot             |
| `salesPricePerSquareFootMeanChangeFromPriorMonth` | `number` | Mean price/sqft — month-over-month delta    |
| `salesPricePerSquareFootMeanChangeFromPriorYear`  | `number` | Mean price/sqft — year-over-year delta      |
| `salesPricePerSquareFootMeanFiveYearMonthlyMean`  | `number` | Mean price/sqft — five-year monthly average |
| `salesPriceYearlyTotal`                           | `number` | Total sales price for the year              |

***

## `pa-analytics_rental_trends_tool`

Retrieve rental market trends data for analyzing rental prices, inventory, vacancy rates, and capitalization rates in the residential rental sector.

**When to use:**

* You need rental prices, rent levels, or rental rate data (mean, median, min, max)
* Evaluating vacancy rates or rental availability
* Reviewing capitalization rates (cap rates) for rental properties
* Comparing rental trends by property type or bedroom count

**Examples:**

* *"What is the median rent for a 3-bedroom single-family home in CBSA 31080?"*
* *"Show me vacancy rates for ZIP code 98101"*
* *"Compare cap rates across New York state by property type"*

### Input schema

All analytics tools accept the shared [`AnalyticsFilter`](#shared-input-analyticsfilter) input.

| Parameter          | Type              | Required | Description                              |
| ------------------ | ----------------- | -------- | ---------------------------------------- |
| `analytics_filter` | `AnalyticsFilter` | Yes      | Geography and optional time range filter |

### Example request

```json theme={null}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "pa-analytics_rental_trends_tool",
    "arguments": {
      "analytics_filter": {
        "geography_filter": {
          "geography_type": "cbsa_code",
          "geography_type_values": ["31080"]
        }
      }
    }
  }
}
```

### Output schema

The `analytics` array contains elements with `geographyType`, `geographyTypeValue`, and a `trends.rentalTrends` array.

Each `rentalTrends` record includes the [shared geography fields](#shared-geography-response-fields) plus the field below.

| Field                 | Type                         | Description                                                   |
| --------------------- | ---------------------------- | ------------------------------------------------------------- |
| `rentalTrendsDetails` | `array[RentalTrendsDetails]` | Rental metrics broken down by property type and bedroom count |

#### `RentalTrendsDetails`

Each element represents a specific combination of property type and bedroom count.

| Field                      | Type      | Description                                                                |
| -------------------------- | --------- | -------------------------------------------------------------------------- |
| `propertyType`             | `string`  | Property type description (e.g., `"Single Family - Detached"`)             |
| `bedroomCount`             | `integer` | Number of bedrooms                                                         |
| `rentMean`                 | `integer` | Mean rent for the period                                                   |
| `rentMedian`               | `integer` | Median rent for the period                                                 |
| `rentMin`                  | `integer` | 5th percentile of rent amounts                                             |
| `rentMax`                  | `integer` | 95th percentile of rent amounts                                            |
| `rentSquareFootageMean`    | `number`  | Mean rent per square foot                                                  |
| `rentSquareFootageMedian`  | `number`  | Median rent per square foot                                                |
| `vacancyRate`              | `number`  | Estimated percentage of available units that are vacant (decimal fraction) |
| `capitalizationRateMean`   | `number`  | Mean cap rate — Net Operating Income ÷ Asset Acquisition Cost              |
| `capitalizationRateMedian` | `number`  | Median cap rate — Net Operating Income ÷ Asset Acquisition Cost            |

Property types include:

* `Single Family Detached` (1–4 bedrooms)
* `Single Family Attached` (1–3 bedrooms)
* `Single Family Combined` (1–4 bedrooms)

***

**Cap rate formula:** `Net Operating Income = Total Rental Income − Total Operating Cost`
Operating costs include property tax, property management fees, maintenance, lease/damages, liability insurance, and vacancy loss.

### Example response

```json theme={null}
{
  "success": true,
  "data": [
    {
      "analytics": [
        {
          "geographyType": "cbsa_code",
          "geographyTypeValue": "31080",
          "trends": {
            "rentalTrends": [
              {
                "state": "CA",
                "stateName": "California",
                "stateId": "06",
                "cbsaCode": "31080",
                "cbsaName": "Los Angeles-Long Beach-Anaheim, CA",
                "countyFipsCode": null,
                "countyName": null,
                "yearMonth": 202412,
                "dataPeriod": "457 - December 2024",
                "zipCode": null,
                "rentalTrendsDetails": [
                  {
                    "propertyType": "Single Family - Detached",
                    "bedroomCount": 3,
                    "rentMean": 3480,
                    "rentMedian": 3200,
                    "rentMin": 2100,
                    "rentMax": 5800,
                    "rentSquareFootageMean": 2.18,
                    "rentSquareFootageMedian": 1.95,
                    "vacancyRate": 0.047,
                    "capitalizationRateMean": 0.044,
                    "capitalizationRateMedian": 0.042
                  },
                  {
                    "propertyType": "Single Family - Detached",
                    "bedroomCount": 4,
                    "rentMean": 4250,
                    "rentMedian": 3950,
                    "rentMin": 2700,
                    "rentMax": 7200,
                    "rentSquareFootageMean": 1.92,
                    "rentSquareFootageMedian": 1.78,
                    "vacancyRate": 0.038,
                    "capitalizationRateMean": 0.041,
                    "capitalizationRateMedian": 0.039
                  }
                ]
              }
            ]
          }
        }
      ]
    }
  ],
  "count": 1,
  "messages": []
}
```

## `pa-analytics_corelogic_hpi_tool`

Retrieve Cotality Home Price Index (HPI) data measuring changes in housing market prices from 1976 through the present.

The HPI uses a repeat-sales, value-weighted econometric model with base year 2000 = 100. In geographies with insufficient data, the index is infilled using state-level monthly growth rates.

**When to use:**

* You need current or historical home price index values
* Tracking home price appreciation or depreciation over time
* Analyzing market volatility, price stability, or standard deviation of prices
* Evaluating whether markets are overvalued or undervalued

**Examples:**

* *"What is the current HPI for California?"*
* *"Show me HPI trends for county 06037 from 2020 to 2025"*
* *"Is CBSA 31080 currently overvalued or undervalued?"*

### Input schema

All analytics tools accept the shared [`AnalyticsFilter`](#shared-input-analyticsfilter) input.

| Parameter          | Type              | Required | Description                              |
| ------------------ | ----------------- | -------- | ---------------------------------------- |
| `analytics_filter` | `AnalyticsFilter` | Yes      | Geography and optional time range filter |

### Example request

```json theme={null}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "pa-analytics_corelogic_hpi_tool",
    "arguments": {
      "analytics_filter": {
        "geography_filter": {
          "geography_type": "state",
          "geography_type_values": ["CA"]
        },
        "time_range": {
          "from": { "year": 2024, "month": 1 },
          "to": { "year": 2024, "month": 12 }
        }
      }
    }
  }
}
```

### Output schema

The `analytics` array contains elements with `geographyType`, `geographyTypeValue`, and an `indices.corelogicHpi` array.

Each `corelogicHpi` record includes the [shared geography fields](#shared-geography-response-fields) plus the fields below.

| Field            | Type             | Description                                                                                                                     |
| ---------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `lastUpdateDate` | `string`         | Last date the index series was updated for this geography (stale series may resume if sufficient transactions become available) |
| `hpiTier`        | `array[HpiTier]` | Index values and statistics broken down by tier (price segment)                                                                 |

#### `HpiTier`

| Field                      | Type      | Description                                                                                                              |
| -------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------ |
| `tierCode`                 | `integer` | Tier code (0–9, 11, or 12) standardized by Cotality                                                                      |
| `tierName`                 | `string`  | Description for the tier                                                                                                 |
| `homePriceIndex`           | `number`  | HPI value (base year 2000 = 100)                                                                                         |
| `repeatSalesCount`         | `integer` | Number of repeat sales used to build the index for this period                                                           |
| `repeatSalesMedian`        | `number`  | Median home price for repeat-sales observations                                                                          |
| `standardDeviation`        | `number`  | Standard error of model coefficients (observed values around the estimated regression line)                              |
| `volatilityIndex`          | `number`  | 12-month moving average of standard deviation                                                                            |
| `longTermFundamentalValue` | `number`  | Long-term fundamental HPI derived from real disposable income per capita (top CBSAs only)                                |
| `marketIndicator`          | `string`  | Market condition: `"OVERVALUED"` (>10% above fundamental), `"UNDERVALUED"` (>10% below), or `"NORMAL"` (top CBSAs only)  |
| `startDate`                | `string`  | Date the index series was first created for this geography                                                               |
| `endDate`                  | `string`  | Most recent date the index series was updated using native geography data (not infilled)                                 |
| `disNondisFlag`            | `integer` | Non-disclosure flag — 1 indicates a non-disclosure state/county where transaction sale prices are not publicly available |

***

## `pa-analytics_corelogic_hpi_forecast_tool`

Retrieve Cotality Home Price Index (HPI) forecast data providing predicted future index values for market analysis and planning.

The forecast model uses a two-stage error correction methodology combining equilibrium housing price with short-run price fluctuations affected by market momentum, mean reversion, and exogenous economic shocks.

**When to use:**

* You need predicted future home price index values
* Evaluating expected home price appreciation or depreciation
* Assessing forecast uncertainty or prediction confidence
* Planning around long-term price expectations or market projections

**Examples:**

* *"What is the HPI forecast for CBSA 31080 over the next 12 months?"*
* *"Show me the predicted market condition for California through 2026"*
* *"What is the forecast confidence interval for Chicago's HPI?"*

### Input schema

All analytics tools accept the shared [`AnalyticsFilter`](#shared-input-analyticsfilter) input.

| Parameter          | Type              | Required | Description                              |
| ------------------ | ----------------- | -------- | ---------------------------------------- |
| `analytics_filter` | `AnalyticsFilter` | Yes      | Geography and optional time range filter |

### Example request

```json theme={null}
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "pa-analytics_corelogic_hpi_forecast_tool",
    "arguments": {
      "analytics_filter": {
        "geography_filter": {
          "geography_type": "cbsa_code",
          "geography_type_values": ["31080"]
        },
        "time_range": {
          "from": { "year": 2025, "month": 1 },
          "to": { "year": 2026, "month": 12 }
        }
      }
    }
  }
}
```

### Output schema

The `analytics` array contains elements with `geographyType`, `geographyTypeValue`, and an `indices.corelogicHpiForecast` array.

Each `corelogicHpiForecast` record includes the [shared geography fields](#shared-geography-response-fields) plus the field below.

| Field             | Type                     | Description                                        |
| ----------------- | ------------------------ | -------------------------------------------------- |
| `hpiForecastTier` | `array[HpiForecastTier]` | Forecast values and statistics broken down by tier |

#### `HpiForecastTier`

| Field                      | Type      | Description                                                                                                                  |
| -------------------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `tierCode`                 | `integer` | Tier code (0–9, 11, or 12) standardized by Cotality                                                                          |
| `tierName`                 | `string`  | Description for the tier                                                                                                     |
| `hpiForecast`              | `number`  | Forecasted HPI value (base year 2000 = 100)                                                                                  |
| `hpiForecastStandardError` | `number`  | Standard error used to calculate the 95% confidence interval — `SE = (UL − LL) / (2 × 1.96)`                                 |
| `longTermFundamentalValue` | `number`  | Long-term fundamental HPI derived from real disposable income per capita (top CBSAs only)                                    |
| `marketIndicator`          | `string`  | Forecasted market condition: "OVERVALUED" (>10% above fundamental), "UNDERVALUED" (>10% below), or "NORMAL" (top CBSAs only) |

### Example response

```json theme={null}
{
  "success": true,
  "data": [
    {
      "analytics": [
        {
          "geographyType": "cbsa_code",
          "geographyTypeValue": "31080",
          "indices": {
            "corelogicHpiForecast": [
              {
                "state": "CA",
                "cbsaCode": "31080",
                "cbsaName": "Los Angeles-Long Beach-Anaheim, CA",
                "yearMonth": 202506,
                "dataPeriod": "463 - June 2025",
                "hpiForecastTier": [
                  {
                    "tierCode": 0,
                    "tierName": "All Tiers",
                    "hpiForecast": 428.7,
                    "hpiForecastStandardError": 18.4,
                    "longTermFundamentalValue": 389.2,
                    "marketIndicator": "OVERVALUED"
                  }
                ]
              }
            ]
          }
        }
      ]
    }
  ],
  "count": 1,
  "messages": []
}
```
