Skip to main content
Glama

Server Details

Analyze any US home: buy vs rent Monte Carlo, affordability, and ZIP-level appreciation data.

Ownership verified
Status
Healthy
Uptime
100.0% over 42 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation4/5

The six tools have mostly clear boundaries: affordability vs. affordable_price are inverse use cases (can I afford this home vs. what can I afford) and analyze_address vs. compare_areas distinguish single-location lookup from multi-location ranking. Minor potential confusion remains between the two affordability tools and the two area-analysis tools, though their descriptions explicitly disambiguate them.

Naming Consistency4/5

All tools use lowercase snake_case, which is consistent and readable. However, the grammatical pattern is mixed: analyze_address, compare_areas, and request_capability are verb_noun, while affordability and affordable_price are noun/adjective phrases and buy_vs_rent is a comparison phrase.

Tool Count5/5

Six tools is well-scoped for a homebuyer decision-support server; each tool maps to a distinct decision lens (affordability, max price, area lookup, buy-vs-rent, area comparison, and gap capture). No tool feels redundant or padded.

Completeness3/5

Core affordability, area analysis, and buy-vs-rent workflows are covered, but notable gaps exist: no property valuation or market-price lookup, no rental-income/Airbnb modeling, and no non-US coverage. The request_capability tool acknowledges these gaps rather than filling them, so agents may hit dead ends for common valuation or rental questions.

Available Tools

6 tools
affordabilityA
Read-only
Inspect

Can this buyer afford this home? Returns the monthly PITI payment, front-end and back-end debt-to-income ratios (what a lender qualifies on), the income needed at a 28% front-end ratio, estimated after-tax money left over each month, the cash cushion left after closing, and a plain Comfortable / Qualifiable-tight / Stretch verdict.

monthly_debts = recurring debt obligations a lender counts (car, student loan, minimum
credit-card) — NOT living costs; this feeds DTI. monthly_expenses = living costs (food,
utilities, childcare) used ONLY for the 'left over each month' life check, never DTI.
Pass `address` to ground property tax + insurance in the ZIP's real rates. Pass
`liquid_savings` to get the post-closing cash cushion (months of payment covered).
NameRequiredDescriptionDefault
addressNoFull US street address, or a bare 5-digit ZIP. Pass it whenever it is known: it grounds property tax, insurance and the appreciation forecast in that ZIP's real figures instead of national defaults.
fixed_rateNoMortgage interest rate as an annual PERCENT: 6.75 means 6.75%. Not a decimal (not 0.0675).
home_priceYesPurchase price in whole US dollars, e.g. 650000 (not 650 or 650k).
hoa_monthlyNoHOA or condo fee in US dollars per month. 0 for most single-family homes.
annual_incomeYesGross household income before tax, in whole US dollars per year, e.g. 140000.
monthly_debtsNoRecurring DEBT obligations a lender counts, in dollars per month: car payment, student loan, minimum credit-card payment. This feeds DTI. Do NOT put groceries, utilities or childcare here.
insurance_rateNoAnnual homeowners insurance as a PERCENT of home value: 0.45 means 0.45%/yr. Leave unset to use the regional default.
liquid_savingsNoCash available for down payment and closing costs, in US dollars. Supplying it adds the post-closing cash cushion and the cash-limited price check.
down_payment_pctNoDown payment as a PERCENT of price: 20 means 20%. Not a fraction (not 0.20).
monthly_expensesNoOrdinary living costs in US dollars per month — food, utilities, childcare. Used ONLY for the 'left over each month' life check and NEVER for DTI. Keep these separate from `monthly_debts`, which is the lender-visible figure.
marginal_tax_rateNoMarginal federal income tax rate as a PERCENT: 24 means 24%. Used only to estimate after-tax take-home for the monthly-slack figure.
property_tax_rateNoAnnual property tax as a PERCENT of home value: 0.55 means 0.55%/yr. Leave unset to use the ZIP's real rate when `address` is given.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=true), so the bar is lower. The description adds real behavioral context beyond them: it clarifies that monthly_debts feeds DTI while monthly_expenses is deliberately excluded, and that supplying address switches from national defaults to ZIP-grounded tax/insurance figures. It does not disclose latency, caching, or external-call implications of the open-world lookup.

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?

