Skip to main content
Glama

Bedcount: student housing data by campus

Server Details

IPEDS enrollment, college housing beds and bed gap at 693 US campuses, plus a loan sizer.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.1/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct role: get_campus retrieves a single campus profile, search_campuses lists/filters many campuses, and size_loan performs a financial loan-sizing calculation. There is no meaningful overlap in action or output even though the first two share the same data domain.

Naming Consistency5/5

All names use snake_case with a verb_noun pattern (get_campus, search_campuses, size_loan). The convention is predictable and readable throughout, with only 'size' being a slightly less common verb but still consistent with the pattern.

Tool Count4/5

Three tools is on the thin side but each earns its place: search, detail lookup, and a loan calculator cover the server's apparent scope. A few more tools (e.g., comparison or aggregate views) could round it out, but nothing is redundant.

Completeness4/5

The read-only campus data surface is well covered with search plus detail retrieval, and the loan sizer extends into a related workflow. Minor gaps exist—such as no bulk comparison, no metadata/filter enumeration, and no aggregate metrics—but agents can work around these using search results.

Available Tools

3 tools
get_campusStudent housing data for one campusA
Read-onlyIdempotent
Inspect

One US four-year campus (3,000+ full-time students) from federal IPEDS data: fall 2024 enrollment (total, full-time, undergraduate, graduate, online share, change from 2023), college-controlled housing beds for 2024-25, beds per 100 full-time students, the bed gap, typical housing and food charges, aid-office housing budgets, and whether it meets Fannie Mae's 10,000-student campus-size test. Find it by name (with optional state) or IPEDS UNITID.

NameRequiredDescriptionDefault
nameNoCampus name or distinctive words from it, e.g. "University of Florida" or "texas austin".
stateNoTwo-letter state code to narrow a name match, e.g. TX.
unitidNoSix-digit IPEDS UNITID, e.g. 228778. Overrides name.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare this as a read-only, idempotent, non-destructive, closed-world operation, so the safety profile is covered. The description adds useful behavioral context beyond annotations: data source (federal IPEDS), vintage (fall 2024, 2024-25), population restriction (3,000+ full-time students), and the specific metrics returned.

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?

The description is front-loaded with the core purpose and uses only two sentences, with no filler. However, the first sentence is a long, dense enumeration of data fields, which is useful but makes the definition harder to scan quickly than a more structured presentation would.

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?

There is no output schema, so the description carries the burden of explaining return values, and it does so comprehensively by listing enrollment, housing beds, bed gap, charges, aid budgets, and the Fannie Mae test. Combined with fully described input parameters and annotations covering safety, an agent has enough information to call the tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already fully documented. The description repeats the lookup methods (name with optional state, or IPEDS UNITID) but does not add syntax or selection semantics beyond what the schema already provides, such as the explicit 'unitid overrides name' behavior.

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?

The description states a specific verb/resource: retrieving one US four-year campus from IPEDS data, with a clear scope of 3,000+ full-time students. It distinguishes the tool from a general campus search by emphasizing 'One' campus and specifying exact lookup methods. The extensive data fields further clarify what the campus record contains.

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?

The description explains how to invoke the tool: by name with optional state, or by IPEDS UNITID. This gives clear context for lookup, but it does not explicitly contrast with the sibling search_campuses or state when not to use this tool, such as when the campus is unknown.

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

search_campusesFind and rank campuses by students and bedsA
Read-onlyIdempotent
Inspect

Lists US four-year campuses (3,000+ full-time students) filtered by state, city, name words, sector, whether the college offers housing, Fannie Mae campus-size test, or minimum full-time enrollment, ranked by bed gap, enrollment, college beds, beds per 100 students or housing charge. Each row gives fall 2024 enrollment, 2024-25 college-controlled beds, bed gap, housing charge and the campus page link.

NameRequiredDescriptionDefault
cityNoCity name, e.g. "Austin".
nameNoWords from the campus name, e.g. "state university".
sortNoRanking field.bed_gap
limitNoRows to return (max 25).
orderNodesc = largest first.desc
stateNoTwo-letter state code, e.g. TX.
offsetNoRows to skip, for paging.
sectorNoControl of the institution.
min_fulltimeNoMinimum full-time students, fall 2024.
offers_housingNotrue = only colleges that provide housing; false = only those that provide none.
fannie_campus_size_testNotrue = only campuses with 10,000+ students, majority full-time (Fannie Mae Dedicated Student Housing campus-size test).

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds genuinely non-obvious context: a hidden base cohort (US four-year, 3,000+ full-time students) that constrains every query, plus exactly what each returned row contains. It does not address pagination limits or what happens when filters yield nothing, but it meaningfully exceeds the annotation baseline.

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?

Two dense sentences: the first front-loads the population, filters and ranking vocabulary; the second enumerates returned fields. Every clause carries information, though the long comma-chained filter list is heavy and sacrifices scannability for completeness.

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

Completeness4/5

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

