MCP HeartbeatTHE MCP OBSERVATORY
Public workspace

Explore

Evidence for your next connection.

Independent measurements of remote MCP servers. Every observation has a timestamp.

Read-only probes

MCP server · Code & DevOps

mtgmon Mortgage Analytics

Read-only U.S. mortgage market, lender, GSE performance, and servicing analytics.

Checks passed
15 / 22

0 failed · 7 not measured

Median response
1178 ms

Median of successful probes over 7 days

30-day uptime
Not measured

Share of countable probes over 30 days, including daily rollups. Auth challenges are excluded.

Discovered tools
14

Tool definitions returned by this server

Independent monitoring

Health & checks

Status history

Responded

The server completed its last measured handshake. This is an observation, not a guarantee.

Last checked
Check summary by test group
Test areaPassedFailedUnmeasured
ConnectionCan a client connect and discover tools?
500
Reliability & speedDoes it respond consistently and quickly?
103
Access & authenticationWhat is required to use this server?
102
Tool qualityAre the tool definitions usable by an agent?
400
Publisher identityCan the publisher be traced to its source?
402

Unmeasured means there is not enough evidence to decide. How these checks work

Inspect individual checks 22 recorded

Core

  • Pass
    Reachable

    Latest probe returned HTTP 200 in 1303 ms.

  • Pass
    Valid handshake

    protocolVersion 2025-11-25, serverInfo.name mtgmon.

  • Pass
    Lists tools

    tools/list returned 14 tools.

  • Pass
    Current protocol

    Negotiated 2025-11-25. The bar is 2025-06-18 or newer.

  • Pass
    HTTPS

    The endpoint URL is https.

Performance

  • Not measured
    Fast (p50)

    Median latency 1178 ms over 2 samples in 7 days. The bar is 1000 ms. Need at least 5 samples.

  • Not measured
    Consistent (p95)

    95th percentile 1290 ms over 2 samples in 7 days. The bar is 3000 ms. Need at least 20 samples.

  • Not measured
    Reliable (uptime)

    2 of 2 attempts returned a tool list in 30 days (100%). The bar is 99%. Need at least 30 samples.

  • Pass
    Stable tool list

    No tool was removed and no required parameter was added in the last 30 days.

Access

  • Pass
    Open access

    tools/list succeeded with no credential, and the record declares none.

  • Not measured
    Standard auth

    Auth is not required, so the OAuth metadata check does not apply.

  • Not measured
    Free tier cited

    No publisher quote has been checked.

Tools

  • Pass
    Tools described

    Every tool description is at least 20 characters.

  • Pass
    Valid input schemas

    Every inputSchema is a JSON Schema object.

  • Pass
    Parameters documented

    61 of 61 parameters have a description (100%). The bar is 80%.

  • Pass
    Safety hints

    Every tool sets readOnlyHint or destructiveHint.

Publisher

  • Pass
    Verified namespace

    Listed in the Official MCP Registry.

  • Not measured
    Website matches publisher

    This namespace is not a reverse domain, so the website comparison does not apply.

  • Pass
    Source repo linked

    A repository URL is on file.

  • Pass
    Repo owner matches

    The GitHub repository owner matches the namespace login.

  • Pass
    Recently updated

    Updated 2026-07-17T16:12:27.810184Z, within 180 days.

  • Not measured
    Open-source licence

    The GitHub licence lookup has not returned an OSI result yet.

Start using mtgmon Mortgage Analytics

Connect to this server

Choose your client, copy the configuration, then enable the server in your client’s MCP settings.

Run this command in your terminal, then restart Claude Code.

Claude Code

claude mcp add --transport http mtgmon-mortgage-analytics https://mtgmon.com/mcp

Capabilities

Tools 14

compare_lenders

Side-by-side HMDA comparison of two lender groups: yearly volume, loans, rank, and market share for both; loan type / purpose / occupancy mix; and the top states with each lender's volume and the volume multiple between them. Requires canonical keys for both lenders: call search_lenders and pass each result's exact `name`. For a single lender use get_lender_profile. Returns data.lenders, data.current_year, data.previous_year, data.yearly (both lenders per HMDA year), data.loan_type_mix, data.loan_purpose_mix, data.occupancy_mix, and data.top_state_comparison (top_n rows with lender_1_volume, lender_2_volume, multiple). Volumes are USD; shares are percent. 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, never report it as zero: retry after a few seconds only when meta.cache_status is 'miss' (warming); otherwise report the data as unavailable.

Discovered
get_dataset_status

Coverage, freshness, and build metadata for every mtgmon dataset. No arguments. Use for: "how current is the data", finding the latest available month or HMDA year before quoting figures, or diagnosing another tool's meta.available=false. Returns data.datasets, a list of {name, description, category, provider, coverage, last_updated, last_updated_label, stats, refresh} covering GSE loan performance, HMDA, market rates, SEC filings, and derived marts; and data.build {app, lake, cache_backend, cache}. Refresh cadences differ by dataset; read each row's coverage and last_updated. 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, never report it as zero: retry after a few seconds only when meta.cache_status is 'miss' (warming); otherwise report the data as unavailable.

Discovered
get_hmda_product_analytics

HMDA origination counts, reported dollar amounts, averages, and year-over-year growth for one product family, optionally for one property state or one lender, with an annual history back to 2018. Use for: HELOC, reverse-mortgage, or closed-end mortgage origination volume and growth; product mix by loan program (conventional/FHA/VA/USDA), purpose, lien, occupancy, construction method, or business purpose; state-level or lender-level product questions. Do not use for: lender rankings or market share (search_lenders / get_lender_profile) or GSE loan performance (get_loan_performance). Important: product_family defaults to 'heloc'. Use 'closed_end_mortgage' for ordinary mortgages or 'all' for every HMDA origination. Source is the frozen annual FFIEC/CFPB HMDA Snapshot LAR (one release per year, 2018 onward); state filters use the property state, not the lender's headquarters. Returns data.selected_year, data.current and data.previous (each {year, origination_count, reported_amount_count, reported_amount_sum, average_reported_amount, reported_amount_max, origination_count_yoy_pct, reported_amount_sum_yoy_pct, average_reported_amount_yoy_pct}), data.history (one such row per year), data.filters (applied filters), data.definition, and data.source_releases. Amounts are USD; YoY fields are percent; for HELOCs the amount is credit available, not the drawn balance. 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, never report it as zero: retry after a few seconds only when meta.cache_status is 'miss' (warming); otherwise report the data as unavailable.

Discovered
get_lender_profile

HMDA profile for one lender group: annual origination volume, loan counts, denial rate, national rank and market share, top states with market-share multiples, and loan type / purpose / occupancy / loan-size mix. Requires a canonical key: call search_lenders and pass the exact `name` (e.g. 'Rocket/Quicken'). Any other spelling returns meta.available=false with empty lists. Use compare_lenders for two lenders side by side. Returns data.lender_key, data.name, data.leis, data.current_year, data.previous_year, data.yearly (one row per HMDA year: originated_volume, originated_loans, purchased_volume, purchased_loans, denied_loans, applications_loans, total_funded_volume, avg_loan_size, denial_rate_pct, denial_rate_count_pct, rank, national_volume, market_share_pct), data.top_states {state, volume, loans, previous_volume, previous_loans} and data.state_market_multiples {state, lender_share_pct, market_share_pct, multiple, ...} (top_n rows each), data.loan_type_mix, data.loan_purpose_mix, data.occupancy_mix ({code, label, loans, volume}), and data.loan_size_histogram. Volumes are USD; shares and rates are percent. 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, never report it as zero: retry after a few seconds only when meta.cache_status is 'miss' (warming); otherwise report the data as unavailable.

Discovered
get_loan_performance

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, never report it as zero: retry after a few seconds only when meta.cache_status is 'miss' (warming); otherwise report the data as unavailable.

Discovered
get_market_snapshot

Latest U.S. mortgage rates, TBA par coupons, Treasury and SOFR benchmarks, and mtgmon's fitted MBS basis in one call. No arguments. Use for: "what are mortgage rates today", 30y vs 15y, current coupon, 2y/10y Treasury, SOFR swap levels, whether MBS spreads are rich or cheap versus the model. Do not use for: rate history (not exposed here) or GSE loan performance (get_loan_performance). Returns data.rates, a list of up to 9 points {series, date, value, previous_value, change} for series MORTGAGE30US and MORTGAGE15US (Freddie Mac PMMS, weekly), tba_par_coupon_30y and tba_par_coupon_15y, 2Y and 10Y Treasury, and SOFR O/N, SOFR 2Y, SOFR 10Y; plus data.mbs_basis {model_version, latest_date, latest_basis_bps, latest_fair_bps, latest_gap_bps, latest_gap_zscore, r2_level_full_sample, ec_half_life_days, ...}. Rates are percent, basis is basis points. Series have different observation dates; quote each point's own date. 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, never report it as zero: retry after a few seconds only when meta.cache_status is 'miss' (warming); otherwise report the data as unavailable.

Discovered
get_sec_filing

Full detail for one SEC filing: metadata and EDGAR link, mtgmon's machine-generated summary, which tracked mortgage entities the filing concerns and in what role, named people with titles and compensation, extracted financial facts, and ownership rows. Get the filing_id from search_sec_filings first. Returns data.filing {filing_id, accession_number, filer_cik, form, filing_date, company_name, description, canonical_summary, summary_status, summary_model, edgar_url, ...}, data.associations [{display_name, ticker (current symbol), retired_tickers, cik, relationship_role, summary, link_status, ...}], data.people [{name, title, compensation, note}], data.financials [{metric, value, unit, period}], and data.ownership. Lists are previews; use list_sec_records and its next_cursor to retrieve all metadata. Verify summaries against the linked filing before relying on them. 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, never report it as zero: retry after a few seconds only when meta.cache_status is 'miss' (warming); otherwise report the data as unavailable.

Discovered
get_sec_profile

Return a firm's, person's or facility's identity and record counts. Use list_sec_records for all records. 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, never report it as zero: retry after a few seconds only when meta.cache_status is 'miss' (warming); otherwise report the data as unavailable.

Discovered
get_sec_record_evidence

Return a page of exact source quotes, document URLs and source locations for a record. 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, never report it as zero: retry after a few seconds only when meta.cache_status is 'miss' (warming); otherwise report the data as unavailable.

Discovered
get_servicer_analytics

Agency (Fannie Mae / Freddie Mac) servicer analytics in one of three modes. - mode='scorecard': largest servicers ranked by disclosed origination UPB for the current and previous year with average FICO and LTV. Returns data.servicers (top_n rows of {rank, name, volume, previous_volume, avg_fico, avg_ltv}), data.current_year, data.previous_year. - mode='performance': monthly CPR and 90+ day delinquency per top servicer for one origination vintage against the whole-book benchmark. Returns data.servicers {name: {cpr: [{date, value}], dq90: [...]}} downsampled to max_points, data.book {cpr, dq90}, data.vintage, data.latest_date. - mode='transfers': where one originator's Fannie Mae loans are serviced today and how servicing moved from the seller. Requires `lender` (canonical key from search_lenders). Returns data.seller_name, data.summary {loan_count, origination_upb, loans_with_transfer, pct_loans_with_transfer, total_transfer_events, ...}, data.latest_active_servicers {servicer, loans, upb, upb_share_pct}, data.top_routes and data.top_named_routes {from_servicer, to_servicer, events, event_share_pct}, data.first_to_latest {first_servicer, latest_servicer, loans, original_upb} (top_n rows each). Use for: "largest servicers", "which servicer prepays fastest or has the worst DQ for the 2021 vintage", "who services Rocket's loans now". Do not use for: HMDA origination volume (get_lender_profile) or book-wide delinquency (get_loan_performance topic='delinquency'). Coverage is disclosed agency loans matched by seller/servicer name, not any servicer's full portfolio. UPB and volume are USD; CPR and DQ90 are percent. 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, never report it as zero: retry after a few seconds only when meta.cache_status is 'miss' (warming); otherwise report the data as unavailable.

Discovered
list_sec_records

Return a page of metadata for exactly one filing or profile. Kinds: person, organization, fact, relationship, facility, event, ownership. Continue until next_cursor is null. A stale-generation error requires restarting the query. 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, never report it as zero: retry after a few seconds only when meta.cache_status is 'miss' (warming); otherwise report the data as unavailable.

Discovered
search_lenders

Find HMDA lenders and resolve names to canonical lender keys. Call this before any other lender tool. Use for: turning a company name ('Rocket', 'UWM', 'Wells Fargo', 'PennyMac') into its canonical key, ranking lenders by origination volume, or listing lenders by charter type or headquarters state. Then pass a result's exact `name` (e.g. 'Rocket/Quicken') as `lender` to get_lender_profile, get_hmda_product_analytics, or get_servicer_analytics mode='transfers', or as lender_a / lender_b to compare_lenders. Legal names such as 'Rocket Mortgage, LLC' are not keys and return meta.available=false downstream. Returns data.results (at most `limit` rows of {name, leis, charter_type, hq_state, recent_year, recent_volume, total_loans, volume_rank, subsidiary_count}), data.matched_count, and data.total_count. recent_volume is USD originations in recent_year (the latest HMDA year). Keys are holding-company or originator groups, so subsidiaries and LEIs roll up into one key. 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, never report it as zero: retry after a few seconds only when meta.cache_status is 'miss' (warming); otherwise report the data as unavailable.

Discovered
search_sec_filings

Search SEC EDGAR filings of mortgage-related public companies (lenders, servicers, mortgage REITs, insurers, GSEs) that mtgmon has summarized. Newest filing date first. Use for: finding a company's 10-K, 10-Q, 8-K, or other filings by ticker, CIK, form type, keyword, or date window, and getting the filing_id to pass to get_sec_filing. Do not use for: full filing text (only summaries are stored) or companies outside the mortgage sector. Returns data.filings (at most `limit` rows of {filing_id, accession_number, filer_cik, form, filing_date, company_name, description, summary_status, summary_excerpt, summary_created_at, edgar_url}) and data.next_cursor (pass back as `cursor` for the next page; null when exhausted; meta.truncated is true when more pages exist). Only filings whose summary processing finished are listed; summaries are machine-generated and should be checked against edgar_url. 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, never report it as zero: retry after a few seconds only when meta.cache_status is 'miss' (warming); otherwise report the data as unavailable.

Discovered
search_sec_profiles

Return resolved firms, people or facilities. Continue with data.next_cursor; names alone are not identity proof. 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, never report it as zero: retry after a few seconds only when meta.cache_status is 'miss' (warming); otherwise report the data as unavailable.

Discovered

Recent measurements

Probe history

View status
Latest stored probes. Raw probe rows are kept for 14 days.
CheckedResultResponseTools
Connected1303 ms14
Connected1052 ms14