Skip to main content
Glama
pulkitsinghal

Unofficial UWM Mortgage Reader

Unofficial UWM Mortgage Reader

A community-contributed, read-only Model Context Protocol (MCP) server for mortgage tracking with an authenticated UWM browser adapter.

Independent community project: This software is not made, sponsored, supported, endorsed, or operated by UWM. It does not speak for UWM. “UWM” identifies the mortgage portal the adapter can read; it is not the publisher of this software.

Private alpha: live validation found no stable same-origin JSON response for the required views. The adapter therefore uses narrowly scoped browser extraction on only the authenticated views observed during owner validation. It does not invent or call undocumented borrower endpoints.

Safety properties

  • Read-only by design.

  • No make_payment, ACH, transfer, autopay enrollment, or payoff-request tool.

  • No passwords, SSNs, loan numbers, cookies, HAR files, or statements belong in git.

  • Mortgage calculations run locally and never initiate financial activity.

Related MCP server: plaid-mcp

Tools

  • mortgage_connection_status

  • mortgage_start_login

  • mortgage_get_summary

  • mortgage_get_payment_history

  • mortgage_get_escrow

  • mortgage_list_statements

  • mortgage_calculate_extra_payment

Run the mock server

UWM_MCP_MODE=mock node src/server.js

MCP stdio messages are newline-delimited JSON-RPC. The server supports modern 2026-07-28 discovery/per-request metadata and legacy initialize-based clients for compatibility.

Run from a validated snapshot

Copy config/snapshot.example.json to a private location, replace it with data captured from your own UWM session, then:

UWM_MCP_MODE=snapshot \
UWM_MCP_SNAPSHOT=/absolute/private/path/uwm.snapshot.json \
node src/server.js

Run the live UWM adapter

The live adapter keeps one ephemeral headed browser open for the MCP process lifetime. It does not save a browser profile, cookies, or storage state.

For the guided MCP/plugin flow, start live mode without preselecting a route:

UWM_MCP_MODE=live npm start

Call mortgage_connection_status. While setup is incomplete it is side-effect-free: it returns the 1Password and manual choices without opening a browser, querying 1Password, or reading/writing Keychain. Present both choices to the user, then call mortgage_start_login with the selected route.

For onepassword, acceptUwmTerms: true is required immediately before login. Keychain persistence requires a separate rememberOnThisMac: true opt-in and defaults to false. The login action never accepts a username, password, or MFA value.

The commands below are advanced direct-start fallbacks for local testing. Running one explicitly preselects that route.

1Password-assisted route on macOS, after the user explicitly agrees to UWM's terms for that login:

UWM_MCP_ACCEPT_TERMS=1 npm run start:live:1password

If more than one 1Password account is configured, set UWM_OP_ACCOUNT to the intended account shorthand or ID. UWM_OP_ITEM may likewise pin a Login item; the exact UWM hostname is still verified before any field is read.

Manual route:

npm run start:live:manual

The 1Password route requests desktop biometric approval and fills only the primary login form. The guided route uses macOS Keychain only after the separate remember-on-this-Mac opt-in. The manual route leaves the form to the user. Both routes leave UWM email OTP/MFA entirely to the user; enter one-time codes only in the UWM browser and never in MCP or chat. Call connection status again after the dashboard appears.

The observed browser adapter supports:

  • summary: principal balance, interest rate, monthly payment, derived principal-and-interest payment, escrow payment/balance, next due date, and maturity date;

  • payment history: the date and total for initially rendered recent payment rows;

  • escrow: current balance, as-of date, monthly deposit, and initially rendered upcoming tax/insurance payouts;

  • statements: Billing statement date, year, month, and a generic title, with no filename, loan identifier, or download URL;

  • local extra-payment/payoff projections using normalized summary fields.

It does not support payment allocation breakdowns, expanding older activity, statement downloads/content, contact information, loan identifiers, autopay changes, payoff requests, or any other account mutation.

Test

npm test
npm run selftest
npm run check
npm run privacy:scan
npm run privacy:scan:history

Install as a community connector

This repository includes a local Codex/ChatGPT desktop plugin named Unofficial UWM Mortgage Reader. It runs on each user's own Mac, opens that user's own headed browser, and does not reference another user's tunnel, ChatGPT app ID, credentials, or session.

After cloning the repository locally:

npm ci
npx playwright install chromium
codex plugin marketplace add .
codex plugin add unofficial-uwm-mortgage-reader@community-uwm-mortgage-reader

Restart the desktop app, enable the plugin, and begin with mortgage_connection_status. A repository owner can also share the installed local plugin with members of the same ChatGPT workspace. This community distribution is separate from OpenAI's universal public directory.

