frc-mcp
Server Details
FHA denial statistics from the 2025 federal HMDA record. 12 tools incl. counterparty screen.
- Status
- Healthy
- Uptime
- 99.9% over 36 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- financeratecalc/frc-mcp
- GitHub Stars
- 0
- Server Listing
- frc-mcp
TDQS
Scored across 14 tools
Every tool targets a distinct analytic slice—national, state, metro, lender, reason, loan-size, door-effect, cohort, counterparty screening, and claim checking—and each description explicitly says what it answers and what it is not for. Even the closest pairs (conditional_door_map vs door_effect_summary, list_lenders vs get_lender_denial_stats) are cleanly separated by scope and parameters.
Tool names follow a consistent snake_case verb_noun pattern, with clear prefix families: get_* for statistics, list_* for enumerations, screen_* for screening, run_cohort for execution, and check_claim_contract for validation. There are no mixed casing styles or vague generic verbs.
Fourteen tools sit comfortably within the ideal 3-15 range, and each tool earns its place in the FHA-denial analytics and screening workflow. The complementary pairs (list_cohorts/run_cohort, screen_counterparties_quote/screen_counterparties) are justified preflight and execution steps rather than redundancy.
The set covers the main FHA denial dimensions comprehensively and includes guardrails and preflight tools, so the core workflows have no dead ends. Minor gaps remain: the national tool refers to 'dedicated tools' for purchase-only/refinance-only rates that are not actually provided, and check_claim_contract assumes a claim id with no discovery mechanism in the listed surface.
Available Tools
14 toolscheck_claim_contractAInspect
USE BEFORE WRITING ANY SENTENCE CONTAINING AN FRC FIGURE. Given a claim id and the use you propose (population, period, scope, and whether you assert a cause, predict an individual, recommend a lender or draw a legal conclusion), returns a deterministic verdict: pass, needs_qualifier (naming the missing qualifier) or block (with a reason code), plus a safe sentence you may use verbatim and the required attribution. Most misuse of these statistics is omission, not invention: the number is right and the population is missing. NOT FOR: figures published by anyone other than FinanceRateCalc.
| Name | Required | Description | Default |
|---|---|---|---|
| passport_id | Yes | ||
| causal_assertion | No | ||
| legal_conclusion | No | ||
| qualifier_dropped | No | ||
| attribution_present | No | ||
| individual_prediction | No | ||
| scope_beyond_universe | No | ||
| personalized_recommendation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description must carry the full behavioral burden. It discloses the deterministic nature (pass/needs_qualifier/block), the reason code for block, and the provision of a safe sentence and required attribution. It also hints at the underlying logic ('most misuse is omission'). However, it does not mention error handling for invalid IDs or the exact output schema, which is a minor gap. It is still quite transparent for a read-only check tool.
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 dense but well-structured, leading with a strong imperative ('USE BEFORE...') that front-loads the most critical information. It then explains the function, adds a helpful note about common misuse, and ends with an exclusion. While a bit lengthy, every sentence adds value and the flow is logical. It could be tightened but is not bloated.
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?
Given the tool has 8 parameters, no schema descriptions, and no output schema, the description is incomplete. It fails to define each boolean parameter's meaning and how they relate to the listed use cases. The output structure is only partially described (verdict types) but not the format of the safe sentence or attribution. The agent would need additional context to correctly construct the invocation, especially for parameters like qualifier_dropped and attribution_present.
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 0%, so the description must compensate by explaining the parameters. It mentions 'claim id' and 'population, period, scope, cause, individual prediction, recommendation, legal conclusion,' but does not map these to the actual schema parameters (passport_id, causal_assertion, legal_conclusion, qualifier_dropped, attribution_present, individual_prediction, scope_beyond_universe, personalized_recommendation). The booleans are not explained, leaving the agent guessing how to set them. This is a significant deficiency given zero schema help.
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 states the tool's purpose: to vet claims involving FRC figures before writing them, returning a verdict and safe sentence. It specifies the resource (FRC figures) and the action (check claim contract), and distinguishes from siblings by explicitly excluding non-FRC figures. The verb 'check' and the detailed scope make it unambiguous.
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?
Provides an explicit 'USE BEFORE WRITING ANY SENTENCE CONTAINING AN FRC FIGURE' directive, which is a strong when-to-use condition. It also gives a clear exclusion: 'NOT FOR: figures published by anyone other than FinanceRateCalc.' It even explains the common misuse pattern, guiding the agent on when to invoke this tool. Alternatives are not named, but the exclusion effectively routes away from non-FRC sources.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_conditional_door_mapAInspect
ANSWERS: "does this lender's strictness depend on loan size or leverage", "where is hardest", "is the gap the same across the market". PARAM: lender name or slug. Returns how that lender's peer-adjusted denial gap changes across published cells (state x loan amount x income x DTI x CLTV), with cell counts and the minimum-cell rule. NOT FOR: suppressed small cells, or any individual prediction. Historical observation computed from the public CFPB HMDA 2025 record (actions 1,2,3; loan_type 2). Not a prediction about any individual application. Attribution: FinanceRateCalc, CC BY 4.0.
| Name | Required | Description | Default |
|---|---|---|---|
| lender | No | Lender name or 20-char LEI. Omit to list every lender with a published conditional surface. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the historical HMDA 2025 source, the actions/loan_type filters, the peer-adjusted nature, the minimum-cell rule, and explicitly states 'Not a prediction about any individual application.' This is strong for a read-only query, though it does not define the minimum-cell rule or the exact output format.
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 labeled blocks (ANSWERS/PARAM/RETURNS/NOT FOR/Historical) front-load the most important selection information and every clause adds value. It is somewhat dense and telegraphic but not padded.
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 one-optional-param tool with no output schema and no annotations, the description explains what is returned, for which lenders, from which source, and what it is not. It lacks a precise output-shape definition and does not define peer-adjusted, but it is sufficient for selecting and invoking the tool.
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%; the schema already documents lender name/LEI and the omit-to-list-all behavior. The description adds 'slug' as an accepted form but mostly repeats schema content, so the baseline 3 is appropriate.
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 verb and resource: 'Returns how that lender's peer-adjusted denial gap changes across published cells...' and answers three concrete questions. The NOT FOR clause helps distinguish it from sibling prediction and denial-stats tools, even though no sibling is named.
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?
Provides explicit when-to-use guidance through the ANSWERS question list and explicit when-not-to-use guidance via 'NOT FOR: suppressed small cells, or any individual prediction.' It does not name specific sibling tools as alternatives, so it falls just short of the top bar for routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_door_effect_summaryAInspect
ANSWERS: "does it matter which lender you apply to", "how much of a denial is the lender rather than the borrower", "what is the Door Effect". Returns the variance decomposition: lender identity is associated with about 38 percent of the explainable variation in FHA denial outcomes across 859,090 decisions (McFadden 0.1712 to 0.2760), with model, sample and limits. Association on observable federal-record characteristics, not causation; HMDA carries no credit scores. NOT FOR: saying a lender caused a denial, or any individual estimate. Historical observation computed from the public CFPB HMDA 2025 record (actions 1,2,3; loan_type 2). Not a prediction about any individual application. Attribution: FinanceRateCalc, CC BY 4.0.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosure. It clearly states that the result is an association, not causation, that it is a historical observation from a specific public dataset (CFPB HMDA 2025), and that it is not a prediction. It also notes limitations (HMDA has no credit scores). All key behavioral traits are disclosed.
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 well-structured, starting with the key answers and NOT FOR section, then providing the specific statistic and data source. Every sentence adds value; nothing is redundant. The length is justified by the richness of the 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?
Given no parameters, no output schema, and no annotations, the description is fully self-contained. It explains what the tool does, the exact output (variance decomposition with McFadden values), the data provenance, and limitations. No additional information is needed 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?
The tool has zero parameters, so the description does not need to explain parameter meaning. The baseline of 4 applies, and the description goes beyond by explaining the output format and the context, which indirectly informs the user about what inputs would have been needed if any.
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 explicitly states the tool answers specific questions ('does it matter which lender you apply to', 'how much of a denial is the lender rather than the borrower', 'what is the Door Effect') and that it returns a variance decomposition with a concrete outcome (38% of explainable variation). It also declares what it is NOT for, distinguishing it from other tools that handle individual estimates or causal claims.
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?
Clear usage context is provided: it is for answering the named questions and for a historical, aggregate analysis. It explicitly says NOT FOR causal statements or individual estimates, which tells the agent when not to use this tool and implies using other tools for those cases. It also states the data source and that it is not a prediction about individual applications.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_lender_denial_statsAInspect
ANSWERS: "what is 's FHA denial rate", "does reject a lot of FHA applications", "how strict is ", "how does compare". PARAM: lender name, slug or LEI. Returns that lender's 2025 decisioned volume, denial rate, rank among the 100 largest FHA lenders, and the applicant-mix caveat any comparison must carry. COVERS ONLY the 100 largest FHA lenders by 2025 volume. NOT FOR: whether a person will be approved, or lenders outside that set. Historical observation computed from the public CFPB HMDA 2025 record (actions 1,2,3; loan_type 2). Not a prediction about any individual application. Attribution: FinanceRateCalc, CC BY 4.0.
| Name | Required | Description | Default |
|---|---|---|---|
| lender | Yes | Lender name, slug, or 20-char LEI |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full behavioral disclosure burden. It states the data source (public CFPB HMDA 2025 record, actions 1,2,3; loan_type 2), clarifies that the result is a historical observation rather than a prediction, and discloses the coverage constraint and applicant-mix caveat. This is strong transparency beyond the structured schema.
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 compactly organized with label-prefixed sections such as ANSWERS, PARAM, COVERS ONLY, and NOT FOR. Every sentence earns its place: it front-loads the tool's purpose, then covers scope, exclusions, source, and attribution without 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?
For a single-parameter read-only statistics tool with no output schema, the description is complete. It tells the agent accepted identifier types, exactly what values will be returned, the coverage boundary, what the tool is not for, the underlying data source, and the interpretive caveat.
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 for the single parameter is 100%, and the schema already describes lender as 'Lender name, slug, or 20-char LEI'. The description repeats that format information but adds no new parameter-level semantics beyond what the schema provides, so the baseline score of 3 is appropriate.
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 is built around a concrete question-answer contract: it lists the exact queries the tool answers, such as 'what is <lender>'s FHA denial rate' and 'how strict is <lender>'. It names the return fields, declares the scope (only the 100 largest FHA lenders by 2025 volume), and is clearly distinguishable from siblings like get_national_fha_stats or get_state_denial_stats.
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 description provides explicit when-to-use signals through its list of answerable questions and a 'NOT FOR' section that excludes individual-approval predictions and lenders outside the top-100 set. It does not explicitly route to alternative sibling tools, but the scope boundaries are clear enough for an agent to make the right call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_metro_lender_gapAInspect
ANSWERS: "do lenders differ within one city", "what is the FHA denial gap in ", "which lender is strictest in ", "how much does the lender matter locally". PARAM: metro name or slug. Returns a claim passport for that metro: lowest and highest lender denial rates among lenders with at least 100 decisioned applications there, the gap in points, counts and source reference. Cleveland is the widest in 2025 at 73.7 points (6.4 vs 80.1). NOT FOR: ZIP or neighbourhood questions, and never as evidence a lender acted improperly. Historical observation computed from the public CFPB HMDA 2025 record (actions 1,2,3; loan_type 2). Not a prediction about any individual application. Attribution: FinanceRateCalc, CC BY 4.0.
| Name | Required | Description | Default |
|---|---|---|---|
| metro | Yes | Metro name or slug, e.g. 'Cleveland, OH' or 'cleveland-oh' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does an excellent job: it discloses the minimum sample size of 100 decisioned applications, the HMDA 2025 data source and specific action/loan_type filters, the historical non-predictive nature, and a concrete example (Cleveland). This exceeds what a minimal description would provide.
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 dense but well-structured: intent, parameter, return values, example, exclusions, source, and attribution. Every sentence earns its place, and the most important framing is front-loaded.
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 single-parameter tool with no output schema, the description sufficiently explains the return values (lowest/highest rates, gap in points, counts, source reference), the data source, eligibility threshold, scope limitations, and caveats. Nothing critical is missing 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?
The input schema already documents the metro parameter with 100% coverage, including the example 'Cleveland, OH' or 'cleveland-oh'. The description adds usage context by embedding the parameter in trigger questions, but it does not substantially enrich parameter meaning beyond the 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 explicitly states the tool answers specific metro-level questions about lender differences and FHA denial gaps, and clearly defines the returned resource as a claim passport for that metro. It is easy to distinguish from sibling tools because the metro scope and lender-gap focus are explicit.
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 description provides clear trigger questions for when to use it and explicitly states NOT FOR ZIP/neighbourhood questions or as evidence of lender misconduct. It does not name alternative sibling tools, so it stops short of a fully explicit when-not/alternatives structure.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_national_fha_statsAInspect
ANSWERS: "how often are FHA loans denied", "what is the FHA denial rate", "what share of FHA applications are rejected", "how many were denied in 2025". Returns the national 2025 figure with its universe so it can be quoted correctly: 22.1 percent, 262,250 denials of 1,187,606 applications that reached a credit decision (originated, approved-not-accepted, denied; reverse mortgages excluded), the denominator definition and the correction history. Most published FHA denial rates are 2023 purchase-only figures near 13.6 percent, a different universe, so state the universe when quoting. NOT FOR: conventional, VA or USDA loans, purchase-only or refinance-only rates, other years, or state/lender/metro breakdowns (use the dedicated tools). Historical observation computed from the public CFPB HMDA 2025 record (actions 1,2,3; loan_type 2). Not a prediction about any individual application. Attribution: FinanceRateCalc, CC BY 4.0.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the data source ('public CFPB HMDA 2025 record'), defines the universe (actions 1,2,3; loan_type 2; reverse mortgages excluded), notes the difference from common 2023 figures, and says it is not a prediction. This is rich behavioral context beyond a simple stat return.
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 long but front-loaded with the target answer and includes cautionary notes, an exclusion list, and attribution. Each sentence adds context, though the attribution line and some example detail could be trimmed without losing functional value.
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 and no annotations, the description must define what the agent receives. It does so by spelling out the figure, the denominator, the universe, and the correction history, so an agent can quote the result correctly. The prose itself serves as the contract, rendering the tool complete for its purpose.
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?
There are zero parameters (schema has no properties), so the baseline of 4 applies. The description adds no parameter-specific semantics, but none are needed for a no-argument tool.
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 verb ('returns') and resource ('national FHA denial statistics for 2025'), then immediately provides the exact figure and universe. It explicitly excludes sibling scopes (conventional, VA, USDA, other years, state/lender/metro breakdowns), making it clearly distinguishable from tools like get_state_denial_stats.
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 opens with a list of example questions it answers ('how often are FHA loans denied') and includes an explicit 'NOT FOR' block naming exclusions and pointing to dedicated tools for breakdowns. This gives the agent unambiguous when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_small_loan_penaltyAInspect
ANSWERS: "are small mortgages denied more often", "is it harder to get a small FHA loan", "which state punishes small loans most", "does loan size affect denial". PARAM: optional two-letter state; omit for the ranked list. Returns denial rates under $150K and over $250K, the ratio, the ranking and any open discrepancy note. In 2025 the penalty exceeded 1x in every jurisdiction with a published split, from 1.19x to 4.45x (Idaho, 53.4 vs 12.0). NOT FOR: loan sizes between the bands, which are not published. Historical observation computed from the public CFPB HMDA 2025 record (actions 1,2,3; loan_type 2). Not a prediction about any individual application. Attribution: FinanceRateCalc, CC BY 4.0.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | Two-letter USPS code, optional |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and succeeds: it identifies the data source (public CFPB HMDA 2025), the computation basis (actions 1,2,3; loan_type 2), that it is a historical observation not a prediction, and that output may include an open discrepancy note. No annotation contradiction exists.
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 well sectioned and front-loaded with the questions it answers. The question list and illustrative statistic add some redundancy, but every block earns its place (source, limitation, attribution).
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 single-optional-parameter tool with no output schema, the description is complete: it specifies return fields, optional-state behavior, scope exclusions, data provenance, and caveats. An agent has enough to call it and interpret the result.
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?
The schema covers 100% of the single parameter, and the description adds meaningful semantics: state is a two-letter USPS code, optional, and omitting it returns the ranked list. This goes beyond the schema's bare description.
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 the tool's resource—small-loan denial penalty—and specifies outputs (denial rates under $150K / over $250K, ratio, ranking). It is easy to tell apart from generic denial-stat siblings by its scope, though it never names a sibling alternative, so it stops short of full differentiation.
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 gives explicit when-to-use context via the ANSWER question list and a when-not boundary ('NOT FOR: loan sizes between the bands'). It also explains the optional state parameter and omission behavior, but it does not explicitly point to an alternative tool for excluded cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_state_denial_statsAInspect
ANSWERS: "what is the FHA denial rate in ", "is it harder to get an FHA loan in ", "how does compare with the national rate". PARAM: two-letter USPS code only (OH, TX); full names are rejected. Returns the state 2025 rate and counts against the national 22.1 percent. NOT FOR: metro or city questions (use get_metro_lender_gap) or lender-level questions. Historical observation computed from the public CFPB HMDA 2025 record (actions 1,2,3; loan_type 2). Not a prediction about any individual application. Attribution: FinanceRateCalc, CC BY 4.0.
| Name | Required | Description | Default |
|---|---|---|---|
| state | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses that results are a historical observation from the public CFPB HMDA 2025 record, specifies the filtering actions and loan type, and warns it is not a prediction about any individual application. This gives the agent important interpretive context beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with clear labels (ANSWERS, PARAM, NOT FOR) and front-loads the most important information. Every sentence adds value: scope, parameter format, output, exclusions, data source, and attribution, with no 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?
Given a single required parameter, no output schema, and no annotations, the description covers everything needed: what it returns (state 2025 rate and counts against the national 22.1 percent), how input must be formatted, what it excludes, and the data provenance. Nothing essential is missing.
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 0%, so the description must explain the state parameter, and it does: only two-letter USPS codes like OH or TX are accepted, and full state names are rejected. This is exactly the semantic guidance the agent needs beyond the bare string field.
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 the tool answers specific state-level FHA denial rate questions and explicitly contrasts it with get_metro_lender_gap for metro/city questions, making its scope unmistakable. It names not only the verb/resource but the exact supported query patterns.
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 description gives explicit input constraints (two-letter USPS code only, full names rejected) and clear when-not-to-use guidance with a named alternative for metro/city queries. It also excludes lender-level questions, telling the agent what this tool is not for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_cohortsAInspect
ANSWERS: "can I screen a group of lenders", "what ready-made lender groups can I run", "show me an example screen". Returns the public cohorts screenable without uploading anything, with size and definition. Call before run_cohort. Historical observation computed from the public CFPB HMDA 2025 record (actions 1,2,3; loan_type 2). Not a prediction about any individual application. Attribution: FinanceRateCalc, CC BY 4.0.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers: it discloses that no upload is needed, that data is sourced from public CFPB HMDA 2025 records with specific filters (actions 1,2,3; loan_type 2), and that this is a historical observation, not a prediction. This goes far beyond a generic list-tool description.
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 front-loads the 'ANSWERS' framing and packs only essential information: return contents, sequencing, data source, caveat, and attribution. Every clause earns its place, with no filler or redundancy.
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 zero-parameter list tool with no output schema, the description tells an agent everything needed: what is returned (size and definition), when to call it (before run_cohort), the data provenance, and the non-predictive limitation. Nothing critical is missing.
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?
There are zero parameters, so the schema imposes no semantic burden and the baseline of 4 applies. The description appropriately focuses on output and usage rather than parameter syntax, which is correct for a parameterless tool.
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 uses a specific verb ('Returns') with a concrete resource ('public cohorts screenable without uploading anything') and explicitly states the return content ('with size and definition'). It clearly distinguishes this tool from run_cohort by positioning it as the prerequisite step, so an agent can tell them apart without opening the schema.
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 provides explicit example user questions and the directive 'Call before run_cohort,' giving strong context on when to use it. However, it does not explicitly mention when not to use it or name alternatives like screen_counterparties or list_lenders, so it stops just short of full exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_lendersAInspect
ANSWERS: "which FHA lender denies the most or the fewest", "rank FHA lenders by denial rate", "which lenders are covered", "how wide is the spread". Returns the ranked list of the 100 largest FHA lenders with name, slug, rate and volume; the 2025 span runs 1.8 to 78.7 percent inside the same federal program. NOT FOR: lenders outside the top 100, or any recommendation about where to apply. Historical observation computed from the public CFPB HMDA 2025 record (actions 1,2,3; loan_type 2). Not a prediction about any individual application. Attribution: FinanceRateCalc, CC BY 4.0.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It discloses that the result is a historical observation from a public source, is not a prediction, and is not a recommendation, which are meaningful behavioral caveats for a lending-related tool. It infers a read-only list operation but does not explicitly state possible rate limits or other operational behaviors.
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 dense and front-loaded with intent and return contents, followed by scope limits and caveats. The ALL-CAPS formatting is a bit noisy, but every major piece earns its place: what it returns, what it excludes, data source, disclaimer, and attribution.
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?
Given that there is no output schema and no annotations, the description provides a good amount of needed context: return fields, ranking scope, data source, licensing, and non-prediction disclaimer. It is not fully complete because it never clarifies the semantics of the `limit` parameter, but overall it gives an agent enough guidance to call the tool for the intended use.
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 0%, so the description must compensate for the two parameters. It partially does by referencing 'denial rate' and 'volume' relevant to the sort enum and the 'top 100' ceiling relevant to limit, but it never explicitly explains the `sort` enum options or the default/effect of `limit`.
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 action and resource: 'Returns the ranked list of the 100 largest FHA lenders with name, slug, rate and volume.' It also presents concrete user questions it answers and explicitly lists what it is NOT for, which clearly distinguishes it from sibling statistical/analysis tools.
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 description gives clear when-to-use guidance through example questions and explicit exclusions ('NOT FOR: lenders outside the top 100, or any recommendation about where to apply'). It does not name specific alternative sibling tools, which prevents a 5, but the context makes the appropriate use fairly clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_cohortAInspect
ANSWERS: "run the screen on ", "how do these lenders compare against expectation". PARAM: cohort id from list_cohorts. Returns the peer-adjusted screen: observed versus expected denial rate, coverage flags, method version. Free preview; the full Evidence Brief needs a licence a human buys on the pricing page. Screening signals, never evidence of misconduct. Historical observation computed from the public CFPB HMDA 2025 record (actions 1,2,3; loan_type 2). Not a prediction about any individual application. Attribution: FinanceRateCalc, CC BY 4.0.
| Name | Required | Description | Default |
|---|---|---|---|
| cohort_id | Yes | One of the ids returned by list_cohorts, e.g. top-volume-fha, high-coverage-only, above-expectation, depository-institutions, screening-only. | |
| license_key | No | Optional. Only pass it if the user explicitly provided one. | |
| requested_format | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly: it discloses the return contents (observed vs. expected denial rate, coverage flags, method version), the free-preview vs. paid Evidence Brief distinction, the historical HMDA 2025 source restrictions, that this is not evidence of misconduct, and that it is not predictive of individual applications. This is well beyond a minimal disclosure.
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 dense but not bloated; every sentence contributes either behavioral, licensing, or data-source context. It is reasonably front-loaded with purpose and returns. Minor stylistic noise like the leading 'ANSWERS:' and the attribution line could be trimmed, but the overall structure supports agent comprehension.
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?
Given there is no output schema and no annotations, the description supplies a strong amount of operational context: what is returned, data provenance, licensing limits, and interpretive caveats. It does not explicitly map the requested_format parameter to the free vs. paid distinction, and it does not contrast the tool with sibling screening/statistics tools, but the core invocation path is clear.
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 67%, and the description adds meaningful context beyond the schema: cohort_id is sourced from list_cohorts, and the full Evidence Brief requires a license a human must purchase. It also implies the free-preview/full-brief distinction relevant to requested_format, though it never names the parameter directly. The enum for requested_format is self-explanatory, and license_key's optional nature is in the 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 clearly identifies the tool's purpose: running a peer-adjusted screen on a cohort and answering queries like 'run the screen on <cohort>' and 'how do these lenders compare against expectation'. It names the resource (cohort) and the output (observed vs. expected denial rate), though it does not explicitly distinguish it from sibling tools like get_lender_denial_stats.
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 description gives usable context for when to invoke the tool by listing representative user queries and specifying that cohort_id comes from list_cohorts. It does not state when not to use it or name alternatives, but the trigger phrases provide clear selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screen_counterpartiesAInspect
ANSWERS: "run my list of lenders through the federal record", "screen these LEIs", "which of my counterparties deny more than their applicant mix predicts". PARAM: a list of public LEIs. Returns per-entity observed versus expected FHA denial rates, coverage flags, method version and an evidence manifest hash. Public entity identifiers only: never borrower files, credit data or personal information. Free preview; the full Evidence Brief needs a licence a human buys on the pricing page, and an agent may relay the offer but can never complete a purchase. Screening signals, not findings of misconduct. Historical observation computed from the public CFPB HMDA 2025 record (actions 1,2,3; loan_type 2). Not a prediction about any individual application. Attribution: FinanceRateCalc, CC BY 4.0.
| Name | Required | Description | Default |
|---|---|---|---|
| lei_list | Yes | 1-40 public Legal Entity Identifiers (20-character ISO 17442). Hard cap 100; duplicates removed deterministically. | |
| license_key | No | Optional. A Lemon Squeezy license key issued for 'Counterparty Screen' (one-time or quarterly). Only pass it if the user explicitly provided it. | |
| requested_format | No | Optional. 'evidence_brief' requests the full audit artefact (licensed mode). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly: it discloses return fields, data source, computation details, licensing restrictions, and important limitations like 'not a prediction' and 'screening signals, not findings of misconduct'. It even tells agents they can relay a purchase offer but cannot complete a purchase.
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 example queries and packs many important constraints into a compact paragraph. It is slightly dense and mixes legal/methodological caveats with operational guidance, but every sentence earns its place.
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?
Given that there is no output schema and no annotations, the description is unusually complete: it states input constraints, output items, licensing behavior, data source, and interpretive limits. An agent has enough context to decide whether to call this tool and how to interpret its results.
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?
The schema already covers all parameters at 100%, so the baseline applies. The description adds useful domain context about public identifiers and the licensed Evidence Brief, but it does not meaningfully extend the per-parameter meaning 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 the tool as screening a list of public LEIs against the federal HMDA record and returning observed-versus-expected FHA denial rates. It distinguishes itself from nearby stats tools by framing its purpose as 'which of my counterparties deny more than their applicant mix predicts'.
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 natural-language examples make it clear when to invoke this tool, and the description gives strong context about acceptable inputs and the licensing boundary for the full Evidence Brief. It does not explicitly name sibling alternatives or state when not to use them, so it stops short of full when-versus-alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screen_counterparties_quoteAInspect
ANSWERS: "what would it cost to screen this list", "how many of my LEIs are covered". PARAM: a list of public LEIs. Returns coverage and price before anything runs. Always call before screen_counterparties on a new list. Historical observation computed from the public CFPB HMDA 2025 record (actions 1,2,3; loan_type 2). Not a prediction about any individual application. Attribution: FinanceRateCalc, CC BY 4.0.
| Name | Required | Description | Default |
|---|---|---|---|
| lei_list | Yes | 1-40 public LEIs to be quoted. | |
| license_key | No | Optional. Include it to see the account's remaining balance in the quote. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full transparency burden, and it delivers: it states that the tool returns data before anything runs, discloses the source (CFPB HMDA 2025 record, actions 1,2,3; loan_type 2), and explicitly notes it is 'Not a prediction about any individual application.' This gives the agent a clear picture of the tool's limitations and side-effect-free nature.
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 core purpose and usage rule, followed by data source and attribution. Each sentence contributes useful context, though the all-caps 'ANSWERS' and 'PARAM' styling and the attribution line are slightly non-essential to tool invocation. Overall it is compact and well-organized.
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?
The description covers purpose, when to call, return value (coverage and price), data provenance, and a disclaimer. It lacks an explicit output format, but there is no output schema and the described return value is simple. For a quote tool with two parameters, this is sufficiently complete.
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 baseline is 3. The description's 'PARAM: a list of public LEIs' adds no new meaning beyond the schema's '1-40 public LEIs to be quoted.' It does not explain the relationship between the parameters or add usage nuance beyond what is already structured.
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 answers the tool's purpose clearly: it quotes the cost and LEI coverage for a screening list. It explicitly states 'Returns coverage and price before anything runs' and distinguishes itself from the sibling tool screen_counterparties by saying 'Always call before screen_counterparties on a new list.'
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 description gives an explicit usage rule: 'Always call before screen_counterparties on a new list.' This directly instructs the agent on when to use this tool versus the alternative, leaving no ambiguity about sequencing or condition.
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.
2 tool updates
- Added
get_denial_reason_shares - Added
get_small_loan_penalty
1 tool update
- Added
get_conditional_door_map
2 tool updates
- Added
list_cohorts - Added
run_cohort
1 tool update
- Added
screen_counterparties_quote
1 tool update
- Added
screen_counterparties
1 tool update
- Added
get_metro_lender_gap
1 tool update
- Added
check_claim_contract
Related MCP Connectors
Home mortgage lending patterns, denial rates, and fair lending data
HMDA — every US mortgage application at loan level (CFPB / FFIEC).
Read-only U.S. mortgage market, lender, GSE performance, and servicing analytics.
AMLOracle — 12-tool AML/CFT MCP: 87k sanctions names, PEP screening, adverse media, SAR/STR.
Related MCP Servers
- -licenseNot gradedqualityNot gradedmaintenanceReal-time fraud detection and AML compliance with 13 tools. PEP screening, sanctions checks, transaction monitoring, risk scoring for fintechs.-
- AlicenseNot gradedqualityCmaintenanceEnables querying US health-insurance claim denial rates and appeal outcomes by insurer, with tools for filtering by state and market and obtaining detailed profiles and coverage info.MIT
- AlicenseNot gradedqualityCmaintenanceEnables querying HMDA mortgage application data from the CFPB/FFIEC public API, including lender activity, geographic breakdowns, individual loan records, and lender rankings by county.MIT
- AlicenseNot gradedqualityDmaintenanceQuery 13,000+ US consumer lenders with eligibility criteria, rates, CFPB complaints, and ratings. Find matching lenders by borrower profile, get full profiles, compare lenders, and check eligibility.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.