With 11 optional parameters and no output schema, the description supplies the missing return-value detail (fall 2024 enrollment, beds, bed gap, housing charge, campus link) and the implicit cohort floor. The remaining gap is the tension between the stated 3,000+ floor and a min_fulltime minimum of 0, which is never reconciled.

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 coverage is 100%, so baseline is 3, but the description adds a semantic constraint absent from the schema: the population is pre-filtered to 3,000+ full-time students at four-year US institutions, which interacts with the min_fulltime parameter (min 0) and prevents misreading that parameter as removing the cohort floor. It also documents the output row fields, which no output schema provides.

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

Purpose4/5

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

States a specific verb (Lists) and a well-scoped resource: US four-year campuses with 3,000+ full-time students, enumerating both filter dimensions and ranking dimensions. The listing behavior is clearly distinct from get_campus's single-record lookup, but the description never names that sibling, so differentiation is left to inference.

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

Usage Guidelines3/5

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

Usage is implied by the filter and ranking vocabulary — an agent can infer this is the tool for discovering/ranking many campuses, with get_campus for one. There is no explicit 'use this when' statement, no mention of alternatives such as get_campus, and no guidance on defaults (sort=bed_gap) or when a filter combination is meaningful.

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

size_loanSize a student housing loan by the bedA
Read-onlyIdempotent
Inspect

The studenthousing.loans by-the-bed loan sizer: from beds, rent per bed, months collected, vacancy, expenses, reserves, value and your own interest rate, returns net operating income and the loan allowed by max LTV, min DSCR and an optional debt yield, the maximum loan (the smallest), which test binds, annual debt service and loan per bed. Presets are Freddie Mac's published student housing LTV/DSCR tiers.

NameRequiredDescriptionDefault
bedsYesNumber of beds.
valueYesProperty value or purchase price, dollars.
presetNoFreddie Mac student housing tier: freddie_5_7yr = 75% LTV / 1.30x; freddie_over_7yr = 80% / 1.30x; freddie_full_io_5_7yr = 65% / 1.30x, interest only.freddie_5_7yr
min_dscrNoMinimum debt service coverage, e.g. 1.25. Overrides the preset.
max_ltv_pctNoMax loan-to-value, percent. Overrides the preset.
vacancy_pctNoVacancy, concessions and bad debt, percent of rent. Default 5, Fannie Mae's by-the-bed floor with a T-12 (10 without one).
months_collectedNoMonths of rent collected a year: 12 on 12-month leases, less if summer is empty.
interest_rate_pctYesYour own quoted interest rate, percent, e.g. 6.25.
opex_per_bed_yearYesOperating expenses per bed per year (taxes, insurance, payroll, utilities, turnover), dollars.
amortization_yearsNoAmortization in years, 0 = interest only. Default 30 (0 with the full-IO preset).
min_debt_yield_pctNoMinimum debt yield, percent. Omit or 0 to skip the test.
rent_per_bed_monthYesRent per bed per month, dollars.
reserves_per_bed_yearNoReplacement reserves per bed per year, dollars. Default 150, Freddie Mac's stated minimum per bed.
other_income_per_bed_monthNoOther income per bed per month (parking, fees, utility bill-backs), dollars.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description goes beyond them by disclosing the computation logic — that the maximum loan is the smallest of the LTV, DSCR and debt-yield tests and which test binds — which is meaningful behavioral context for interpreting results. It doesn't cover error behavior or unit handling, keeping it at 4.

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

Conciseness3/5

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

Purpose is front-loaded in the first clause, but the rest is a single run-on sentence that strings inputs, outputs, override logic and preset provenance together without punctuation breaks. It is dense but readable; splitting the return-value clause out would help scanning.

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

Completeness4/5

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

With 14 parameters and no output schema, the description's enumeration of return values (NOI, max loan, binding test, debt service, loan per bed) fills the gap the missing output schema leaves. Preset override semantics are implied through the schema rather than stated in the description, a minor shortfall.

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 baseline is 3; the description earns the bump by naming the input families (beds, rent per bed, months collected, vacancy, expenses, reserves, value, own interest rate) and flagging the debt yield as optional and the rate as 'your own,' i.e. an override rather than a preset value.

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?

The description names a specific verb and resource ('by-the-bed loan sizer') and enumerates both the input drivers and the outputs (NOI, max loan, binding test, annual debt service, loan per bed). Siblings (get_campus, search_campuses) are unrelated lookups, so no differentiation burden exists, but the scope statement is precise regardless.

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

Usage Guidelines3/5

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

It implies usage context by calling itself a loan sizer and by explaining that presets are 'Freddie Mac's published student housing LTV/DSCR tiers,' and it notes min_debt_yield is optional. It never states when to use this vs. an alternative, nor any precondition such as needing a property value or a quoted rate before sizing.

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.

  1. 3 tool updates
    • First observedget_campus
    • First observedsearch_campuses
    • First observedsize_loan

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources