Skip to main content
Glama

HUD-subsidised projects by place, programme, occupancy and waiting list

search_subsidised_housing
Read-onlyIdempotent

Search HUD's project-level Picture of Subsidized Households: 29,455 subsidised projects nationally, one row per project and programme, with units AVAILABLE (HUD's subsidised units available, which excludes units offline for rehab or disposition; occupancy is measured against these, so 100% of 20 available can be 20 of 50 built), occupied units, occupancy percent, MONTHS ON THE WAITING LIST, average rent, average household income, average tenure and what HUD pays per unit per month. Filter by state, city, programme (Public Housing, Section 8 NC/SR, Section 236, 202/PRAC, 811/PRAC, Mod Rehab), minimum waiting list, occupancy range and minimum units. Ordered by waiting list, deepest queue first. Every row carries the canonical property dfx_id. Free. ONE ANNUAL CAPTURE, effective 2025-12-31, stated on every row: this is a snapshot of demand, not a change over time. A NULL waiting list is an absent disclosure (housing authorities report it, private owners under a HAP contract mostly do not), never an empty queue; min_waiting_months EXCLUDES such rows and the answer states how many projects in the same place report one. Tenant composition is not published here.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cityNoCity as HUD records it, case-insensitive exact match, e.g. Akron.
limitNoRows to return, 1 to 50. `matched` states the true total regardless.
stateNoTwo-letter US state, district or territory code. Unknown codes are refused, not searched.
programNoSubstring of the HUD programme name, e.g. 'Public Housing' or 'Section 8'.
min_unitsNoOnly projects with at least this many units.
max_occupancyNoOccupancy percent ceiling, 0 to 100.
min_occupancyNoOccupancy percent floor, 0 to 100.
min_waiting_monthsNoOnly projects reporting a waiting list of at least this many months. Excludes projects that report none.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only/idempotent/non-destructive profile, and the description adds substantial non-redundant behaviour: a single annual capture dated 2025-12-31, the meaning of NULL waiting lists as absent disclosure rather than empty queues, the fact that min_waiting_months drops those rows, and the clarification that occupancy is measured against available (not built) units.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Long but front-loaded and dense: the resource, row shape and field list come first, then filters, then the crucial snapshot/NULL caveats. Nearly every clause carries a distinct fact; only minor phrasing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter tool with no output schema, the description supplies the return fields, the canonical dfx_id join key, the ordering, the snapshot caveat, and the NULL-disclosure behaviour, plus how the answer reports nearby reporting projects. No output schema is needed given this coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% so the schema baseline is 3; the description adds interpretive value beyond it, notably the 'mean' of an occupancy figure (100% of 20 available can be 20 of 50 built) and the consequence of a NULL waiting list for min_waiting_months. It doesn't document every parameter's syntax, so it is an enrichment rather than a replacement.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (search) and a precise resource (HUD project-level Picture of Subsidized Households), enumerated with row granularity (one row per project and programme), scope (29,455 projects nationally), and the exact return fields. It is unmistakably distinct from every sibling in the list, none of which touch subsidised housing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operative context: the legal filters (state, city, programme, waiting list, occupancy, units), the sort order, and the free/snapshot nature. It also warns which rows the answer excludes and how the answer compensates. It stops short of naming an alternative tool or an explicit when-not-to-use, so it does not reach 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.