Skip to main content

Get Historical Exposure Summary

How a property's availability moved over time, one row per period.

WHEN TO CALL: any "over time", "by month", "trend", "velocity" or
"absorption" question about leasing — how much of the property sat
available, whether that is improving, how long units take to place.
`get_historical_rent_summary` answers that shape of question for
PRICE; this one answers it for VELOCITY.

CALL THIS FIRST. `get_comp_set_details` and
`get_comp_set_comps_details` at data_level "detailed"/"full" can
answer the same question by returning every raw unit listing for you
to count, but they cost 10K-200K+ tokens and grow with the size of
the comp set. This endpoint is pre-aggregated by the backend and
bounded at 30 periods, so it costs a few hundred tokens whatever the
property's size. Only fall back to the raw-listing tools if this
returns no data and the user needs a per-unit answer.

Each period carries:
- exposureRate: share of units available (0-1).
- unitsAvailable: that rate applied to the property's unit count.
- netUnitsAbsorbed: drop in available units vs the previous period.
Positive means availability shrank.
- avgListingDays: average days a unit stayed listed.

WHAT THIS CANNOT TELL YOU. There is no per-period count of units
leased or taken off the market anywhere in the platform. Exposure is
a rate, and `netUnitsAbsorbed` nets move-outs and newly listed units
against units leased — a month where ten units leased and ten more
came available reads as zero. Report it as net change in
availability and say so. If the user asks specifically how many
units were leased or taken off the market in a period, give this net
figure with that caveat; do not present it as a lease count.

Inputs​

ParameterRequiredTypeDetails
comp_set_idNoanyOfWhen given, adds `compSetAverage` — the comparables'
exposure averaged into ONE series per period, not a series
per property, so the response stays bounded.
Default: null
date_fromNoanyOf"YYYY-MM-DD". Defaults to 12 periods before date_to.
Default: null
date_toNoanyOf"YYYY-MM-DD". Defaults to today.
Default: null
periodicityNostring"MONTHLY" (default), "WEEKLY" or "DAILY". The API
returns at most 30 monthly, 30 weekly or 45 daily periods.
Default: "MONTHLY"
Allowed: ["DAILY","WEEKLY","MONTHLY"]
property_idYesstringThe Keyway property ID (required).

Annotations​

{
"title": "Get Historical Exposure Summary",
"readOnlyHint": true,
"destructiveHint": false,
"openWorldHint": false
}

Input schema​

{
"type": "object",
"additionalProperties": false,
"properties": {
"property_id": {
"type": "string",
"description": "The Keyway property ID (required)."
},
"date_from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "\"YYYY-MM-DD\". Defaults to 12 periods before date_to."
},
"date_to": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "\"YYYY-MM-DD\". Defaults to today."
},
"periodicity": {
"default": "MONTHLY",
"enum": [
"DAILY",
"WEEKLY",
"MONTHLY"
],
"type": "string",
"description": "\"MONTHLY\" (default), \"WEEKLY\" or \"DAILY\". The API\nreturns at most 30 monthly, 30 weekly or 45 daily periods."
},
"comp_set_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "When given, adds `compSetAverage` — the comparables'\nexposure averaged into ONE series per period, not a series\nper property, so the response stays bounded."
}
},
"required": [
"property_id"
]
}