mtgmon Mortgage Analytics

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

我该使用它吗

质量与安全性

B
描述质量
100%
模式完整度
81%
命名质量
98%
投毒风险
0%
权限匹配度
100%
协议合规性
100%

发现(12)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains URL to non-standard domain在 get_market_snapshot 中
  • MEDIUMTool description contains suspicious base64-like encoded string在 get_loan_performance 中
  • MEDIUMTool description contains URL to non-standard domain在 get_loan_performance 中
  • MEDIUMTool description contains URL to non-standard domain在 search_lenders 中
  • MEDIUMTool description contains URL to non-standard domain在 get_hmda_product_analytics 中
  • MEDIUMTool description contains URL to non-standard domain在 get_lender_profile 中
  • MEDIUMTool description contains URL to non-standard domain在 compare_lenders 中
  • MEDIUMTool description contains URL to non-standard domain在 get_servicer_analytics 中
  • MEDIUMTool description contains URL to non-standard domain在 get_dataset_status 中

基于对工具定义和协议合规性的自动分析。

上下文开销

~9,670token 数(工具定义)
~6.5 KB典型响应大小
对注意力有显著影响(占 128k 上下文窗口的 7.55%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "mtgmon": {
      "url": "https://mtgmon.com/mcp"
    }
  }
}

远程端点

https://mtgmon.com/mcpstreamable-http

它能做什么

工具清单

工具(10)

🟢 只读🟡 写入🔴 删除⚪ 未知
🟢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 the data is unavailable or the cache is still warming (retry after a few seconds); never report it as zero.

输入模式

{
  "type": "object",
  "properties": {},
  "title": "get_market_snapshotArguments"
}

输出模式

{
  "type": "object",
  "properties": {
    "data": {
      "additionalProperties": true,
      "title": "Data",
      "type": "object"
    },
    "meta": {
      "$ref": "#/$defs/ResultMeta"
    }
  },
  "required": [
    "meta"
  ],
  "$defs": {
    "ResultMeta": {
      "properties": {
        "available": {
          "title": "Available",
          "type": "boolean"
        },
        "as_of": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "As Of"
        },
        "source_scope": {
          "title": "Source Scope",
          "type": "string"
        },
        "weighting": {
          "title": "Weighting",
          "type": "string"
        },
        "units": {
          "additionalProperties": {
            "type": "string"
          },
          "title": "Units",
          "type": "object"
        },
        "cache_status": {
          "default": "none",
          "title": "Cache Status",
          "type": "string"
        },
        "caveats": {
          "items": {
            "type": "string"
          },
          "title": "Caveats",
          "type": "array"
        },
        "truncated": {
          "default": false,
          "title": "Truncated",
          "type": "boolean"
        },
        "message": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Message"
        },
        "upstream_paths": {
          "items": {
            "type": "string"
          },
          "title": "Upstream Paths",
          "type": "array"
        }
      },
      "required": [
        "available",
        "source_scope",
        "weighting"
      ],
      "title": "ResultMeta",
      "type": "object"
    }
  },
  "title": "ToolResult"
}
🟢get_loan_performance(topic, gse, from_date, to_date, max_points, ...)

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.

输入模式

