Skip to main content
Glama

mtgmon Mortgage Analytics

GSE loan performance

get_loan_performance
Read-onlyIdempotent

Fannie Mae and Freddie Mac single-family loan-performance analytics for exactly one topic.

Topics:

  • credit: monthly origination FICO and LTV (origination-UPB weighted). data.series {fico, ltv} and data.latest.

  • prepayment: monthly CPR and SMM (UPB weighted).

  • delinquency: monthly 30/60/90+ day delinquency rates (UPB-weighted stock rates).

  • loss: monthly loss severity (percent) and net loss (USD billions), plus data.latest_waterfall.

  • vintage: cumulative default-rate curves by vintage year over loan age (data.series = [{vintage, points}]).

  • transitions: loan-level monthly flows between Current/DQ30/DQ60/DQ90+/Modified/Liquidated (data.flows, top_n rows of {from, to, loans, upb, prob}) and data.history {cure_history, roll_30_60_history, roll_60_90_history}.

  • modification: outcomes at 6/12/18/24/36 months after a first 90+ DPD event, Modified vs NotModified arms (data.horizons, data.outcome_states, data.cohort_size, data.pooled, data.recent_vintages).

  • rate_sensitivity: modelled CPR under rate shocks (data.scenario = [{rate_shock_bps, predicted_cpr}], data.model {current_rate, current_cpr, slope}).

  • lock_in: active book by WAC vs today's mortgage rate: data.summary {total_upb, loan_count, wac_weighted, pct_below_mtg, pct_200bps_otm, pct_100bps_otm, pct_in_money} and data.largest_wac_age_cells {wac, age_band, upb}.

Use for: agency credit quality, prepayment speeds, delinquency, roll and cure rates, modification outcomes, losses, the lock-in effect. Do not use for: originator volume or market share (search_lenders / get_lender_profile), today's rates (get_market_snapshot), per-servicer performance (get_servicer_analytics).

Time-series topics return data.series {metric: [{date, value}, ...]} downsampled to max_points, plus data.latest. Scope is public GSE loan-level disclosures, not the whole U.S. market; meta.as_of is the latest reporting month.

Behavior: read-only, no auth or API key, no PII, idempotent and safe to retry. The public endpoint https://mtgmon.com/mcp allows about 60 requests/min and 250 tool calls/day per client IP. Result shape is {data, meta}; meta carries available, as_of, source_scope, weighting, units, cache_status, caveats, and truncated. If meta.available is false the data is unavailable or the cache is still warming (retry after a few seconds); never report it as zero.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
gseNo'all' = Fannie Mae + Freddie Mac combined (default), 'fnma' = Fannie Mae only, 'fhlmc' = Freddie Mac only.all
top_nNoMaximum ranked rows, 1-50 (default 20): transition flows, modification vintages, or lock-in WAC/age cells. Ignored by other topics.
topicYesExactly one analytics topic: credit, prepayment, delinquency, loss (monthly time series); vintage (curves by vintage year); transitions (loan-level state flows); modification (post-90DPD outcomes); rate_sensitivity (CPR under rate shocks); lock_in (book by WAC vs today's rate).
to_dateNoLatest month to include, ISO date YYYY-MM-DD; must be on or after from_date. Default: latest available month.
from_dateNoEarliest month to include, ISO date YYYY-MM-DD. Applies to credit, prepayment, delinquency, loss, and transitions history. Default: full available history.
max_pointsNoMaximum points per time series after uniform downsampling, 1-120 (default 60). Use 120 for the finest monthly detail. Applies to time-series, vintage, and transitions topics.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataNo
metaYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • addedInput schema / properties / from_date / description
      Added value: +"Earliest month to include, ISO date YYYY-MM-DD. Applies to credit, prepayment, delinquency, loss, and transitions history. Default: full available history."
    • addedInput schema / properties / gse / description
      Added value: +"'all' = Fannie Mae + Freddie Mac combined (default), 'fnma' = Fannie Mae only, 'fhlmc' = Freddie Mac only."
    • addedInput schema / properties / max_points / description
      Added value: +"Maximum points per time series after uniform downsampling, 1-120 (default 60). Use 120 for the finest monthly detail. Applies to time-series, vintage, and transitions topics."
    • addedInput schema / properties / to_date / description
      Added value: +"Latest month to include, ISO date YYYY-MM-DD; must be on or after from_date. Default: latest available month."
    • addedInput schema / properties / top_n / description
      Added value: +"Maximum ranked rows, 1-50 (default 20): transition flows, modification vintages, or lock-in WAC/age cells. Ignored by other topics."
    • addedInput schema / properties / topic / description
      Added value: +"Exactly one analytics topic: credit, prepayment, delinquency, loss (monthly time series); vintage (curves by vintage year); transitions (loan-level state flows); modification (post-90DPD outcomes); rate_sensitivity (CPR under rate shocks); lock_in (book by WAC vs today's rate)."
  2. First observed

TDQS

A5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, but the description adds substantial non-obvious behavior: no auth/PII, public endpoint rate limits (60 req/min, 250 calls/day), the result shape {data, meta}, meta field semantics (available, as_of, source_scope, weighting, units, cache_status, caveats, truncated), and critical guidance on handling meta.available=false (retry, never report as zero). This goes well beyond the annotations and is essential for correct invocation.

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

Conciseness5/5

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

Despite its length, the description is tightly structured: a one-line purpose, a bulleted list of nine topics each with its data payload, a compact use/do-not-use section, and a concise behavior paragraph. Every sentence adds unique value—rate limits, meta handling, and cache-warming are all critical and not stated elsewhere. There is no fluff or repetition; it earns its length.

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?

The tool is complex (nine topics, six parameters, one required) and the description fully equips an agent to call it correctly. It covers all topics and their data shapes, parameter scoping, behavioral constraints (read-only, rate limits, retry logic), result meta semantics, and how to handle unavailable data. An output schema exists (indicated by 'Has output schema: true'), so return-value details are already structured; the description complements rather than duplicates it. Nothing essential is missing.

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

Parameters5/5

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

Schema coverage is 100% with each parameter individually described (e.g., gse enum with defaults, from_date/to_date ISO dates, top_n and max_points with ranges). The description adds cross-cutting meaning: which parameters apply to which topics (from_date applies to credit/prepayment/delinquency/loss/transitions history; top_n applies to transitions/modification/lock_in; max_points applies to time-series/vintage/transitions). It also clarifies topic-specific output shapes (data.series, data.latest, data.flows, etc.), which the schema does not cover. This enriches beyond the structured fields.

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

Purpose5/5

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

The description opens with a precise statement: 'Fannie Mae and Freddie Mac single-family loan-performance analytics for exactly one topic.' It then enumerates nine distinct topics, each with its own data shape, and explicitly names sibling tools (search_lenders, get_lender_profile, get_market_snapshot, get_servicer_analytics) to say what it is not. An agent can immediately understand the resource, scope, and how it differs from alternatives.

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?

It provides an explicit 'Use for' list (agency credit quality, prepayment speeds, delinquency, roll and cure rates, modification outcomes, losses, lock-in effect) and a 'Do not use for' list that names the exact sibling tools to route to instead (originator volume -> search_lenders/get_lender_profile, today's rates -> get_market_snapshot, per-servicer -> get_servicer_analytics). This leaves no ambiguity about when to select this tool.

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