Cal MCP Server
Cal MCP Server
Der Hypotheken-MCP-Server mit einem echten Kreditgeber-Datenmoat. 166+ Großhandelskreditgeber · 1.400+ indizierte Programmdokumente · 250+ Programme zur Anzahlungshilfe · 50 Bundesstaaten. Erster Model Context Protocol Server in der Hypothekenbranche mit brokerzugänglichen Matrixdaten dahinter – kein Taschenrechner, kein Zins-Scraper.
@askcal/mcp-server stellt Cal – die KI-Hypothekenplattform auf askcal.io – jedem Model Context Protocol-Client zur Verfügung: Claude Desktop, Cursor, Continue, Goose, Zed, Cody, deinem eigenen Agenten. Kreditbeauftragte, Makler, Immobilienmakler und private Kreditnehmer können ihrem KI-Assistenten Fragen stellen wie:
„Wie hoch ist das konforme Darlehenslimit 2026 in Alameda County, CA, für eine 1‑Einheit?"
„Top 5 Großhandels-Jumbo-Kreditgeber in Kalifornien für ein 712‑FICO, 80% LTV, 1,4 Mio. $ Darlehen mit einer noch gelisteten bisherigen Residenz."
„Welche DPA-Programme in Orange County, Kalifornien, funktionieren für einen Erstkäufer mit 700 FICO?"
„Plaza Home Mortgage – was ist ihr aktuelles Master-Kreditrichtliniendokument und welcher AE ist für Nordkalifornien zuständig?"
„Zeig mir das Strukturierungs-Playbook für eine sub‑580 FHA-Datei."
…und Cal liefert Antworten, die auf aktuellen Matrix-PDFs, FHFA / HUD / VA-Quelldokumenten und Tribal-Knowledge-Intelligenz basieren, die von arbeitenden Maklern kuratiert wird.
Warum das wichtig ist
Die Hypothekenbranche hat ein Jahrzehnt in der Ära „jeder kauft Encompass" verbracht. KI hat den Workflow nicht berührt, weil die Quelldaten gesperrt, fragmentiert und ablaufend sind. Cal's Bibliothek – aufgebaut aus Broker-Portal-Scrapes, wöchentlich indiziert, aktuell gehalten – ist die Datenschicht, die jede Hypotheken-KI tatsächlich nützlich macht. Dieser MCP-Server ist der Weg, über den diese Daten jede Agentenplattform erreichen, die auf MCP aufbaut.
Wenn du ein LO bist, bedeutet das, Claude (oder Cursor oder deinen eigenen Agenten) dieselben Fragen zu stellen, die du früher durch PDFs wühlen musstest – und in Sekunden eine Antwort mit Quellenangabe zu erhalten.
Related MCP server: Repliers MCP Server
Tools
Der Server stellt acht Tools bereit:
Name | Zweck |
| FHFA-konforme Darlehenslimits, FHA-Darlehenslimits, VA-Funding-Fee, FHA-MIP, Agentur-DTI-Obergrenzen. Auf Kreisebene. 50 Bundesstaaten + DC. |
| Szenariobewusster Großhandelskreditgeber-Finder. Übergib FICO / LTV / Darlehensbetrag / Bundesstaat / Belegung → die besten 5 (oder die besten 15 mit |
| Vollständiger Datensatz für einen Kreditgeber – Programme, staatliche Lizenzen, AE-Kontakt, Broker-Portal-URL, Status, aktuelle Matrixdaten. |
| Liste indizierter Matrizen / Handbücher / Overlays für einen Kreditgeber. Sortiert Master → aktuell → ersetzt. Jedes Dokument enthält eine kurze extrahierte Zusammenfassung. |
| Anzahlungshilfeprogramme nach Bundesstaat / Kreis / Stadt / FTHB / Typ. Bis zu 25 bewertete Programme mit Anbieter-URLs. |
| Tribal-Knowledge-Intelligenz – Stärken, Warnhinweise, Geschwindigkeitsnotizen, Szenarien, die sie lieben, Szenarien, die vermieden werden sollten, AE-Kontakte. Übergib |
| Strukturierungs-Playbooks für schwierige Szenarien: bisherige Residenz, ITIN / Ausländer, sub‑580 FHA, Renovierung, Super-Jumbo, plus die Matrix-Aktualitäts-Zitierregel. |
| ValueGuard Vergleichsverkaufsbewertung. Übergib das Subjekt (Preis + Quadratfuß) und 4+ Vergleichsobjekte, erhalte den angezeigten Marktwert, eine Unter-/Obergrenze, ein Über-/Unterbewertungsurteil, ein Konfidenzniveau und die verwendeten Vergleichsobjekte. Eine Listenpreis-Widerlegung in Sekunden. |
Die Tool-Oberfläche spiegelt Cal's internes Tool-Use-Schema wider, sodass jedes Modell (Claude Sonnet, Opus, Haiku, GPT‑4o, Gemini, …), das sie aufruft, dieselbe Form erhält, die Cal selbst verwendet.
Installation
Claude Desktop (macOS / Windows)
Füge dies zu ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) oder %APPDATA%\Claude\claude_desktop_config.json (Windows) hinzu:
{
"mcpServers": {
"cal": {
"command": "npx",
"args": ["-y", "@askcal/mcp-server"],
"env": {
"CAL_API_TOKEN": "your-token-here"
}
}
}
}Starte Claude Desktop neu. Die cal-Tools erscheinen im Slash-Menü.
Cursor
Einstellungen → MCP → Server hinzufügen, dann dasselbe JSON einfügen.
Continue / VS Code
~/.continue/config.json → mcpServers-Block, gleiche Form.
Lokale Entwicklung (Klonen + Verknüpfen)
git clone https://github.com/askcal/cal-mcp-server.git
cd cal-mcp-server
npm install
npm run build
# Then point your MCP client at dist/index.js with `node` as the command
# and an absolute path in args[0].Ein Token erhalten
CAL_API_TOKEN ist ein undurchsichtiges Bearer-Token. Verwende einen langlebigen API-Schlüssel, kein Sitzungstoken – Sitzungstoken von /auth/login laufen nach 8 Stunden ab, was bedeutet, dass eine MCP-Client-Konfiguration, die heute funktioniert hat, morgen 401 zurückgibt.
Empfohlen – langlebiger API-Schlüssel (cal_live_…)
Melde dich auf api.askcal.io an (fordere Zugriff an, falls du noch keinen Schlüssel hast – Broker-LOs werden automatisch genehmigt). Dann:
# 1. Get a short‑lived session token from /auth/login
SESSION=$(curl -s -X POST https://api.askcal.io/auth/login \
-H "Content-Type: application/json" \
-H "Origin: https://askcal.io" \
-d '{"email":"<your-email>","password":"<your-password>","portal":"team"}' \
| sed -n 's/.*"token":"\([^"]*\)".*/\1/p')
# 2. Mint a long‑lived API key
curl -X POST https://api.askcal.io/auth/api-keys \
-H "Content-Type: application/json" \
-H "Origin: https://askcal.io" \
-H "Authorization: Bearer $SESSION" \
-d '{"label":"my-claude-desktop"}'Die Antwort enthält ein key-Feld, das mit cal_live_ beginnt. Kopiere es jetzt – es wird nur einmal angezeigt. Verwende es als CAL_API_TOKEN. Der Schlüssel hat kein Ablaufdatum; widerrufe ihn jederzeit mit DELETE /auth/api-keys/<id> (liste deine mit GET /auth/api-keys auf).
Fallback – Sitzungstoken
Wenn du nur schnell einen Tool-Aufruf ausprobieren möchtest, funktioniert auch das Sitzungstoken von /auth/login (8‑Stunden-TTL). Setze keines in eine langlebige MCP-Konfiguration.
v0.2 Vorschau
OAuth 2.1 mit PKCE ist auf der Roadmap, damit MCP-Clients den Zustimmungsfluss selbst ausführen können. Bis dahin ist der obige API-Schlüssel-Fluss der empfohlene Weg.
Verifizieren, dass es funktioniert
Nach der Installation frage deinen MCP-Client:
„Wie hoch ist das konforme Darlehenslimit 2026 in Alameda County, CA?"
Du solltest so etwas zurückbekommen:
$1,229,100 (FHFA 2026 Conforming Loan Limits, announced 2025‑11‑26).
High‑balance HCOL county. Anything above this is a jumbo loan.Falls nicht, überprüfe:
Das Token ist nicht abgelaufen – Cal-Sitzungstoken halten standardmäßig 24 Stunden. Aktualisiere über
/auth/login.Das Netzwerk kann
https://api.askcal.ioerreichen.Dein MCP-Client hat die Konfiguration übernommen – starte ihn nach der Bearbeitung neu.
Konfiguration
Umgebungsvariable | Erforderlich | Standard | Hinweise |
| ja | — | Bearer-Token von |
| nein |
| Überschreibe nur, wenn du gegen eine andere Cal-Instanz als die Produktion testest. |
Datenumfang
Aufrufe sind auf die Liste beschränkt, die mit deinem Token verknüpft ist. Wenn du ein Broker-LO mit einer kuratierten Liste genehmigter Kreditgeber bist, werden Ergebnisse auf Kreditgeber gefiltert, die du tatsächlich nutzen kannst. Cal wird nicht über genehmigte Listen hinweg leaken. Die Demo-Liste des Gründers ist die breiteste, mit 166 Kreditgebern.
Lizenz
MIT. Der Wrapper-Code ist offen. Cal's kuratierte Kreditgeber-Bibliothek, DPA-Programmdaten und Kreditgeber-Intelligenz sind proprietär und bleiben hinter der API.
Über Cal
Cal ist die KI-Hypothekenplattform auf askcal.io, gebaut von einem 17‑jährigen Branchenveteranen (NMLS 275073) für arbeitende Makler. Produktionsstand bei dieser Veröffentlichung:
166 Großhandelskreditgeber, 1.424 indizierte Programmdokumente, 250 DPA-Programme, 50 Bundesstaaten
4 LOs im Pilotbetrieb, 342 Fragen in den ersten 24 Stunden des Soft-Launchs beantwortet
Roadmap
v0.1 - 7 Tools, API-Schlüssel-Authentifizierung, stdio-Transport, npm + GitHub.
v0.2 (aktuell) - ValueGuard-Bewertung (
cal_valuation), insgesamt 8 Tools; auf die askcal.io-API umgestellt.v0.3 - OAuth 2.1 mit PKCE.
.dxtClaude Desktop-Bundle. Optimal Blue MCP-Begleitserver.v0.4 - Streamable HTTP-Transport. Öffentliche Agentur-MCPs (Fannie Selling Guide, Freddie Guide, FHA Handbook 4000.1, VA Handbook 26-7, FHFA-Limits, HUD AMI).
v0.5 - Encompass MCP-Begleiter (LOS lesen/schreiben). DocuSign MCP-Begleiter. Ein Prompt feuert über CRM + E-Mail + Kalender + Preisgestaltung + Bibliothek.
Mitwirken
Issues und PRs sind willkommen. Die obige Roadmap ist die Prioritätsreihenfolge; wenn du ein Stück übernehmen möchtest, öffne zuerst ein Issue, damit wir nicht doppelt arbeiten.
Kontakt
Chris Black · NMLS 275073 · chris@askcal.io
Available Tools
8 toolscal_dpa_searchA
Find Down Payment Assistance (DPA) programs for a borrower's state, county, FTHB status, and program type. Returns up to 25 ranked programs with provider URLs, eligibility, amount, and program type (grant / forgivable / deferred / second / MCC). Use this for any "DPA in ", "first-time buyer help in ", grant, forgivable second, MCC, or any city/county/state housing-finance-agency program question.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Optional city name (lowercase). Filters to city-level programs. | |
| fthb | No | Filter to first-time-homebuyer-only programs. Omit to include both FTHB and non-FTHB. | |
| type | No | Optional program-type filter. | |
| state | No | Two-letter US state code (e.g. "CA"). Use "ALL" or omit for national programs. | |
| county | No | Optional county name (lowercase). Filters to programs that explicitly cover that county. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It states the tool returns up to 25 ranked programs with specific fields, which is informative. However, it does not mention authentication needs, rate limits, or any side effects, but these are not critical for a search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: first defines purpose and output, second gives usage examples. No wasted words, front-loaded with key info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 5 parameters (all optional) and no output schema. The description covers what is returned and the filtering logic. It does not mention error cases or pagination, but for a search tool, the level of detail is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter well-described (e.g., state: 'Two-letter US state code...'). The description provides overarching context but adds little to individual parameter meaning. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool finds Down Payment Assistance programs with specific filters (state, county, FTHB, type). It lists returned fields (URLs, eligibility, amount, program type). This distinguishes it from sibling tools like cal_fact_lookup or cal_lender_details, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists example queries ('DPA in <state>', 'first-time buyer help in <county>') and program types (grant, MCC, etc.), providing clear when-to-use guidance. It implies when not to use by focusing on DPA, and sibling tools cover other areas.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cal_fact_lookupA
Look up authoritative 2026 mortgage facts: FHFA conforming loan limits, FHA loan limits, VA funding fee schedule, FHA MIP rates, and agency DTI caps. Use this whenever you need a specific dollar amount, percentage, or threshold — never quote these from training-data memory because the values reset annually and FHFA/FHA limits are different programs. Returns the requested value with a source citation (FHFA, HUD, VA, Fannie/Freddie). Coverage: all 50 US states + DC, all county-level limits, 1-4 unit properties.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | Two-letter US state code (e.g. "CA", "NY"). Required for conforming and FHA loan limits. | |
| units | No | Number of units (1-4). Defaults to 1 for loan limits. | |
| county | No | County name. Lowercase with underscores (e.g. "alameda", "los_angeles", "santa_clara"). Required for loan limits. Cal accepts spaces or underscores; both work. | |
| category | Yes | Which fact to look up. "conforming_loan_limit" = FHFA limit for conventional / Fannie / Freddie loans. "fha_loan_limit" = HUD/FHA limit (different program from FHFA). "va_funding_fee" = current VA funding fee table. "fha_mip" = current FHA MIP rates (upfront + annual). "agency_dti_cap" = baseline DTI caps per program. | |
| va_use_count | No | For va_funding_fee — which fee schedule to look up. | |
| va_down_payment_pct | No | For va_funding_fee — down payment % (used to pick the bracket). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the return format ('value with source citation'), scope ('all 50 US states + DC, all county-level limits, 1-4 unit properties'), and the fact that values reset annually. It does not mention error handling or rate limits, but for a read-only lookup this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph of 4 sentences, front-loaded with purpose and a list of facts. Every sentence adds value: purpose, usage rule, return format, and coverage. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a lookup tool with no output schema, the description adequately explains what is returned (value with source citation) and the extent of coverage. It names the authoritative sources (FHFA, HUD, VA, Fannie/Freddie). The 6 parameters are fully covered by schema descriptions and the extra context in the description makes it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by clarifying formatting conventions (e.g., 'lowercase with underscores' for county, 'both work' for spaces/underscores), default behavior for units, and the purpose of each parameter (e.g., va_down_payment_pct is for bracket selection). This goes beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('look up') and resources ('authoritative 2026 mortgage facts'). It explicitly lists the fact categories (FHFA limits, FHA limits, VA fees, etc.), distinguishing this from sibling tools like cal_scenario_pattern or cal_search_lenders, which are about scenario analysis or lender search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: 'Use this whenever you need a specific dollar amount, percentage, or threshold — never quote these from training-data memory'. It also warns about the difference between FHFA and FHA programs, and specifies coverage (all 50 states, county-level). This helps the agent decide when to invoke this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cal_lender_detailsA
Fetch the full record for a specific wholesale lender — programs offered, state licenses, account-executive contact, broker portal URL, status, and recent matrix dates. Use this after cal_search_lenders to get contact details + portal info before recommending the lender to an LO.
| Name | Required | Description | Default |
|---|---|---|---|
| lenderSlug | Yes | Canonical lowercase-with-dashes slug (e.g. "plaza-home-mortgage", "uwm", "carrington"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes a fetch operation without side effects, but does not explicitly state that it is read-only or safe. The behavioral implications are inferred but not confirmed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core action, and contains no extraneous information. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description lists key return fields, providing adequate context. However, it does not mention pagination, error conditions, or rate limits. Given the low complexity, this is sufficient but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter. The description does not add any additional meaning beyond what is in the schema (e.g., format or usage hints). Baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool fetches the full record for a specific wholesale lender, listing concrete data fields (programs, licenses, contact, portal URL, status, matrix dates). It clearly distinguishes from the sibling cal_search_lenders by specifying the use case after that search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: 'Use this after cal_search_lenders to get contact details + portal info before recommending the lender to an LO.' It implies a sequential workflow, though it does not explicitly state when not to use it or alternatives beyond the sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cal_lender_documentsA
List indexed matrix / handbook / overlay documents for a lender. Returns each doc's filename, effective date, product category, authority (master vs. supplement), superseded flag, and a short extracted summary. Sorted: master → current → superseded last. Use this to verify program details or cite a specific matrix version when answering an LO question.
| Name | Required | Description | Default |
|---|---|---|---|
| lenderSlug | Yes | Canonical lowercase-with-dashes slug (matches cal_lender_details). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It states returns and sorting but does not explicitly disclose that the operation is read-only or lacks side effects. The implied read behavior is clear, but explicit declaration would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using two well-structured sentences. The first sentence enumerates outputs and sorting, the second provides usage guidance. No superfluous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one parameter and no output schema, the description covers purpose, usage context, returned fields, and sorting order. It lacks details about potential empty results or data freshness, but is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage for the single parameter 'lenderSlug', the baseline is 3. The tool description does not add additional meaning beyond the schema, which already explains the slug format. No further parameter semantics are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: listing indexed documents for a lender, specifying what fields are returned and the sort order. It distinguishes itself from sibling tools by focusing on documents (matrices, handbooks, overlays) rather than lender details or fact lookups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit context for when to use this tool: 'to verify program details or cite a specific matrix version when answering an LO question.' However, it does not mention when not to use it or suggest alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cal_lender_intelA
Tribal-knowledge intelligence on a specific wholesale lender — strengths, watch-outs, speed notes, scenarios they love, scenarios to avoid, AE contacts, recent overlay shifts not yet in PDFs. Use this AFTER cal_lender_details when the user asks "is this lender any good for X?", "fastest path", "what gets denied", or any qualitative question about working with the lender. Pass an intent to narrow the response and save tokens — e.g. intent="scenariosTheyLove" returns just that field.
| Name | Required | Description | Default |
|---|---|---|---|
| intent | No | Narrow the response to one section. Defaults to "all" (full record). Prefer a narrow intent for hard scenarios — e.g. for "is X good for departing residence?" pass "scenariosTheyLove". | |
| lenderSlug | Yes | Canonical lowercase-with-dashes slug. Match what cal_lender_details uses. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so description carries the burden. It explains the tool returns intelligence data and that passing intent can save tokens. While it doesn't disclose potential limitations like data freshness, the behavioral context is adequate for a read-only intelligence tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single paragraph is concise but well-structured: begins with purpose, then usage guidelines, then parameter advice. Every sentence adds value with no redundancy. Front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains the return content (strengths, watch-outs, etc.) and how to narrow response via intent. It covers all needed context for an agent to select and invoke the tool correctly, including relationship to sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with good base descriptions. The description adds significant value: explains intent parameter with enum values and default, gives example usage ('e.g. intent="scenariosTheyLove"'), and clarifies that lenderSlug must match cal_lender_details. This goes well beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool provides tribal-knowledge intelligence on a wholesale lender, listing specific aspects like strengths, watch-outs, speed notes, and AE contacts. It distinguishes from sibling tools by specifying usage after cal_lender_details and targeting qualitative questions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use after cal_lender_details, for qualitative questions like 'is this lender any good for X?' or 'fastest path'. Provides examples of when to pass an intent to narrow response and save tokens, offering clear when-to-use and when-to-avoid guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cal_scenario_patternA
Fetch a structuring playbook for a recognized hard mortgage scenario — departing residence with property still listed, ITIN / foreign national, sub-580 FHA, renovation (203k / reno-perm), super-jumbo > $1M — or the matrix-freshness citation rule. Each pattern returns the recommended lender shortlist + the specific guideline to apply. Call this FIRST when the LO's question matches one of these patterns — it gives you the playbook before any lender search.
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | Yes | "departing-residence" = jumbo + departing PITI + 30%+ down. "itin-foreign-national" = ITIN borrower or non-resident alien. "sub-580-fha" = FHA below the 580 minimum FICO. "renovation" = 203k / reno-perm / construction-to-perm. "super-jumbo" = loan amount over $1M. "matrix-freshness" = the citation rule for quoting any lender matrix. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It explains the tool returns a playbook (lender shortlist + guideline) and is read-only in nature. While it doesn't explicitly state no side effects, the description is transparent about its output and purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the tool's purpose and followed by a list of examples. Every word earns its place with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple lookup tool with one enum parameter and no output schema, the description adequately covers what the tool does, what it returns, and when to use it. Some might prefer an explicit note about no side effects, but overall it is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with enum values described in the schema. The description reinforces that each pattern corresponds to a specific playbook but doesn't add significant new meaning beyond the schema's own descriptions. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches a structuring playbook for recognized hard mortgage scenarios. It lists specific patterns and explains the output (lender shortlist + guideline). This distinguishes it from sibling tools by positioning it as a first step before lender searches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Call this FIRST when the LO's question matches one of these patterns' and implies not to use it for other questions. It provides clear context for when to invoke this tool vs alternatives like cal_search_lenders.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cal_search_lendersA
Search Cal's scoped wholesale-lender library for programs that fit a loan scenario. Returns lenders ranked best-first with score, qualifying reasons, and any blockers (state license gaps, FICO/LTV overlays). Use this for any "who does X?" or "which lender for Y?" question — pass as much scenario detail as you have (FICO, LTV, loan amount, occupancy) and Cal will rank against the live library. Defaults to top 5; pass expand=true for top 15.
| Name | Required | Description | Default |
|---|---|---|---|
| ltv | No | Loan-to-value as a percentage (e.g. 80 for 80% LTV). | |
| fico | No | Borrower FICO. Used to filter out lenders whose floor is higher. | |
| state | No | Two-letter US state code (e.g. "CA"). Optional but improves ranking. | |
| expand | No | Return top 15 instead of the default top 5. | |
| category | Yes | Product category. One of: DSCR, Non-QM, Jumbo, Conventional, FHA, VA, Bank-Statement, ITIN, HELOC, USDA, Reverse, Renovation. Required. | |
| occupancy | No | Property occupancy. | |
| loanAmount | No | Loan amount in USD. Used to filter against lender min/max bounds. | |
| subProgram | No | Optional product sub-type (e.g. "DPA", "HomeReady", "203k", "Bank-Statement-12mo"). | |
| includeBlocked | No | Include lenders that have blockers in the result (default false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that results are ranked best-first with score, qualifying reasons, and blockers (state license gaps, FICO/LTV overlays). It mentions use of a live library and default behavior. However, it does not state whether the operation is read-only or idempotent, which is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of three concise sentences with no wasted words. The first sentence front-loads the purpose, the second provides usage guidance, and the third explains defaults. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description explains what is returned (lenders ranked with score, reasons, blockers) and mentions defaults and expansion. It is mostly complete for a search tool, though it could specify the output structure (e.g., list of objects) and whether results are real-time or cached.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 9 parameters have descriptions in the schema (100% coverage), so baseline is 3. The description adds context by grouping parameters as scenario details (FICO, LTV, loan amount, occupancy) and mentioning defaults for expand and includeBlocked, but it does not provide significant additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search Cal's scoped wholesale-lender library for programs that fit a loan scenario,' specifying the verb (search), resource (wholesale-lender library), and purpose (fit a loan scenario). It distinguishes itself from sibling tools like cal_lender_details and cal_dpa_search by focusing on lender discovery.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises using this tool for 'who does X?' or 'which lender for Y?' questions and recommends passing as much scenario detail as possible. It provides context on defaults (top 5, expand for top 15) but does not explicitly state when not to use it or list alternatives, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cal_valuationA
ValueGuard: run a comparable-sales valuation on a subject property and return a list-price rebuttal. Given the subject (address, list price, square footage) and at least 4 comparable listings, returns the indicated market value with a floor/ceiling range, a verdict (overpriced / at market / underpriced), a confidence level, the percent the list price sits above or below market, and the comps used. Use this for "is this list price fair", "what is this home worth", appraisal-gap or list-price-rebuttal questions. The caller must supply the comparable listings; this tool does not fetch comps.
| Name | Required | Description | Default |
|---|---|---|---|
| opts | No | Optional tuning: K (number of nearest comps, default 6) and lotCap/bathFlat/poolFlat adjustment overrides. Omit for defaults. | |
| subject | Yes | The subject property. Include address (or id), price (list price, number), and sqft (number). Optional: lotSqft, beds, baths, pool, year, zip. | |
| listings | Yes | At least 4 comparable listings, each an object with the same shape as subject (address/price/sqft, optional lotSqft/beds/baths/pool/year/zip). More comps = higher confidence. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full weight. It describes the output (market value, range, verdict, confidence, percent above/below, comps used) and inputs. It does not mention any side effects, but the tool is clearly analytical and non-destructive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise paragraphs. The first paragraph defines the tool's action and outputs; the second gives usage guidance and requirements. Every sentence is necessary and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description thoroughly covers the return values. It also details the input structure and constraints (min 4 comps, optional fields). For a tool with nested objects and optional parameters, this is fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds significant context: explains 'opts' as tuning parameters, notes 'listings' requires at least 4, and states that more comps increase confidence. This goes beyond the schema's field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a comparable-sales valuation and returns a list-price rebuttal. It explicitly lists inputs and outputs, distinguishing it from sibling tools which are unrelated (e.g., lender searches).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit use cases: 'is this list price fair', 'what is this home worth', appraisal-gap or list-price-rebuttal questions. It also clarifies what the tool does not do (fetch comps) and what the caller must supply.
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 tool update
v0.2.0- Added
cal_valuation
7 tool updates
v0.1.1- First observed
cal_dpa_search - First observed
cal_fact_lookup - First observed
cal_lender_details - First observed
cal_lender_documents - First observed
cal_lender_intel - First observed
cal_scenario_pattern - First observed
cal_search_lenders
TDQS
Scored across 8 tools
The lender-related tools are carefully separated into details, documents, and intel, so the core set is easy to navigate. Some overlap exists between cal_search_lenders and cal_scenario_pattern since both can produce a lender shortlist, though their descriptions provide clear sequencing guidance.
All tools share the cal_ prefix and use lowercase snake_case, which gives the set a unified feel. However, naming style is not fully uniform: some are verb-led like cal_search_lenders and cal_fact_lookup, while others are noun-led like cal_lender_details and cal_scenario_pattern.
Eight tools is a well-scoped size for a mortgage decision-support server covering lender search, DPA, facts, scenarios, and valuation. Each tool serves a distinct workflow and none feels redundant or extraneous.
The set covers the lender workflow thoroughly: search, details, documents, and qualitative intel, plus DPA, facts, scenario playbooks, and valuation. The main gap is that cal_valuation requires the caller to supply comparable listings, and there is no companion tool to fetch comps, which can leave agents without a complete valuation path.
Maintenance
Related MCP Connectors
Broker-only credit/lending discovery shim for AI agents
Loan & mortgage calculator, compound interest, ROI, crypto prices, FX conversion for AI agents.
Connect AI agents to financial institution origination, analytics, and compliance workflows.
Crypto yield data for AI agents: lending, savings, staking, borrowing & stablecoin rates. 18 tools.
Related MCP Servers
- FlicenseDqualityCmaintenanceProvides access to RateSpot.io mortgage rate APIs, enabling AI assistants to fetch real-time mortgage rates, compare loan products, calculate payments, and access comprehensive lending information.7-

Repliers MCP Serverofficial
AlicenseNot gradedqualityBmaintenanceProvides AI assistants access to real-time MLS data via the Repliers API, enabling natural language property search, market statistics, and listing details.284 npm18MIT- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to parse and analyze mortgage documents (Loan Estimates & Closing Disclosures), converting them into structured MISMO-compliant JSON and checking for TRID compliance violations.2MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to access live Zillow property data, Zestimates, and listings for over 160 million U.S. homes.3MIT