{
  "type": "object",
  "properties": {
    "topic": {
      "description": "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).",
      "enum": [
        "credit",
        "prepayment",
        "delinquency",
        "vintage",
        "transitions",
        "modification",
        "loss",
        "rate_sensitivity",
        "lock_in"
      ],
      "title": "Topic",
      "type": "string"
    },
    "gse": {
      "default": "all",
      "description": "'all' = Fannie Mae + Freddie Mac combined (default), 'fnma' = Fannie Mae only, 'fhlmc' = Freddie Mac only.",
      "enum": [
        "all",
        "fnma",
        "fhlmc"
      ],
      "title": "Gse",
      "type": "string"
    },
    "from_date": {
      "anyOf": [
        {
          "format": "date",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Earliest month to include, ISO date YYYY-MM-DD. Applies to credit, prepayment, delinquency, loss, and transitions history. Default: full available history.",
      "title": "From Date"
    },
    "to_date": {
      "anyOf": [
        {
          "format": "date",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Latest month to include, ISO date YYYY-MM-DD; must be on or after from_date. Default: latest available month.",
      "title": "To Date"
    },
    "max_points": {
      "default": 60,
      "description": "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.",
      "maximum": 120,
      "minimum": 1,
      "title": "Max Points",
      "type": "integer"
    },
    "top_n": {
      "default": 20,
      "description": "Maximum ranked rows, 1-50 (default 20): transition flows, modification vintages, or lock-in WAC/age cells. Ignored by other topics.",
      "maximum": 50,
      "minimum": 1,
      "title": "Top N",
      "type": "integer"
    }
  },
  "required": [
    "topic"
  ],
  "title": "get_loan_performanceArguments"
}

输出模式

{
  "type": "object",
  "properties": {
    "data": {
      "additionalProperties": true,
      "title": "Data",
      "type": "object"
    },
    "meta": {
      "$ref": "#/$defs/ResultMeta"
    }
  },
  "required": [
    "meta"
  ],
  "$defs": {
    "ResultMeta": {
      "properties": {
        "available": {
          "title": "Available",
          "type": "boolean"
        },
        "as_of": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "As Of"
        },
        "source_scope": {
          "title": "Source Scope",
          "type": "string"
        },
        "weighting": {
          "title": "Weighting",
          "type": "string"
        },
        "units": {
          "additionalProperties": {
            "type": "string"
          },
          "title": "Units",
          "type": "object"
        },
        "cache_status": {
          "default": "none",
          "title": "Cache Status",
          "type": "string"
        },
        "caveats": {
          "items": {
            "type": "string"
          },
          "title": "Caveats",
          "type": "array"
        },
        "truncated": {
          "default": false,
          "title": "Truncated",
          "type": "boolean"
        },
        "message": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Message"
        },
        "upstream_paths": {
          "items": {
            "type": "string"
          },
          "title": "Upstream Paths",
          "type": "array"
        }
      },
      "required": [
        "available",
        "source_scope",
        "weighting"
      ],
      "title": "ResultMeta",
      "type": "object"
    }
  },
  "title": "ToolResult"
}
🟢search_lenders(query, charter, state, min_volume, sort, ...)

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 the data is unavailable or the cache is still warming (retry after a few seconds); never report it as zero.

输入模式

{
  "type": "object",
  "properties": {
    "query": {
      "default": "",
      "description": "Case-insensitive substring of the lender name, e.g. 'rocket', 'united wholesale', 'wells'. Empty (default) returns the top lenders in sort order.",
      "maxLength": 120,
      "title": "Query",
      "type": "string"
    },
    "charter": {
      "default": "",
      "description": "Filter by charter type exactly as shown in results' charter_type, e.g. 'Bank' or 'Independent Mortgage Company'. Empty (default) = all charter types.",
      "maxLength": 80,
      "title": "Charter",
      "type": "string"
    },
    "state": {
      "default": "",
      "description": "Two-letter USPS code of the lender's headquarters state, e.g. 'MI'. Empty (default) = all states.",
      "maxLength": 2,
      "title": "State",
      "type": "string"
    },
    "min_volume": {
      "default": 0,
      "description": "Minimum recent-year origination volume in USD, e.g. 1000000000 for $1B+. Default 0 (no floor).",
      "minimum": 0,
      "title": "Min Volume",
      "type": "number"
    },
    "sort": {
      "default": "volume_desc",
      "description": "Result order: volume_desc (default, largest recent-year volume first), volume_asc, name_asc, name_desc, loans_desc (most loans first), rank_asc (best volume rank first).",
      "enum": [
        "volume_desc",
        "volume_asc",
        "name_asc",
        "name_desc",
        "loans_desc",
        "rank_asc"
      ],
      "title": "Sort",
      "type": "string"
    },
    "limit": {
      "default": 10,
      "description": "Maximum results, 1-25 (default 10).",
      "maximum": 25,
      "minimum": 1,
      "title": "Limit",
      "type": "integer"
    }
  },
  "title": "search_lendersArguments"
}

输出模式

{
  "type": "object",
  "properties": {
    "data": {
      "additionalProperties": true,
      "title": "Data",
      "type": "object"
    },
    "meta": {
      "$ref": "#/$defs/ResultMeta"
    }
  },
  "required": [
    "meta"
  ],
  "$defs": {
    "ResultMeta": {
      "properties": {
        "available": {
          "title": "Available",
          "type": "boolean"
        },
        "as_of": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "As Of"
        },
        "source_scope": {
          "title": "Source Scope",
          "type": "string"
        },
        "weighting": {
          "title": "Weighting",
          "type": "string"
        },
        "units": {
          "additionalProperties": {
            "type": "string"
          },
          "title": "Units",
          "type": "object"
        },
        "cache_status": {
          "default": "none",
          "title": "Cache Status",
          "type": "string"
        },
        "caveats": {
          "items": {
            "type": "string"
          },
          "title": "Caveats",
          "type": "array"
        },
        "truncated": {
          "default": false,
          "title": "Truncated",
          "type": "boolean"
        },
        "message": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Message"
        },
        "upstream_paths": {
          "items": {
            "type": "string"
          },
          "title": "Upstream Paths",
          "type": "array"
        }
      },
      "required": [
        "available",
        "source_scope",
        "weighting"
      ],
      "title": "ResultMeta",
      "type": "object"
    }
  },
  "title": "ToolResult"
}
🟢get_hmda_product_analytics(year, state, lender, product_family, credit_structure, ...)

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 the data is unavailable or the cache is still warming (retry after a few seconds); never report it as zero.