Front-loaded with the core question and output list, then the two parameters that most change results. The trailing paragraph largely restates schema-level guidance, which is mild redundancy, but no sentence is filler and the sizing fits a 12-parameter financial tool.

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?

With no output schema, the description correctly takes on the burden of describing returns (PITI, DTI ratios, 28% income need, after-tax slack, cash cushion, verdict), and it explains how optional inputs change those returns. For a complex 12-parameter tool it covers everything an agent needs to call it 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 coverage is 100%, so the schema already documents all 12 parameters with units and percent-vs-fraction warnings. The description's distinct contribution is sharpening the monthly_debts vs monthly_expenses split, but the same distinction is already stated verbatim in the schema property descriptions, so the marginal value is small. Baseline 3 is appropriate.

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?

The description states a specific question ('Can this buyer afford this home?') and enumerates the exact computed outputs (PITI, front/back-end DTI, 28% income requirement, after-tax slack, cash cushion, verdict), so the agent knows precisely what the tool answers. However, it never names or contrasts with the closest sibling, affordable_price, leaving the affordability-vs-max-price distinction 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?

It gives conditional guidance for optional inputs ('Pass `address` whenever it is known', 'Pass `liquid_savings` to get the post-closing cash cushion'), which implies usage context. But there is no when-to-use-this-tool-vs-alternatives guidance, no exclusion conditions, and no mention of when buy_vs_rent or affordable_price would be the better call.

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

affordable_priceA
Read-only
Inspect

What's the most this buyer can afford? The reverse of affordability — 'what price can I afford?' instead of 'can I afford this specific home?'. Solves for the maximum home price under standard lender limits: a front-end DTI cap (default 28% = housing / gross income) and a back-end cap (default 36% = housing + other debts / gross income). If liquid_savings is given, also caps by the cash available for down payment + closing and reports which limit binds. Returns the affordable price, the PITI and DTIs at that price, and the cash to close. Pass address to ground property tax + insurance in the ZIP's real rates.

This is a lender-limit ceiling, not a comfort recommendation — feed the result into
`affordability` (or buy_vs_rent) to check monthly slack and whether buying pencils.
NameRequiredDescriptionDefault
addressNoFull US street address, or a bare 5-digit ZIP. Pass it whenever it is known: it grounds property tax, insurance and the appreciation forecast in that ZIP's real figures instead of national defaults.
fixed_rateNoMortgage interest rate as an annual PERCENT: 6.75 means 6.75%. Not a decimal (not 0.0675).
hoa_monthlyNoHOA or condo fee in US dollars per month. 0 for most single-family homes.
annual_incomeYesGross household income before tax, in whole US dollars per year, e.g. 140000.
monthly_debtsNoRecurring DEBT obligations a lender counts, in dollars per month: car payment, student loan, minimum credit-card payment. This feeds DTI. Do NOT put groceries, utilities or childcare here.
insurance_rateNoAnnual homeowners insurance as a PERCENT of home value: 0.45 means 0.45%/yr. Leave unset to use the regional default.
liquid_savingsNoCash available for down payment and closing costs, in US dollars. Supplying it adds the post-closing cash cushion and the cash-limited price check.
back_end_dti_pctNoBack-end DTI cap as a PERCENT: housing plus other debts, divided by gross income. The lender standard is 36. Only change it if the user names a different limit.
down_payment_pctNoDown payment as a PERCENT of price: 20 means 20%. Not a fraction (not 0.20).
front_end_dti_pctNoFront-end DTI cap as a PERCENT: housing cost divided by gross income. The lender standard is 28. Only change it if the user names a different limit.
property_tax_rateNoAnnual property tax as a PERCENT of home value: 0.55 means 0.55%/yr. Leave unset to use the ZIP's real rate when `address` is given.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations only declare readOnlyHint and openWorldHint; the description goes well beyond by disclosing the two default DTI caps, the conditional behavior when `liquid_savings` is supplied (adds cash cushion and reports which limit binds), and the returned fields. It does not contradict the annotations. Only missing piece is any note on precision/assumption limits of the solver.

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?

Front-loaded core question, then the mechanism, then the caveat and downstream handoff. Dense and mostly waste-free, though the two-paragraph layout is slightly long for the content.

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 a complex 11-parameter solver with no output schema, the description explains the computation, the conditional outputs, and the returns (price, PITI, DTIs, cash to close). An agent has enough to invoke correctly.

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 baseline is 3, but the description adds real meaning beyond the fields — it ties `liquid_savings` to a limit-binding outcome and `address` to ZIP-grounded tax/insurance rates. This exceeds what the schema alone conveys.

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?

Names a specific computational verb+resource: it solves for the maximum affordable home price. It explicitly contrasts itself with the `affordability` sibling ('the reverse of affordability — what price can I afford? instead of can I afford this specific home?'), so an agent can route without opening either schema.

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

Usage Guidelines5/5

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

Gives explicit when-to-use, an exclusion ('This is a lender-limit ceiling, not a comfort recommendation'), and names the downstream alternatives (`affordability`, `buy_vs_rent`) to feed the result into. Usage is fully determined.

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

analyze_addressA
Read-only
Inspect

Look up a US address (or bare 5-digit ZIP): ZIP-level home-price appreciation forecast (FHFA data back to 1975), estimated market rent, and neighborhood signals (schools, walkability, water quality, grocery/dining/outdoors proximity).

For a full street address this also returns sub-ZIP `nbhd*` fields describing the
specific census tract - how its prices, incomes and build era compare to the rest of
the ZIP. That is POSITION, not a neighborhood forecast; see _units.

property_type: sfr | condo | townhome | multi
NameRequiredDescriptionDefault
addressYesFull US street address, or a bare 5-digit ZIP. Pass it whenever it is known: it grounds property tax, insurance and the appreciation forecast in that ZIP's real figures instead of national defaults.
bedroomsNoBedroom count, used to select the matching market-rent estimate for the ZIP. Defaults to 2.
property_typeNoOne of: sfr (single-family), condo, townhome, multi.sfr

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds real context beyond that: data provenance (FHFA back to 1975), what the sub-ZIP nbhd* fields mean, and a caveat that they represent POSITION rather than a neighborhood forecast. The forward reference to '_units' is unexplained and undefined in the schema.

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?

Information-dense and front-loaded: the primary output set comes first, then the sub-ZIP caveat. It is slightly cluttered by the dangling '_units' pointer, but no sentence is purely redundant.

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 no output schema, the description carries the return-value burden and does so by naming the forecast, rent, neighborhood signals, and sub-ZIP fields. Annotations cover the safety profile, and the only omissions are rate limits/auth and explaining the '_units' reference.

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 the baseline is 3. The description restates the property_type values (sfr | condo | townhome | multi), which is marginally helpful since the schema lists no formal enum, but this duplicates the schema's own field text rather than adding meaning.

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?

The description states a specific verb ('look up') and resource ('a US address or bare 5-digit ZIP') and enumerates the returned dimensions: appreciation forecast, market rent, and neighborhood signals. This is clearly distinguishable from analytical siblings like buy_vs_rent or affordability, though it never names an alternative to contrast against.

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 when to pass a full address versus a bare ZIP (the nbhd* sub-ZIP fields only appear with a street address), which is useful. But it gives no guidance on when to choose this tool over affordability, affordable_price, compare_areas, or buy_vs_rent, so the agent must infer routing.

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

buy_vs_rentA
Read-only
Inspect

Should someone buy this home or keep renting? Runs the TerraVue engine: a deterministic 30-year simulation plus a 500-scenario Monte Carlo over correlated market paths. Returns the probability buying wins, the breakeven hold period, and net-worth outcomes.

monthly_rent = what the person would pay to rent THE SAME HOME to live in — an
owner-occupant buy-vs-rent decision, NOT rental income they'd collect as a landlord
(this tool does not model rental cash flow; that lens lives on terravue.app). A rent
far out of line with home_price is almost certainly a misunderstanding — confirm it
before trusting the verdict. If `address` is given, the ZIP's real appreciation forecast
and regional tax/insurance defaults are used (explicit parameters still win).
NameRequiredDescriptionDefault
addressNoFull US street address, or a bare 5-digit ZIP. Pass it whenever it is known: it grounds property tax, insurance and the appreciation forecast in that ZIP's real figures instead of national defaults.
fixed_rateNoMortgage interest rate as an annual PERCENT: 6.75 means 6.75%. Not a decimal (not 0.0675).
home_priceYesPurchase price in whole US dollars, e.g. 650000 (not 650 or 650k).
hoa_monthlyNoHOA or condo fee in US dollars per month. 0 for most single-family homes.
monthly_rentYesWhat this person would pay per month, in US dollars, to rent THE SAME HOME to live in. This is an owner-occupant comparison — it is NOT rental income they would collect as a landlord.
analysis_yearsNoHold period in years. Use the horizon the person actually stated — if they say 'about five years', pass 5. Only default to 30 when no horizon was given.
down_payment_pctNoDown payment as a PERCENT of price: 20 means 20%. Not a fraction (not 0.20).
property_tax_rateNoAnnual property tax as a PERCENT of home value: 0.55 means 0.55%/yr. Leave unset to use the ZIP's real rate when `address` is given.
home_appreciation_rateNoAnnual home appreciation as a PERCENT: 3.5 means 3.5%/yr. Prefer leaving this unset and passing `address` instead, so the ZIP's FHFA-derived forecast is used rather than a guess.
investment_return_rateNoAnnual return the renter earns on invested cash, as a PERCENT: 9.5 means 9.5%/yr, roughly long-run equities. This assumption drives the result more than any other — drop it to about 4.5 if the alternative is savings rather than the market, or if the person sounds risk-averse, and present both runs.

TDQS

A4/5.0
Behavior4/5

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

Annotations only declare readOnlyHint and openWorldHint; the description adds genuinely non-obvious behavior — deterministic simulation plus Monte Carlo over correlated market paths, and the specific return values (win probability, breakeven, net worth). It also discloses the precedence rule that explicit parameters override ZIP defaults, which is behavioral context the annotations do not carry.

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?

Front-loaded with the decision and the engine, then returns, then parameter caveats — good ordering with no filler. The monthly_rent paragraph partly restates the schema's own description, which is mild redundancy but defensible given how easy that field is to misread.

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?

For a 10-parameter financial simulation with no output schema, the description covers the mechanism, the return values, key parameter caveats, and the address-vs-explicit-parameter precedence. Nothing critical to calling it correctly is missing.

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 parameters are already documented, but the description adds real semantic value: it disambiguates `monthly_rent` as owner-occupant rent (not landlord income) and supplies the sanity heuristic that a rent far out of line with home_price signals a misunderstanding. That heuristic goes beyond anything in the schema.

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?

The description opens with the exact decision the tool answers ('Should someone buy this home or keep renting?') and names the mechanism (TerraVue engine, 30-year deterministic simulation + 500-scenario Monte Carlo) plus the outputs (probability buying wins, breakeven hold period, net-worth outcomes). It is a specific verb+resource, though it never explicitly contrasts itself with siblings like affordability or affordable_price.

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?

It clearly frames the use case as an owner-occupant decision and routes the landlord/rental-income lens elsewhere, and it gives situational guidance ('confirm rent before trusting the verdict', pass `address` whenever known, prefer unset appreciation over a guess). There is no explicit when-not relative to the sibling tools, so it falls short of a 5.

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

compare_areasA
Read-only
Inspect

Analyze and RANK 2-12 ZIPs or addresses side by side on the signals TerraVue has: home-price appreciation forecast (and how each compares to the national average), school rating, walkability, education level, and water quality. Returns the correct city name per ZIP, so locations are never guessed or mislabeled.

Use for "which areas have the best appreciation / schools / upside." TerraVue has no
listing inventory and cannot discover ZIPs on its own — to scan a metro, pass that
metro's ZIP codes (the ranking then covers exactly what you passed).
NameRequiredDescriptionDefault
bedroomsNoBedroom count, used to select the matching market-rent estimate for the ZIP. Defaults to 2.
addressesYes2 to 12 US addresses or bare 5-digit ZIPs to rank side by side. TerraVue has no listing inventory and cannot discover ZIPs on its own — to scan a metro, pass that metro's ZIP codes explicitly, and the ranking covers exactly what you passed.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds non-obvious behavior beyond that: TerraVue has no listing inventory, cannot discover ZIPs on its own, the ranking covers exactly what was passed, and it returns the correct city name per ZIP. These are real behavioral constraints, not restated annotations.

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?

Front-loaded with the core action and signal list, then a second paragraph for usage. Every sentence earns its place, though the no-listing-inventory caveat is somewhat verbose and overlaps with the schema's addresses description.

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 no output schema, the description carries the return-value burden and does so by stating it returns ranked signals plus the correct city name per ZIP. It is largely complete for a two-parameter read tool, though it could say more about ranking direction or output shape.

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 both parameters (addresses, bedrooms) are already documented, including the 2-12 range and the bedroom-to-rent-estimate link. The description restates the range and the ZIP-discovery caveat but adds no new syntax or format meaning, so the baseline 3 applies.

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 (analyze and RANK) and resource (2-12 ZIPs or addresses side by side) and enumerates the exact signals computed (appreciation forecast, school rating, walkability, education level, water quality). The multi-location scope implicitly but clearly separates it from single-location siblings like analyze_address and affordability.

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 an explicit trigger ('Use for "which areas have the best appreciation / schools / upside"') and a clear operational constraint (pass a metro's ZIPs explicitly because TerraVue cannot discover ZIPs). It stops short of naming an alternative sibling or stating when not to use it, so it is clear context without exclusions.

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

request_capabilityAInspect

Record a question TerraVue could not answer, so it can be built. Call this whenever a user asks for something outside the current tools' coverage (rental metrics, Airbnb modeling, valuations, move-vs-stay, non-US, anything else), then tell the user their request was captured. Keep description to the capability needed — no names, emails, or other personal details.

category: rental_metrics | str_airbnb | valuation | move_vs_stay | data_coverage | other
NameRequiredDescriptionDefault
categoryNoOne of: rental_metrics, str_airbnb, valuation, move_vs_stay, data_coverage, other.other
descriptionYesWhat the user asked for that TerraVue could not do, in one or two sentences. The capability only — never names, emails, addresses or other personal details.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations show readOnlyHint=false and idempotentHint=false, consistent with a write that appends a new request each time — no contradiction. The description adds genuine behavioral context beyond annotations: the PII prohibition ('no names, emails, or other personal details') and the user-facing confirmation step. It does not discuss deduplication or what happens to the captured request downstream, so it stops short of a 5.

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?

Front-loaded with the purpose, then the trigger, then the constraint, then the follow-up action. Efficient prose, though the enumerated category list is duplicated verbatim in the schema and could be trimmed.

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 a simple two-parameter intake tool with no output schema, the description covers the trigger, the scoping constraint, the privacy rule, and the required user-facing message. Nothing an agent needs to call it correctly is missing.

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 both `category` and `description` are already documented in the schema. The description largely echoes that content (the category list and the PII rule appear in both places), adding little new parameter meaning beyond the schema.

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 and resource: record an unanswerable question so the capability can be built. An agent can immediately distinguish this fallback/escalation tool from siblings like affordability, buy_vs_rent, and analyze_address, which are actual analysis tools.

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

Usage Guidelines5/5

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

Gives an explicit trigger — 'Call this whenever a user asks for something outside the current tools' coverage' — and enumerates concrete gap categories (rental metrics, Airbnb modeling, valuations, move-vs-stay, non-US). It also specifies the required follow-up action ('tell the user their request was captured'), removing ambiguity about post-call behavior.

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. 6 tool updates
    • Changedaffordability12 fields changed
      • addedInput schema / properties / address / description
        Added value: +"Full US street address, or a bare 5-digit ZIP. Pass it whenever it is known: it grounds property tax, insurance and the appreciation forecast in that ZIP's real figures instead of national defaults."
      • addedInput schema / properties / annual_income / description
        Added value: +"Gross household income before tax, in whole US dollars per year, e.g. 140000."
      • addedInput schema / properties / down_payment_pct / description
        Added value: +"Down payment as a PERCENT of price: 20 means 20%. Not a fraction (not 0.20)."
      • addedInput schema / properties / fixed_rate / description
        Added value: +"Mortgage interest rate as an annual PERCENT: 6.75 means 6.75%. Not a decimal (not 0.0675)."
      • addedInput schema / properties / hoa_monthly / description
        Added value: +"HOA or condo fee in US dollars per month. 0 for most single-family homes."
      • addedInput schema / properties / home_price / description
        Added value: +"Purchase price in whole US dollars, e.g. 650000 (not 650 or 650k)."
      • addedInput schema / properties / insurance_rate / description
        Added value: +"Annual homeowners insurance as a PERCENT of home value: 0.45 means 0.45%/yr. Leave unset to use the regional default."
      • addedInput schema / properties / liquid_savings / description
        Added value: +"Cash available for down payment and closing costs, in US dollars. Supplying it adds the post-closing cash cushion and the cash-limited price check."
      • addedInput schema / properties / marginal_tax_rate / description
        Added value: +"Marginal federal income tax rate as a PERCENT: 24 means 24%. Used only to estimate after-tax take-home for the monthly-slack figure."
      • addedInput schema / properties / monthly_debts / description
        Added value: +"Recurring DEBT obligations a lender counts, in dollars per month: car payment, student loan, minimum credit-card payment. This feeds DTI. Do NOT put groceries, utilities or childcare here."
      • addedInput schema / properties / monthly_expenses / description
        Added value: +"Ordinary living costs in US dollars per month — food, utilities, childcare. Used ONLY for the 'left over each month' life check and NEVER for DTI. Keep these separate from `monthly_debts`, which is the lender-visible figure."
      • addedInput schema / properties / property_tax_rate / description
        Added value: +"Annual property tax as a PERCENT of home value: 0.55 means 0.55%/yr. Leave unset to use the ZIP's real rate when `address` is given."
    • Changedaffordable_price11 fields changed
      • addedInput schema / properties / address / description
        Added value: +"Full US street address, or a bare 5-digit ZIP. Pass it whenever it is known: it grounds property tax, insurance and the appreciation forecast in that ZIP's real figures instead of national defaults."
      • addedInput schema / properties / annual_income / description
        Added value: +"Gross household income before tax, in whole US dollars per year, e.g. 140000."
      • addedInput schema / properties / back_end_dti_pct / description
        Added value: +"Back-end DTI cap as a PERCENT: housing plus other debts, divided by gross income. The lender standard is 36. Only change it if the user names a different limit."
      • addedInput schema / properties / down_payment_pct / description
        Added value: +"Down payment as a PERCENT of price: 20 means 20%. Not a fraction (not 0.20)."
      • addedInput schema / properties / fixed_rate / description
        Added value: +"Mortgage interest rate as an annual PERCENT: 6.75 means 6.75%. Not a decimal (not 0.0675)."
      • addedInput schema / properties / front_end_dti_pct / description
        Added value: +"Front-end DTI cap as a PERCENT: housing cost divided by gross income. The lender standard is 28. Only change it if the user names a different limit."
      • addedInput schema / properties / hoa_monthly / description
        Added value: +"HOA or condo fee in US dollars per month. 0 for most single-family homes."
      • addedInput schema / properties / insurance_rate / description
        Added value: +"Annual homeowners insurance as a PERCENT of home value: 0.45 means 0.45%/yr. Leave unset to use the regional default."
      • addedInput schema / properties / liquid_savings / description
        Added value: +"Cash available for down payment and closing costs, in US dollars. Supplying it adds the post-closing cash cushion and the cash-limited price check."
      • addedInput schema / properties / monthly_debts / description
        Added value: +"Recurring DEBT obligations a lender counts, in dollars per month: car payment, student loan, minimum credit-card payment. This feeds DTI. Do NOT put groceries, utilities or childcare here."
      • addedInput schema / properties / property_tax_rate / description
        Added value: +"Annual property tax as a PERCENT of home value: 0.55 means 0.55%/yr. Leave unset to use the ZIP's real rate when `address` is given."
    • Changedanalyze_address3 fields changed
      • addedInput schema / properties / address / description
        Added value: +"Full US street address, or a bare 5-digit ZIP. Pass it whenever it is known: it grounds property tax, insurance and the appreciation forecast in that ZIP's real figures instead of national defaults."
      • addedInput schema / properties / bedrooms / description
        Added value: +"Bedroom count, used to select the matching market-rent estimate for the ZIP. Defaults to 2."
      • addedInput schema / properties / property_type / description
        Added value: +"One of: sfr (single-family), condo, townhome, multi."
    • Changedbuy_vs_rent10 fields changed
      • addedInput schema / properties / address / description
        Added value: +"Full US street address, or a bare 5-digit ZIP. Pass it whenever it is known: it grounds property tax, insurance and the appreciation forecast in that ZIP's real figures instead of national defaults."
      • addedInput schema / properties / analysis_years / description
        Added value: +"Hold period in years. Use the horizon the person actually stated — if they say 'about five years', pass 5. Only default to 30 when no horizon was given."
      • addedInput schema / properties / down_payment_pct / description
        Added value: +"Down payment as a PERCENT of price: 20 means 20%. Not a fraction (not 0.20)."
      • addedInput schema / properties / fixed_rate / description
        Added value: +"Mortgage interest rate as an annual PERCENT: 6.75 means 6.75%. Not a decimal (not 0.0675)."
      • addedInput schema / properties / hoa_monthly / description
        Added value: +"HOA or condo fee in US dollars per month. 0 for most single-family homes."
      • addedInput schema / properties / home_appreciation_rate / description
        Added value: +"Annual home appreciation as a PERCENT: 3.5 means 3.5%/yr. Prefer leaving this unset and passing `address` instead, so the ZIP's FHFA-derived forecast is used rather than a guess."
      • addedInput schema / properties / home_price / description
        Added value: +"Purchase price in whole US dollars, e.g. 650000 (not 650 or 650k)."
      • addedInput schema / properties / investment_return_rate / description
        Added value: +"Annual return the renter earns on invested cash, as a PERCENT: 9.5 means 9.5%/yr, roughly long-run equities. This assumption drives the result more than any other — drop it to about 4.5 if the alternative is savings rather than the market, or if the person sounds risk-averse, and present both runs."
      • addedInput schema / properties / monthly_rent / description
        Added value: +"What this person would pay per month, in US dollars, to rent THE SAME HOME to live in. This is an owner-occupant comparison — it is NOT rental income they would collect as a landlord."
      • addedInput schema / properties / property_tax_rate / description
        Added value: +"Annual property tax as a PERCENT of home value: 0.55 means 0.55%/yr. Leave unset to use the ZIP's real rate when `address` is given."
    • Changedcompare_areas2 fields changed
      • addedInput schema / properties / addresses / description
        Added value: +"2 to 12 US addresses or bare 5-digit ZIPs to rank side by side. TerraVue has no listing inventory and cannot discover ZIPs on its own — to scan a metro, pass that metro's ZIP codes explicitly, and the ranking covers exactly what you passed."
      • addedInput schema / properties / bedrooms / description
        Added value: +"Bedroom count, used to select the matching market-rent estimate for the ZIP. Defaults to 2."
    • Changedrequest_capability2 fields changed
      • addedInput schema / properties / category / description
        Added value: +"One of: rental_metrics, str_airbnb, valuation, move_vs_stay, data_coverage, other."
      • addedInput schema / properties / description / description
        Added value: +"What the user asked for that TerraVue could not do, in one or two sentences. The capability only — never names, emails, addresses or other personal details."
  2. 6 tool updates
    • First observedaffordability
    • First observedaffordable_price
    • First observedanalyze_address
    • First observedbuy_vs_rent
    • First observedcompare_areas
    • First observedrequest_capability

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Live real estate market data for 895 US metros. Ask your AI assistant about home prices, rental yields, investment health scores, migration trends, and affordability. Free tier covers top 50 markets (no account needed). Premium tier unlocks all 895 markets, HUD Fair Market Rents, side-by-side market comparison, and filtered market search.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides access to comprehensive US property data, including automated valuations, tax history, comparable sales, and ownership details, enabling real estate analysis and market insights.
    418 npm
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides free property and parcel intelligence using official US government data APIs, county assessor records, and live listings, with tools for hazard risk checks, affordability calculations, and parcel ranking.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides real-time access to Zillow real estate data, enabling property search, details, Zestimates, market trends, and mortgage calculations via natural language.
    3 npm
    56
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources