Contract Clock: HUD Section 8 contract expirations
Server Details
HUD Section 8 HAP contract expirations, below-FMR screen and property lookup by state.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 4 tools
Each tool targets a distinct query shape: a dated expiration list, a single-property detail lookup, a rent-ratio screen, and a state/national summary. The only mild overlap is between expiring_contracts and screen_below_fmr, which both return filtered contract lists with similar fields, but the descriptions make the filter difference (date window vs. rent-to-FMR threshold) explicit.
Conventions are mixed: get_property and screen_below_fmr are verb-led, while expiring_contracts and state_contract_summary are noun phrases. All names are readable and domain-descriptive, but there is no predictable verb_noun pattern to generalize from.
Four tools is lean but each covers a genuinely different access pattern (filtered list, entity detail, screening query, aggregate roll-up). It sits at the low end of the comfortable range but does not feel padded or arbitrary.
The surface covers listing, filtering, detail retrieval and aggregation for the HUD contract domain. The main gap is the absence of an unfiltered 'all contracts in a state' listing (every list tool requires a date window or rent-ratio threshold), which forces workarounds for a plain inventory query.
Available Tools
4 toolsexpiring_contractsSection 8 contracts expiring in a stateARead-onlyIdempotentInspect
Active HUD project-based Section 8 and assistance contracts (HAP, PRAC, RAC, PAC) in one state whose overall or current expiration date falls in a date window, with property name, city, county, assisted units, program, both expiration dates, rent-to-FMR ratio and FHA number. Filter by county, city, contract type and size; page through results.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Optional city name, e.g. "Cleveland". | |
| from | No | Optional window start, YYYY-MM-DD (default: the HUD file's as-of date). | |
| sort | No | Soonest first (default) or largest first. | date |
| limit | No | Rows to return, 1 to 20 (default 10); page with offset for more. | |
| state | Yes | Two-letter state or territory code, e.g. OH. | |
| county | No | Optional county name as HUD spells it, e.g. "Cuyahoga". | |
| offset | No | Rows to skip, for paging. | |
| through | No | Optional window end, YYYY-MM-DD. | |
| date_field | No | "overall" = end of the contract term (default); "current" = end of the currently funded piece, which is often renewed. | overall |
| contract_type | No | Optional HUD contract document type. | |
| within_months | No | Window length in months, measured from the HUD file's as-of date (default 24, as on the deal screen). Ignored when "through" is given. | |
| min_assisted_units | No | Optional minimum assisted units on the contract. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds context beyond that: the dataset is restricted to ACTIVE contracts, the date filter can key off either overall or current expiration, and the row payload is enumerated. It does not mention that paging beyond the 20-row limit requires offset, though 'page through results' gestures at it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the core identity and scope front-loaded and the filtering/paging note trailing. The first sentence is long and carries a heavy clause chain, but every clause (active status, contract types, date window, returned fields) contributes information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter read tool with no output schema, the description supplies the one thing the schema cannot: a concrete inventory of returned fields (property name, city, county, assisted units, program, both expiration dates, rent-to-FMR ratio, FHA number). Combined with 100% schema coverage and full annotations, an agent has enough to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including the tricky date_field and within_months defaults is already documented in the schema. The description's 'filter by county, city, contract type and size' merely restates parameter names and adds no new semantics, so the baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (active HUD project-based Section 8 / HAP, PRAC, RAC, PAC contracts), a scope (one state), a filter condition (expiration date in a window) and the returned fields. It never names or distinguishes itself from the sibling state_contract_summary, which is the closest overlap, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: 'in one state', 'Filter by county, city, contract type and size; page through results' tells the agent roughly how to drive it, but there is no when-to-use-this-vs-state_contract_summary guidance and no note that a state is required or that results cap at 20 rows per page.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_propertySection 8 property and its contractsARead-onlyIdempotentInspect
One HUD Section 8 or assistance property with every contract on it: address, county, total units, HUD property category and financing type, FHA number, and per contract the number, program, status, effective date, both expiration dates, term, assisted units and rent-to-FMR ratio. Look up by contract number, HUD property ID, or property name within a state.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Optional city, to narrow a name search. | |
| name | No | Property name or part of it, e.g. "Carvel Gardens" (needs "state"). | |
| state | No | Two-letter state code. Optional with a contract number. | |
| property_id | No | HUD property ID, e.g. 800003809 (needs "state"). | |
| contract_number | No | HUD contract number, 11 characters, e.g. DE26M000010. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The read-only annotations already establish the safety profile, and the description adds substantial value by specifying that the tool returns one property with every contract and by enumerating the returned fields. It does not cover no-match behavior or whether name searches can ever return multiple properties.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the resource and returned data, then closes with lookup methods. It contains no filler, and the field enumeration is justified because there is no output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the necessary work of explaining the returned property and contract fields. One gap remains: the schema marks zero required parameters, while the tool logically needs at least one lookup key, and the description does not explicitly state that constraint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters, including examples and state requirements. The description restates the lookup modes in combined form but adds little semantic detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies a single HUD Section 8 property and enumerates the contract-level data returned, making it distinct from aggregate or filtered-list siblings. It does not explicitly name or contrast those siblings, which keeps it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage by listing three lookup keys: contract number, HUD property ID, or property name within a state. However, it gives no explicit when-to-use guidance relative to sibling tools and does not state exclusions or prerequisites beyond the lookup keys.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screen_below_fmrSection 8 HAP contracts paying under Fair Market RentARead-onlyIdempotentInspect
The deal screen's rent test for one state: active Section 8 HAP contracts whose rent-to-FMR ratio in HUD's file is above zero and under a threshold (default 90%), with property, assisted units, ratio, both expiration dates and a prefilled offer-calculator link. Optional filters: county, city, minimum assisted units, overall expiration within N months.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Optional city name, e.g. "Cleveland". | |
| sort | No | Lowest ratio first (default), largest first, or soonest overall expiration first. | rent_to_fmr |
| limit | No | Rows to return, 1 to 20 (default 10); page with offset for more. | |
| state | Yes | Two-letter state or territory code, e.g. OH. | |
| county | No | Optional county name as HUD spells it, e.g. "Cuyahoga". | |
| offset | No | Rows to skip, for paging. | |
| max_rent_to_fmr | No | Keep contracts whose rent-to-FMR ratio is under this percent (default 90, the deal screen's line). | |
| min_assisted_units | No | Optional minimum assisted units (the state page table uses 20). | |
| expiring_within_months | No | Optional: only contracts whose overall expiration falls within this many months of the HUD file date. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a read-only, non-destructive, idempotent, closed-world operation. The description adds useful behavioral context beyond annotations: it specifies that only active contracts are returned, describes the ratio condition, and names the fields and prefilled offer-calculator link included in results. It does not address auth or rate limits, but those are less critical here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core screening logic, then the return payload, then optional filters. It is dense but appropriately sized for a 9-parameter tool, with little wasted language.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description usefully names the return fields and prefilled calculator link. It also covers the threshold behavior and optional filters. Pagination and sorting are left to the fully documented schema, which is acceptable; the definition is complete enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all nine parameters thoroughly. The description restates the default threshold and lists optional filters, but adds no syntax, format, or edge-case semantics beyond what the schema provides. Baseline 3 is appropriate when structured fields carry the parameter burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource and screening condition: active Section 8 HAP contracts where rent-to-FMR is above zero and below a configurable threshold. It clearly identifies the tool's scope by state and lists returned fields, though it does not explicitly distinguish itself from siblings like expiring_contracts or state_contract_summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'deal screen's rent test for one state' implies the intended context, and optional filters are listed. However, there is no explicit guidance on when to choose this tool over expiring_contracts, get_property, or state_contract_summary, nor any stated exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
state_contract_summarySection 8 contract counts by stateARead-onlyIdempotentInspect
Deal-screen counts for one state, or every state ranked: properties, active contracts and assisted units, contracts reaching final (overall) expiration within two years of the HUD file date with their assisted units, and HAP contracts paying under 90% of Fair Market Rent. Omit state for the national ranking.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | States to list in the ranking, 1 to 30 (default 15). | |
| state | No | Two-letter state code, e.g. CA. Omit for all states. | |
| rank_by | No | National ranking order (ignored with "state"). | expiring |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds real domain context — the two-year window is measured against the HUD file date, and the expiration counted is the final/overall one — but says nothing about result size, paging, or what a state-scoped response looks like beyond the metric list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, with the metric list front-loaded and the state/default behavior trailing. The first sentence is long and heavily comma-laden, but each clause names a distinct countable and none is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of describing the return, and it does so by enumerating the five reported figures. It falls short on shape details — whether a state query returns a single row, and in what order the national ranking comes back — but an agent knows enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and all three parameters are fully documented in the schema, including the enum and the note that rank_by is ignored with 'state'. The description's only parameter contribution is restating the 'omit state for national ranking' behavior, so it sits at the baseline for a well-described schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete resource (Section 8 contract counts per state) and enumerates the exact metrics returned: properties, active contracts, assisted units, contracts expiring within two years, and below-90%-FMR HAP contracts. It is clearly a different artifact from expiring_contracts or screen_below_fmr, though it never explicitly names those siblings, so the differentiation is inferential rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage instruction is 'Omit state for the national ranking,' which is a parameter-mode hint rather than guidance on when this tool beats expiring_contracts or screen_below_fmr. An agent can infer this is the aggregate/summary entry point, but that inference is left to it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- First observed
expiring_contracts - First observed
get_property - First observed
screen_below_fmr - First observed
state_contract_summary
Related MCP Connectors
HUD FY 2027 Fair Market Rents by county and ZIP, with history and state summaries.
Fair Market Rents, income limits, public housing, vouchers, and homeless counts
LIHTC properties reaching Year 15 by state and year, with dates and exit options.
HUD RAD conversions, housing authority records, 2026 RAD rents, program facts and debt sizing.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceProvides access to U.S. HUD datasets covering fair market rents, income limits, USPS vacancy data, public housing, homelessness counts, and CHAS housing statistics.510 npmMIT
- AlicenseAqualityAmaintenanceMCP server for HUD housing data, enabling Fair Market Rent lookups, Section 8 income limits, and ZIP-to-county crosswalk mapping for affordable housing assessments.66 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables searching US residential foreclosure/REO/short-sale auction listings by state and county, with detailed property facts, sale event dates, venues, and bid/sale prices labeled by status.123 npm1MIT
- AlicenseNot gradedqualityDmaintenanceSubmarket-level US residential rental intelligence for AI agents. Search, compare, rank, and analyze rent data, trends, vacancy, affordability, and days on market across 1,000+ named submarkets in the 20+ largest US metros. ZIP-level and metro-level queries included. Always current, always expanding. Free tier available.1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.