输入模式

{
  "type": "object",
  "properties": {
    "year": {
      "anyOf": [
        {
          "maximum": 2100,
          "minimum": 2018,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "HMDA activity year, 2018 or later. Default: latest published Snapshot year (see data.selected_year).",
      "title": "Year"
    },
    "state": {
      "default": "",
      "description": "Two-letter USPS code of the property state, e.g. 'TX' (not the lender HQ). Empty (default) = nationwide.",
      "maxLength": 2,
      "title": "State",
      "type": "string"
    },
    "lender": {
      "anyOf": [
        {
          "maxLength": 160,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Canonical HMDA lender key: the exact `name` value from a search_lenders result, e.g. 'Rocket/Quicken' or 'United Wholesale Mortgage'. Legal names such as 'Rocket Mortgage, LLC' do not match and return meta.available=false. Default: all lenders.",
      "title": "Lender"
    },
    "product_family": {
      "default": "heloc",
      "description": "'heloc' (DEFAULT: open-end lines of credit that are not reverse mortgages), 'closed_end_mortgage' (ordinary first and second mortgages), 'reverse_mortgage', 'unclassified_or_exempt', or 'all' (every HMDA origination). Set this explicitly; the default is not the whole market.",
      "enum": [
        "all",
        "heloc",
        "reverse_mortgage",
        "closed_end_mortgage",
        "unclassified_or_exempt"
      ],
      "title": "Product Family",
      "type": "string"
    },
    "credit_structure": {
      "default": "all",
      "description": "'all' (default), 'open_end', 'closed_end', or 'exempt_unknown'. Usually leave 'all'; product_family already implies it.",
      "enum": [
        "all",
        "open_end",
        "closed_end",
        "exempt_unknown"
      ],
      "title": "Credit Structure",
      "type": "string"
    },
    "reverse_mortgage_status": {
      "default": "all",
      "description": "'all' (default), 'reverse', 'not_reverse', or 'exempt_unknown'. Usually leave 'all'; product_family already implies it.",
      "enum": [
        "all",
        "reverse",
        "not_reverse",
        "exempt_unknown"
      ],
      "title": "Reverse Mortgage Status",
      "type": "string"
    },
    "loan_program": {
      "default": "all",
      "description": "'all' (default), 'conventional', 'fha', 'va', 'usda_rhs', or 'unknown'.",
      "enum": [
        "all",
        "conventional",
        "fha",
        "va",
        "usda_rhs",
        "unknown"
      ],
      "title": "Loan Program",
      "type": "string"
    },
    "loan_purpose": {
      "default": "all",
      "description": "'all' (default), 'purchase', 'home_improvement', 'refinance' (rate/term), 'cash_out_refinance', 'other', 'not_applicable', or 'unknown'.",
      "enum": [
        "all",
        "purchase",
        "home_improvement",
        "refinance",
        "cash_out_refinance",
        "other",
        "not_applicable",
        "unknown"
      ],
      "title": "Loan Purpose",
      "type": "string"
    },
    "lien_position": {
      "default": "all",
      "description": "'all' (default), 'first', 'subordinate', 'not_secured', 'not_applicable', or 'unknown'.",
      "enum": [
        "all",
        "first",
        "subordinate",
        "not_secured",
        "not_applicable",
        "unknown"
      ],
      "title": "Lien Position",
      "type": "string"
    },
    "construction_method": {
      "default": "all",
      "description": "'all' (default), 'site_built', 'manufactured', or 'unknown'.",
      "enum": [
        "all",
        "site_built",
        "manufactured",
        "unknown"
      ],
      "title": "Construction Method",
      "type": "string"
    },
    "occupancy_type": {
      "default": "all",
      "description": "'all' (default), 'principal_residence', 'second_residence', 'investment_property', or 'unknown'.",
      "enum": [
        "all",
        "principal_residence",
        "second_residence",
        "investment_property",
        "unknown"
      ],
      "title": "Occupancy Type",
      "type": "string"
    },
    "business_purpose": {
      "default": "all",
      "description": "'all' (default: consumer + business + exempt/unknown records), 'consumer', 'business', or 'exempt_unknown'.",
      "enum": [
        "all",
        "consumer",
        "business",
        "exempt_unknown"
      ],
      "title": "Business Purpose",
      "type": "string"
    }
  },
  "title": "get_hmda_product_analyticsArguments"
}

输出模式

{
  "type": "object",
  "properties": {
    "data": {
      "additionalProperties": true,
      "title": "Data",
      "type": "object"
    },
    "meta": {
      "$ref": "#/$defs/ResultMeta"
    }
  },
  "required": [
    "meta"
  ],
  "$defs": {
    "ResultMeta": {
      "properties": {
        "available": {
          "title": "Available",
          "type": "boolean"
        },
        "as_of": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "As Of"
        },
        "source_scope": {
          "title": "Source Scope",
          "type": "string"
        },
        "weighting": {
          "title": "Weighting",
          "type": "string"
        },
        "units": {
          "additionalProperties": {
            "type": "string"
          },
          "title": "Units",
          "type": "object"
        },
        "cache_status": {
          "default": "none",
          "title": "Cache Status",
          "type": "string"
        },
        "caveats": {
          "items": {
            "type": "string"
          },
          "title": "Caveats",
          "type": "array"
        },
        "truncated": {
          "default": false,
          "title": "Truncated",
          "type": "boolean"
        },
        "message": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Message"
        },
        "upstream_paths": {
          "items": {
            "type": "string"
          },
          "title": "Upstream Paths",
          "type": "array"
        }
      },
      "required": [
        "available",
        "source_scope",
        "weighting"
      ],
      "title": "ResultMeta",
      "type": "object"
    }
  },
  "title": "ToolResult"
}
🟢get_lender_profile(lender, top_n)

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 the data is unavailable or the cache is still warming (retry after a few seconds); never report it as zero.

输入模式

{
  "type": "object",
  "properties": {
    "lender": {
      "description": "Canonical HMDA lender key: the exact `name` value from a search_lenders result, e.g. 'Rocket/Quicken' or 'United Wholesale Mortgage'. Legal names such as 'Rocket Mortgage, LLC' do not match and return meta.available=false.",
      "maxLength": 160,
      "minLength": 1,
      "title": "Lender",
      "type": "string"
    },
    "top_n": {
      "default": 10,
      "description": "Maximum rows in top_states and state_market_multiples, 1-50 (default 10).",
      "maximum": 50,
      "minimum": 1,
      "title": "Top N",
      "type": "integer"
    }
  },
  "required": [
    "lender"
  ],
  "title": "get_lender_profileArguments"
}

输出模式

{
  "type": "object",
  "properties": {
    "data": {
      "additionalProperties": true,
      "title": "Data",
      "type": "object"
    },
    "meta": {
      "$ref": "#/$defs/ResultMeta"
    }
  },
  "required": [
    "meta"
  ],
  "$defs": {
    "ResultMeta": {
      "properties": {
        "available": {
          "title": "Available",
          "type": "boolean"
        },
        "as_of": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "As Of"
        },
        "source_scope": {
          "title": "Source Scope",
          "type": "string"
        },
        "weighting": {
          "title": "Weighting",
          "type": "string"
        },
        "units": {
          "additionalProperties": {
            "type": "string"
          },
          "title": "Units",
          "type": "object"
        },
        "cache_status": {
          "default": "none",
          "title": "Cache Status",
          "type": "string"
        },
        "caveats": {
          "items": {
            "type": "string"
          },
          "title": "Caveats",
          "type": "array"
        },
        "truncated": {
          "default": false,
          "title": "Truncated",
          "type": "boolean"
        },
        "message": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Message"
        },
        "upstream_paths": {
          "items": {
            "type": "string"
          },
          "title": "Upstream Paths",
          "type": "array"
        }
      },
      "required": [
        "available",
        "source_scope",
        "weighting"
      ],
      "title": "ResultMeta",
      "type": "object"
    }
  },
  "title": "ToolResult"
}
🟢compare_lenders(lender_a, lender_b, top_n)

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 the data is unavailable or the cache is still warming (retry after a few seconds); never report it as zero.

输入模式

{
  "type": "object",
  "properties": {
    "lender_a": {
      "description": "First lender. Canonical HMDA lender key: the exact `name` value from a search_lenders result, e.g. 'Rocket/Quicken' or 'United Wholesale Mortgage'. Legal names such as 'Rocket Mortgage, LLC' do not match and return meta.available=false.",
      "maxLength": 160,
      "minLength": 1,
      "title": "Lender A",
      "type": "string"
    },
    "lender_b": {
      "description": "Second lender, different from lender_a. Canonical HMDA lender key: the exact `name` value from a search_lenders result, e.g. 'Rocket/Quicken' or 'United Wholesale Mortgage'. Legal names such as 'Rocket Mortgage, LLC' do not match and return meta.available=false.",
      "maxLength": 160,
      "minLength": 1,
      "title": "Lender B",
      "type": "string"
    },
    "top_n": {
      "default": 10,
      "description": "Maximum states in top_state_comparison, 1-50 (default 10).",
      "maximum": 50,
      "minimum": 1,
      "title": "Top N",
      "type": "integer"
    }
  },
  "required": [
    "lender_a",
    "lender_b"
  ],
  "title": "compare_lendersArguments"
}

输出模式

{
  "type": "object",
  "properties": {
    "data": {
      "additionalProperties": true,
      "title": "Data",
      "type": "object"
    },
    "meta": {
      "$ref": "#/$defs/ResultMeta"
    }
  },
  "required": [
    "meta"
  ],
  "$defs": {
    "ResultMeta": {
      "properties": {
        "available": {
          "title": "Available",
          "type": "boolean"
        },
        "as_of": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "As Of"
        },
        "source_scope": {
          "title": "Source Scope",
          "type": "string"
        },
        "weighting": {
          "title": "Weighting",
          "type": "string"
        },
        "units": {
          "additionalProperties": {
            "type": "string"
          },
          "title": "Units",
          "type": "object"
        },
        "cache_status": {
          "default": "none",
          "title": "Cache Status",
          "type": "string"
        },
        "caveats": {
          "items": {
            "type": "string"
          },
          "title": "Caveats",
          "type": "array"
        },
        "truncated": {
          "default": false,
          "title": "Truncated",
          "type": "boolean"
        },
        "message": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Message"
        },
        "upstream_paths": {
          "items": {
            "type": "string"
          },
          "title": "Upstream Paths",
          "type": "array"
        }
      },
      "required": [
        "available",
        "source_scope",
        "weighting"
      ],
      "title": "ResultMeta",
      "type": "object"
    }
  },
  "title": "ToolResult"
}
🟢get_servicer_analytics(mode, gse, vintage, lender, top_n, ...)

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 the data is unavailable or the cache is still warming (retry after a few seconds); never report it as zero.

输入模式

{
  "type": "object",
  "properties": {
    "mode": {
      "description": "'scorecard' (servicers ranked by disclosed volume), 'performance' (per-servicer CPR and DQ90 series for one vintage), or 'transfers' (one lender's servicing-transfer routes; requires `lender`).",
      "enum": [
        "scorecard",
        "performance",
        "transfers"
      ],
      "title": "Mode",
      "type": "string"
    },
    "gse": {
      "default": "all",
      "description": "'all' = Fannie Mae + Freddie Mac combined (default), 'fnma' = Fannie Mae only, 'fhlmc' = Freddie Mac only. Used by scorecard and performance; transfers is Fannie Mae only.",
      "enum": [
        "all",
        "fnma",
        "fhlmc"
      ],
      "title": "Gse",
      "type": "string"
    },
    "vintage": {
      "default": 2021,
      "description": "Origination year for mode='performance' (default 2021). Ignored by other modes.",
      "maximum": 2100,
      "minimum": 1990,
      "title": "Vintage",
      "type": "integer"
    },
    "lender": {
      "anyOf": [
        {
          "maxLength": 160,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Canonical HMDA lender key: the exact `name` value from a search_lenders result, e.g. 'Rocket/Quicken' or 'United Wholesale Mortgage'. Legal names such as 'Rocket Mortgage, LLC' do not match and return meta.available=false. Required for mode='transfers'; ignored by other modes.",
      "title": "Lender"
    },
    "top_n": {
      "default": 10,
      "description": "Maximum servicers (scorecard, performance) or rows per route list (transfers), 1-25 (default 10).",
      "maximum": 25,
      "minimum": 1,
      "title": "Top N",
      "type": "integer"
    },
    "max_points": {
      "default": 60,
      "description": "Maximum points per CPR/DQ90 series for mode='performance', 1-120 (default 60). Ignored by other modes.",
      "maximum": 120,
      "minimum": 1,
      "title": "Max Points",
      "type": "integer"
    }
  },
  "required": [
    "mode"
  ],
  "title": "get_servicer_analyticsArguments"
}

输出模式

{
  "type": "object",
  "properties": {
    "data": {
      "additionalProperties": true,
      "title": "Data",
      "type": "object"
    },
    "meta": {
      "$ref": "#/$defs/ResultMeta"
    }
  },
  "required": [
    "meta"
  ],
  "$defs": {
    "ResultMeta": {
      "properties": {
        "available": {
          "title": "Available",
          "type": "boolean"
        },
        "as_of": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "As Of"
        },
        "source_scope": {
          "title": "Source Scope",
          "type": "string"
        },
        "weighting": {
          "title": "Weighting",
          "type": "string"
        },
        "units": {
          "additionalProperties": {
            "type": "string"
          },
          "title": "Units",
          "type": "object"
        },
        "cache_status": {
          "default": "none",
          "title": "Cache Status",
          "type": "string"
        },
        "caveats": {
          "items": {
            "type": "string"
          },
          "title": "Caveats",
          "type": "array"
        },
        "truncated": {
          "default": false,
          "title": "Truncated",
          "type": "boolean"
        },
        "message": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Message"
        },
        "upstream_paths": {
          "items": {
            "type": "string"
          },
          "title": "Upstream Paths",
          "type": "array"
        }
      },
      "required": [
        "available",
        "source_scope",
        "weighting"
      ],
      "title": "ResultMeta",
      "type": "object"
    }
  },
  "title": "ToolResult"
}
🟢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 the data is unavailable or the cache is still warming (retry after a few seconds); never report it as zero.

输入模式

{
  "type": "object",
  "properties": {},
  "title": "get_dataset_statusArguments"
}

输出模式

{
  "type": "object",
  "properties": {
    "data": {
      "additionalProperties": true,
      "title": "Data",
      "type": "object"
    },
    "meta": {
      "$ref": "#/$defs/ResultMeta"
    }
  },
  "required": [
    "meta"
  ],
  "$defs": {
    "ResultMeta": {
      "properties": {
        "available": {
          "title": "Available",
          "type": "boolean"
        },
        "as_of": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "As Of"
        },
        "source_scope": {
          "title": "Source Scope",
          "type": "string"
        },
        "weighting": {
          "title": "Weighting",
          "type": "string"
        },
        "units": {
          "additionalProperties": {
            "type": "string"
          },
          "title": "Units",
          "type": "object"
        },
        "cache_status": {
          "default": "none",
          "title": "Cache Status",
          "type": "string"
        },
        "caveats": {
          "items": {
            "type": "string"
          },
          "title": "Caveats",
          "type": "array"
        },
        "truncated": {
          "default": false,
          "title": "Truncated",
          "type": "boolean"
        },
        "message": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Message"
        },
        "upstream_paths": {
          "items": {
            "type": "string"
          },
          "title": "Upstream Paths",
          "type": "array"
        }
      },
      "required": [
        "available",
        "source_scope",
        "weighting"
      ],
      "title": "ResultMeta",
      "type": "object"
    }
  },
  "title": "ToolResult"
}
🟢search_sec_filings(query, cik, ticker, form, from_date, ...)

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 the data is unavailable or the cache is still warming (retry after a few seconds); never report it as zero.

输入模式

{
  "type": "object",
  "properties": {
    "query": {
      "default": "",
      "description": "Free-text keyword search over company name and summary text, e.g. 'servicing portfolio sale'. Empty (default) = no text filter.",
      "maxLength": 200,
      "title": "Query",
      "type": "string"
    },
    "cik": {
      "default": "",
      "description": "SEC Central Index Key of the filer, digits only, e.g. '1805284'. Empty (default) = any filer.",
      "maxLength": 10,
      "title": "Cik",
      "type": "string"
    },
    "ticker": {
      "default": "",
      "description": "Stock ticker of the filer, e.g. 'RKT', 'UWMC', 'PFSI'. Case-insensitive. Empty (default) = any.",
      "maxLength": 16,
      "title": "Ticker",
      "type": "string"
    },
    "form": {
      "default": "",
      "description": "SEC form type, e.g. '10-K', '10-Q', '8-K', 'S-1', 'DEF 14A'. Case-insensitive. Empty (default) = all forms.",
      "maxLength": 24,
      "title": "Form",
      "type": "string"
    },
    "from_date": {
      "anyOf": [
        {
          "format": "date",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Earliest filing date, ISO YYYY-MM-DD. Default: no lower bound.",
      "title": "From Date"
    },
    "to_date": {
      "anyOf": [
        {
          "format": "date",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Latest filing date, ISO YYYY-MM-DD; must not be before from_date. Default: no upper bound.",
      "title": "To Date"
    },
    "summary_status": {
      "default": "",
      "description": "'' (default: all), 'summarized' (a machine summary exists), or 'unavailable' (summary could not be produced).",
      "enum": [
        "",
        "summarized",
        "unavailable"
      ],
      "title": "Summary Status",
      "type": "string"
    },
    "cursor": {
      "default": "",
      "description": "Opaque pagination token copied from a previous result's data.next_cursor. Empty (default) = first page.",
      "maxLength": 500,
      "title": "Cursor",
      "type": "string"
    },
    "limit": {
      "default": 10,
      "description": "Maximum filings per page, 1-25 (default 10).",
      "maximum": 25,
      "minimum": 1,
      "title": "Limit",
      "type": "integer"
    }
  },
  "title": "search_sec_filingsArguments"
}

输出模式

{
  "type": "object",
  "properties": {
    "data": {
      "additionalProperties": true,
      "title": "Data",
      "type": "object"
    },
    "meta": {
      "$ref": "#/$defs/ResultMeta"
    }
  },
  "required": [
    "meta"
  ],
  "$defs": {
    "ResultMeta": {
      "properties": {
        "available": {
          "title": "Available",
          "type": "boolean"
        },
        "as_of": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "As Of"
        },
        "source_scope": {
          "title": "Source Scope",
          "type": "string"
        },
        "weighting": {
          "title": "Weighting",
          "type": "string"
        },
        "units": {
          "additionalProperties": {
            "type": "string"
          },
          "title": "Units",
          "type": "object"
        },
        "cache_status": {
          "default": "none",
          "title": "Cache Status",
          "type": "string"
        },
        "caveats": {
          "items": {
            "type": "string"
          },
          "title": "Caveats",
          "type": "array"
        },
        "truncated": {
          "default": false,
          "title": "Truncated",
          "type": "boolean"
        },
        "message": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Message"
        },
        "upstream_paths": {
          "items": {
            "type": "string"
          },
          "title": "Upstream Paths",
          "type": "array"
        }
      },
      "required": [
        "available",
        "source_scope",
        "weighting"
      ],
      "title": "ResultMeta",
      "type": "object"
    }
  },
  "title": "ToolResult"
}
🟢get_sec_filing(filing_id)

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, cik, relationship_role, summary, link_status, ...}], data.people [{name, title, compensation, note}], data.financials [{metric, value, unit, period}], and data.ownership. Each list is capped. 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 the data is unavailable or the cache is still warming (retry after a few seconds); never report it as zero.

输入模式

{
  "type": "object",
  "properties": {
    "filing_id": {
      "description": "Filing identifier exactly as returned in a search_sec_filings result's filing_id field, typically the SEC accession number such as '0002100121-26-001023'. Letters, digits, '-' and '_' only.",
      "maxLength": 96,
      "minLength": 1,
      "title": "Filing Id",
      "type": "string"
    }
  },
  "required": [
    "filing_id"
  ],
  "title": "get_sec_filingArguments"
}

输出模式

{
  "type": "object",
  "properties": {
    "data": {
      "additionalProperties": true,
      "title": "Data",
      "type": "object"
    },
    "meta": {
      "$ref": "#/$defs/ResultMeta"
    }
  },
  "required": [
    "meta"
  ],
  "$defs": {
    "ResultMeta": {
      "properties": {
        "available": {
          "title": "Available",
          "type": "boolean"
        },
        "as_of": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "As Of"
        },
        "source_scope": {
          "title": "Source Scope",
          "type": "string"
        },
        "weighting": {
          "title": "Weighting",
          "type": "string"
        },
        "units": {
          "additionalProperties": {
            "type": "string"
          },
          "title": "Units",
          "type": "object"
        },
        "cache_status": {
          "default": "none",
          "title": "Cache Status",
          "type": "string"
        },
        "caveats": {
          "items": {
            "type": "string"
          },
          "title": "Caveats",
          "type": "array"
        },
        "truncated": {
          "default": false,
          "title": "Truncated",
          "type": "boolean"
        },
        "message": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Message"
        },
        "upstream_paths": {
          "items": {
            "type": "string"
          },
          "title": "Upstream Paths",
          "type": "array"
        }
      },
      "required": [
        "available",
        "source_scope",
        "weighting"
      ],
      "title": "ResultMeta",
      "type": "object"
    }
  },
  "title": "ToolResult"
}

社区

评价此服务器

证据

最近观测

已验证未记录版本10 个工具
已验证未记录版本10 个工具