The package remains intentionally private from npm publishing. Do not remove "private": true merely to use the repository marketplace.

Live UWM validation

The account owner authenticated normally to UWM and validated the actual servicing transport. The allowed same-origin JSON capture produced zero relevant records, so the implementation uses the required browser-extraction fallback. Do not bypass MFA or CAPTCHA. Persist secrets outside the repo.

The live test acceptance criteria are:

  1. principal balance matches the portal,

  2. interest rate matches,

  3. monthly payment and next due date match,

  4. escrow balance matches when applicable,

  5. at least two recent payment dates and totals match the rendered portal history,

  6. logout/expired session fails closed,

  7. no tool can cause a payment or account mutation.

Publication gate

package.json intentionally contains "private": true. Remove that only after live verification, privacy review, trademark wording review, and any marketplace signing requirements are independently validated.

This community project is not made, sponsored, supported, endorsed, or operated by UWM and does not speak for UWM.

Private live-discovery helper

For the account-owner test, run this on the user's own machine. The connection-status response exposes the same two login routes to every MCP client:

  • onepassword: 1Password CLI requests desktop biometric approval, caches the login in macOS Keychain for later local runs, fills only the UWM username/password form, and leaves MFA to the user. Each run requires explicit acceptance of UWM's terms.

  • manual: the user fills the UWM login form and MFA without credential automation.

After the primary login, UWM may offer an email one-time passcode. Request the email in the UWM browser, retrieve the code privately, and enter it only in that browser. Never paste the code, email contents, or email address into MCP, chat, or a terminal. Wait for the authenticated mortgage dashboard before confirming that setup is ready.

1Password route:

npm run capture:uwm:1password -- --accept-terms

Manual route:

npm install
npx playwright install chromium
npm run capture:uwm

Both routes open the exact UWM servicing URL. The browser context is ephemeral: no browser profile, cookies, or storage state are saved. After the authenticated dashboard appears, confirm readiness once in the terminal. The helper then automatically visits the observed dashboard, My Loan, and Document Center/Billing views and never opens a statement file. The capture is written under ignored private/ storage with mode 0600 and includes normalized browser-extraction data when same-origin JSON is unavailable. It does not persist passwords, cookies, or browser storage, but the private capture contains mortgage data and must never be committed.

Then inspect candidate response fields without printing full response bodies:

npm run inspect:capture -- private/uwm-capture/responses-....json

The inspector prints only candidate key paths and record counts, never captured values. This keeps private data out of logs and makes UWM portal changes detectable.

Available Tools

7 tools
mortgage_calculate_extra_paymentA
Read-onlyIdempotent

Project payoff acceleration and interest savings using mortgage summary data. No payment is initiated.

ParametersJSON Schema
NameRequiredDescriptionDefault
extraMonthlyYes

TDQS

A3.8/5.0
Behavior4/5

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

The description reinforces the annotations by stating 'No payment is initiated,' clarifying that this is a non-destructive calculation. It also adds context that the projection is 'using mortgage summary data,' indicating reliance on existing data. This goes slightly beyond the readOnlyHint by connecting the behavior to real-world financial safety.

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?

The description is two short sentences, front-loaded with the primary purpose and a critical safety note. There is no redundant information, and every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read-only calculator, the description conveys the core behavior and safety. However, it does not mention what the output looks like (no output schema exists), and it lacks details on the parameter's semantics or any prerequisites (e.g., needing to call mortgage_get_summary first). This leaves some ambiguity for the agent.

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

Parameters2/5

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

The schema has one required parameter, `extraMonthly`, with no description (0% coverage). The tool description does not explain what `extraMonthly` represents or how it impacts the calculation. The agent must rely solely on the parameter name and the tool name to infer its meaning, which is insufficient for a calculation tool.

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 clearly states the tool's function: projecting payoff acceleration and interest savings. This distinguishes it from sibling tools that handle connection, statements, summaries, and payment history. The verb 'project' and resource 'mortgage summary data' make the purpose specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the description but no explicit guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites like having summary data available or when this would be preferred over mortgage_get_summary or mortgage_get_payment_history.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mortgage_connection_statusA
Read-onlyIdempotent

Check adapter status and get guided 1Password/manual login plus user-completed MFA setup steps. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description reinforces this with 'Read-only.' It adds context that the tool returns guided login steps and MFA setup state, which are useful behavioral details beyond the annotations.

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?

A single sentence that front-loads the main purpose ('Check adapter status') and packs the login/MFA guidance without waste. Every phrase contributes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only status tool, the description sufficiently covers the purpose and what kind of information is returned (status, login guidance, MFA steps). However, it does not detail the format or structure of the status response, which would be helpful given no output schema.

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

Parameters4/5

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

No parameters exist, so schema coverage is complete and there is nothing for the description to add. Baseline 4 is appropriate for a zero-parameter tool.

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 uses specific verbs 'check' and 'get' with a clear resource ('adapter status') and additional content (login/MFA steps). It clearly distinguishes this tool from sibling mortgage tools that handle statements, summaries, or payments.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for verifying connection status and retrieving login guidance, but does not explicitly state when to use it versus alternatives or any exclusions. Sibling tools cover different concerns, so context is clear, but guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mortgage_get_escrowA
Read-onlyIdempotent

Get current escrow information. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds only 'Read-only', which repeats the annotation. It does not disclose any additional behavioral traits such as whether escrow data may not exist, whether it requires an active login, or what the response structure looks like. With strong annotations, the description adds minimal value beyond them.

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?

The description is two short sentences: 'Get current escrow information. Read-only.' It is front-loaded with the action and resource, with no unnecessary words. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only operation, the description states what it retrieves (current escrow information). However, it omits details about the return format or edge cases (e.g., no escrow account). Given the lack of an output schema and the simple nature of the tool, this is mostly adequate but not exhaustive.

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

Parameters4/5

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

The tool has zero parameters, and the input schema is an empty object. The description correctly implies no inputs are needed. Per the rubric, baseline is 4 for zero-parameter tools. The description adds no param semantics because there are none.

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 uses the specific verb 'Get' with the resource 'current escrow information', clearly distinguishing it from sibling tools like mortgage_get_summary and mortgage_get_payment_history. No ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool vs alternatives. The resource name makes the use case obvious, but there are no exclusion criteria or pointers to alternative tools. The simplicity implies usage, but the description doesn't state it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mortgage_get_payment_historyC
Read-onlyIdempotent

Get mortgage payment history. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
monthsNo

TDQS

C2.9/5.0
Behavior2/5

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

The description adds no behavioral context beyond what annotations already provide. It only restates 'Read-only' which is redundant with readOnlyHint=true. It does not describe the return format, whether history is chronological, or that the 'months' parameter limits the range.

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?

The description is extremely concise with two short sentences. It is front-loaded with the action and resource, and the 'Read-only' addition, while redundant, does not add bulk. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has one parameter and no output schema, yet the description does not explain what the payment history includes or how 'months' affects the result. Annotations cover safety but not usage semantics, leaving the description incomplete for a straightforward but under-specified tool.

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

Parameters1/5

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 'months' parameter. It does not mention 'months' at all, leaving its meaning ambiguous. Even though the schema shows type and constraints, the description adds no semantics about what the parameter controls.

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 clearly states the tool gets mortgage payment history, with a specific verb and resource. The resource name itself distinguishes it from siblings like mortgage_list_statements and mortgage_get_summary, so the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention any preconditions, exclusions, or why an agent might prefer this over mortgage_list_statements or mortgage_get_summary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mortgage_get_summaryA
Read-onlyIdempotent

Get current mortgage balance, rate, payment, due date, and escrow summary. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds 'current' and lists specific data fields, but does not disclose additional behavioral traits such as auth requirements, rate limits, or data freshness. It repeats 'Read-only' which is already in annotations.

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?

The description is a single, information-dense sentence that front-loads the purpose ('Get current mortgage balance...') and ends with a clear safety hint ('Read-only'). Every word earns its place; no redundancy beyond the redundant but short safety annotation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no input parameters and no output schema, the description lists all key data elements (balance, rate, payment, due date, escrow summary) providing a clear picture of what to expect. It does not mention prerequisites like active login, but given sibling tools (mortgage_start_login) and the read-only nature, the description is sufficiently complete for a simple summary tool.

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

Parameters4/5

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

The tool has zero parameters and the schema is trivially fully covered. There is no need for parameter documentation, so the baseline of 4 applies. The description correctly focuses on the resource and output content rather than parameters.

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 clearly states the tool retrieves a 'current mortgage balance, rate, payment, due date, and escrow summary' with a specific verb 'Get' and resource. It distinguishes itself from siblings like mortgage_get_payment_history (history) and mortgage_get_escrow (escrow-only) by providing a comprehensive snapshot.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for obtaining the current mortgage overview and notes it is read-only. It does not explicitly mention alternatives or exclusions, but the 'current...summary' wording and sibling context make the intended use clear. No explicit when-not-to-use guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mortgage_list_statementsA
Read-onlyIdempotent

List available mortgage statements. Read-only; does not download without a later explicit implementation.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, but the description adds valuable context beyond these: it explicitly states that the tool does not download statements without a later explicit implementation. This clarifies behavior for the agent, making the tool's non-download behavior transparent.

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?

The description is highly concise and front-loaded: 'List available mortgage statements' is the first sentence, followed by a single clarifying sentence about read-only behavior. No wasted words; every part adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with one optional parameter and no output schema, the description covers the main purpose and read-only behavior sufficiently. However, it omits any mention of the year filtering or what the returned statements will look like, leaving a small but notable gap in completeness.

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

Parameters2/5

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

The schema has one optional 'year' parameter with a range, but the description does not explain its purpose or behavior (e.g., filter by year, omit to get all). With 0% schema description coverage, the description should compensate by explaining the parameter, but it doesn't, leaving the agent to infer from the parameter name alone.

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 clearly states the tool 'lists available mortgage statements,' specifying a concrete action and resource. It distinguishes itself from siblings like mortgage_get_payment_history and mortgage_get_escrow by focusing on statements, and the additional note about not downloading clarifies its exact scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage context is implied: use this to see what statements are available. However, there is no explicit guidance on when to use this versus other mortgage tools, or what to do if you need to download a statement. The read-only note hints at its non-downloading nature but doesn't provide exclusions or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mortgage_start_loginA

Start the user-selected headed UWM login flow. Use only after presenting the choices from mortgage_connection_status. Never request credentials or MFA in chat.

ParametersJSON Schema
NameRequiredDescriptionDefault
routeYes
acceptUwmTermsNoRequired explicit consent before the 1Password route checks UWM terms.
rememberOnThisMacNoSeparate opt-in to cache the selected login in macOS Keychain.

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false, so the agent knows this is a non-read-only, non-idempotent action. The description adds that it starts a login flow but does not detail side effects like opening a browser or whether it returns a status. No contradiction with annotations; the additional context is limited.

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?

Three concise sentences, front-loaded with the purpose, followed by usage guidance and a safety note. Every sentence adds essential information with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose, usage prerequisites, and a key constraint. It does not explain the return value or what happens after the login flow starts, but the schema's parameter descriptions and the tool's context (initiating the selected login route) make it reasonably complete for invocation.

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

Parameters3/5

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

The description does not elaborate on parameters, but the schema provides descriptions for 2 of 3 params, and the route enum (onepassword/manual) is self-explanatory. The description adds no additional parameter meaning, but the schema sufficiently covers the required inputs.

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 uses a specific verb ('Start') and resource ('user-selected headed UWM login flow'), clearly indicating the tool's function. It distinguishes from sibling data-retrieval tools by referencing the login flow and the prerequisite from mortgage_connection_status.

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?

Explicitly states the precondition: 'Use only after presenting the choices from mortgage_connection_status.' Also provides a clear exclusion: 'Never request credentials or MFA in chat.' This gives the agent concrete guidance on when and how to use the tool.

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.

  1. 7 tool updatesv0.1.0-private.0
    • First observedmortgage_calculate_extra_payment
    • First observedmortgage_connection_status
    • First observedmortgage_get_escrow
    • First observedmortgage_get_payment_history
    • First observedmortgage_get_summary
    • First observedmortgage_list_statements
    • First observedmortgage_start_login

TDQS

A3.9/5.0

Scored across 7 tools

Disambiguation5/5

Each tool targets a distinct aspect: connection status, login flow, statements, summary, payment history, escrow, and extra payment calculations. There is no overlap or ambiguity between them.

Naming Consistency5/5

All tool names share the 'mortgage_' prefix and follow a consistent snake_case verb_noun pattern (get_summary, list_statements, start_login). The naming is predictable and uniform.

Tool Count5/5

Seven tools is well-scoped for a mortgage reader that covers connection, login, core data retrieval, and financial projections. Each tool has a clear purpose and none are redundant.

Completeness4/5

The tool set covers the main read operations (summary, history, escrow, statements) and login/connection, but statement download is explicitly deferred. A logout or more detailed document retrieval would round out the surface, but core workflows are covered.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    A read-only MCP server that provides access to Charles Schwab account data and market information, including portfolio positions, real-time quotes, options chains, price history, and account balances through AI assistants.
    9
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A read-only MCP server that enables users to analyze their real bank, credit card, loan, and brokerage data through Plaid. It provides financial analysis tools for transactions, balances, investments, liabilities, and debt while keeping all access tokens and data locally stored.
    24
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that provides read-only access to your BECU accounts via browser automation, enabling querying of account balances and transaction history conversationally.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A read-only MCP server for exploring on-premises, multi-instance Microsoft SQL Server estates from AI clients, with read-only enforcement and Windows authentication support.
    Apache 2.0