Skip to main content
Glama

FreeRateUpdate Mortgage & Home Equity Shopping

Lender HMDA figures

get_lender_figures
Read-onlyIdempotent

One lender's published HMDA figures, by name: originations, denials, approval rate, rate spread, closing costs and product mix for the latest reported year, from the same FFIEC source the lender's FreeRateUpdate page is built from. A name that matches more than one published page returns the matches and no figures rather than a guess, unless one display name matches the query exactly, which wins. A query of digits is read as a company NMLS. reporting_company names the legal entity that FILED the figures: a brand page shares its parent's NMLS, so the numbers are the company's whole filing and never the brand's own. answered_by names which source answered. live_measure is a fresh reading of the FFIEC source the page's snapshot is built from, so it can be newer than the page. page_snapshot is the figures the published page itself prints, served from its own snapshot, for a lender too large for one live read: that answer is NOT a fresh reading and its note says so. Either way the block carries the source it came from. A refusal is named (no_match, ambiguous, no_hmda_block), never an empty object, so "no figures" is never read as "no loans". FRU never publishes which lender has the best rate.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "q": "<q>"
    },
    "name": "get_lender_figures"
  }
}

Input Schema

NameRequiredDescriptionDefault
qYesLender name, DBA alias, bank-name substring, or the company NMLS
stateNoOptional 2-letter state; matches the states the page shows (currently none, so this narrows to no rows until fru-com turns its licensing projection on)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, yet the description adds substantial context on its own: answered_by attribution, the live_measure vs page_snapshot distinction with an explicit warning that the snapshot is NOT a fresh reading, and named refusals (no_match, ambiguous, no_hmda_block) that prevent 'no figures' being misread as 'no loans'. It stops short of describing pagination or result ordering, but the behavioral disclosure is well beyond 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?

The first sentence front-loads the resource and covered metrics, and each subsequent sentence carries a behavioral rule rather than filler. Some sentences are long and parenthetical (reporting_company, page_snapshot), and the closing note about FRU never publishing 'best rate' is only marginally load-bearing, but there is no redundant restatement.

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 carries return-shape duty and does so: it explains the answer block fields (answered_by, live_measure, page_snapshot, note) and the refusal vocabulary, so an agent knows what a success and a failure look like. Combined with full schema coverage on the two inputs, nothing essential for correct invocation 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 a 3 is the floor, but the description genuinely adds meaning the schema does not: a digits-only query is interpreted as a company NMLS, and an exact display-name match takes precedence over other partial matches. It contributes nothing about the state parameter, which is left entirely to its schema description (including the note that it currently narrows to zero rows).

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 opening clause states a specific verb-and-resource pair — one lender's published HMDA figures, enumerated as originations, denials, approval rate, rate spread, closing costs and product mix — which separates it from get_lender_sec_figures and get_lender_score by data domain. It never names those siblings outright, so differentiation is inferable rather than explicit.

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 content scope and sharpened by rules on query forms (digits read as NMLS, exact display-name match wins, ambiguity returns matches rather than a guess). However, there is no explicit statement of when to reach for this tool over get_lender_score or get_lender_sec_figures, and the optional state parameter is not mentioned at all in the description.

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.

Resources