Skip to main content
Glama
askcal

Cal MCP Server

by askcal

Servidor MCP de Cal

El servidor MCP hipotecario, con un foso de datos real de prestamistas. 166+ prestamistas mayoristas · 1,400+ documentos de programas indexados · 250+ programas de asistencia para el pago inicial · 50 estados. Primer servidor de Model Context Protocol en la industria hipotecaria con datos de matriz accesibles para corredores detrás — no una calculadora, no un raspador de tasas.

@askcal/mcp-server expone Cal — la plataforma hipotecaria de IA en askcal.io — a cualquier cliente de Model Context Protocol: Claude Desktop, Cursor, Continue, Goose, Zed, Cody, tu propio agente. Agentes de préstamos, corredores, agentes inmobiliarios y prestatarios consumidores pueden preguntarle a su asistente de IA cosas como:

  • "¿Cuál es el límite de préstamo conforme de 2026 en el condado de Alameda, CA, para una unidad de 1?"

  • "Top 5 de prestamistas mayoristas jumbo en California para un préstamo de 712 FICO, 80% LTV, $1.4M con una residencia anterior aún listada."

  • "¿Qué programas de asistencia para el pago inicial en el condado de Orange, California funcionan para un comprador de primera vivienda con 700 FICO?"

  • "Plaza Home Mortgage — ¿cuál es su documento maestro actual de guía de crédito, y qué AE cubre el norte de California?"

  • "Muéstrame el manual de estructuración para un archivo FHA sub-580."

…y Cal devuelve respuestas fundamentadas en PDFs de matriz actuales, documentos fuente de FHFA / HUD / VA, e inteligencia tribal curada por corredores en activo.

Por qué esto importa

La industria hipotecaria ha pasado una década en la era de "todos compran Encompass". La IA no ha tocado el flujo de trabajo porque los datos fuente están restringidos, fragmentados y caducan. La biblioteca de Cal — construida a partir de extracciones de portales de corredores, indexada semanalmente, mantenida al día — es la capa de datos que hace que cualquier IA hipotecaria sea realmente útil. Este servidor MCP es cómo esos datos llegan a cada plataforma de agentes construida sobre MCP.

Si eres un LO, esto significa preguntarle a Claude (o Cursor, o tu propio agente) las mismas preguntas que solías responder escarbando en PDFs — y obtener una respuesta en segundos con una cita de fuente.

Related MCP server: Repliers MCP Server

Herramientas

El servidor expone ocho herramientas:

Nombre

Propósito

cal_fact_lookup

Límites de préstamo conforme FHFA, límites de préstamo FHA, tarifa de financiamiento VA, MIP FHA, topes de DTI de agencias. A nivel de condado. 50 estados + DC.

cal_search_lenders

Buscador de prestamistas mayoristas consciente del escenario. Pasa FICO / LTV / monto del préstamo / estado / ocupación → top 5 clasificados (o top 15 con expand=true) con puntuación, razones de calificación, bloqueadores.

cal_lender_details

Registro completo de un prestamista — programas, licencias estatales, contacto de AE, URL del portal del corredor, estado, fechas recientes de matrices.

cal_lender_documents

Lista matrices / manuales / overlays indexados de un prestamista. Ordenados maestro → actual → reemplazado. Cada documento incluye un resumen breve extraído.

cal_dpa_search

Programas de asistencia para el pago inicial por estado / condado / ciudad / comprador de primera vivienda / tipo. Hasta 25 programas clasificados con URLs de proveedores.

cal_lender_intel

Inteligencia tribal — fortalezas, advertencias, notas de velocidad, escenarios que aman, escenarios a evitar, contactos de AE. Pasa intent para acotar.

cal_scenario_pattern

Manuales de estructuración para escenarios difíciles: residencia en venta, ITIN / extranjero no residente, FHA sub-580, renovación, super-jumbo, más la regla de citación de frescura de matrices.

cal_valuation

Valoración de ventas comparables ValueGuard. Pasa el sujeto (precio + pies cuadrados) y 4+ comparables, obtén el valor de mercado indicado, un rango mínimo/máximo, un veredicto de sobre/precio, un nivel de confianza y los comparables utilizados.

La superficie de herramientas refleja el esquema interno de uso de herramientas de Cal, de modo que cualquier modelo (Claude Sonnet, Opus, Haiku, GPT-4o, Gemini, …) que las llame obtiene la misma forma que usa Cal mismo.

Instalación

Claude Desktop (macOS / Windows)

Añade esto a ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) o %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "cal": {
      "command": "npx",
      "args": ["-y", "@askcal/mcp-server"],
      "env": {
        "CAL_API_TOKEN": "your-token-here"
      }
    }
  }
}

Reinicia Claude Desktop. Las herramientas cal aparecen en el menú de barra diagonal.

Cursor

Configuración → MCP → Añadir servidor, luego pega el mismo JSON.

Continue / VS Code

~/.continue/config.json → bloque mcpServers, misma forma.

Desarrollo local (clonar + enlazar)

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].

Obtener un token

CAL_API_TOKEN es un token portador opaco. Usa una clave API de larga duración, no un token de sesión — los tokens de sesión de /auth/login caducan después de 8 horas, lo que significa que una configuración de cliente MCP que funcionaba hoy devolverá 401 mañana.

Recomendado — clave API de larga duración (cal_live_…)

Regístrate en api.askcal.io (solicita acceso si aún no tienes una clave — los LO corredores se aprueban automáticamente). Luego:

# 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"}'

La respuesta incluye un campo key que comienza con cal_live_. Cópiala ahora — solo se muestra una vez. Úsala como CAL_API_TOKEN. La clave no caduca; revócala en cualquier momento con DELETE /auth/api-keys/<id> (lista las tuyas con GET /auth/api-keys).

Alternativa — token de sesión

Si solo quieres probar una llamada de herramienta rápidamente, el token de sesión de /auth/login también funciona (TTL de 8 horas). No lo pongas en una configuración MCP de larga duración.

Vista previa v0.2

OAuth 2.1 con PKCE está en la hoja de ruta para que los clientes MCP puedan ejecutar el flujo de consentimiento ellos mismos. Hasta entonces, el flujo de clave API anterior es el camino recomendado.

Verificar que funciona

Después de instalar, pregúntale a tu cliente MCP:

"¿Cuál es el límite de préstamo conforme de 2026 en el condado de Alameda, CA?"

Deberías obtener algo como:

$1,229,100 (FHFA 2026 Conforming Loan Limits, announced 2025‑11‑26).
High‑balance HCOL county. Anything above this is a jumbo loan.

Si no, verifica:

  1. Que el token no esté caducado — los tokens de sesión de Cal duran 24 horas por defecto. Renueva vía /auth/login.

  2. Que la red pueda alcanzar https://api.askcal.io.

  3. Que tu cliente MCP haya cargado la configuración — reinícialo después de editarla.

Configuración

Variable de entorno

Obligatoria

Por defecto

Notas

CAL_API_TOKEN

sí

—

Token portador de /auth/login.

CAL_API_BASE_URL

no

https://api.askcal.io

Sobrescribir solo si estás probando contra una instancia de Cal distinta a producción.

Alcance de datos

Las llamadas están limitadas a la lista vinculada a tu token. Si eres un LO corredor con una lista curada de prestamistas aprobados, los resultados se filtran a prestamistas que realmente puedes usar. Cal no filtrará entre listas aprobadas. La lista de demostración del fundador es la más amplia, con 166 prestamistas.

Licencia

MIT. El código del wrapper es abierto. La biblioteca curada de prestamistas de Cal, los datos de programas DPA y la inteligencia de prestamistas son propietarios y permanecen detrás de la API.

Acerca de Cal

Cal es la plataforma hipotecaria de IA en askcal.io, construida por un veterano de la industria con 17 años (NMLS 275073) para corredores en activo. Estado de producción en este lanzamiento:

  • 166 prestamistas mayoristas, 1,424 documentos de programas indexados, 250 programas DPA, 50 estados

  • 4 LO en piloto, 342 preguntas respondidas en las primeras 24 horas del lanzamiento suave

Hoja de ruta

  • v0.1 — 7 herramientas, autenticación con clave API, transporte stdio, npm + GitHub.

  • v0.2 (actual) — Valoración ValueGuard (cal_valuation), 8 herramientas en total; redirigido a la API de askcal.io.

  • v0.3 — OAuth 2.1 con PKCE. Paquete .dxt para Claude Desktop. Servidor complementario MCP de Optimal Blue.

  • v0.4 — Transporte HTTP streamable. MCPs de agencias públicas (Guía de venta de Fannie, Guía de Freddie, Manual FHA 4000.1, Manual VA 26-7, límites FHFA, AMI de HUD).

  • v0.5 — Complemento MCP de Encompass (lectura/escritura LOS). Complemento MCP de DocuSign. Un solo prompt dispara a través de CRM + correo + calendario + precios + biblioteca.

Contribuciones

Issues y PRs bienvenidos. La hoja de ruta anterior es el orden de prioridad; si quieres tomar una parte, abre un issue primero para no trabajar en paralelo.

Contacto

Chris Black · NMLS 275073 · chris@askcal.io

Available Tools

8 tools
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.

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNoTwo-letter US state code (e.g. "CA", "NY"). Required for conforming and FHA loan limits.
unitsNoNumber of units (1-4). Defaults to 1 for loan limits.
countyNoCounty name. Lowercase with underscores (e.g. "alameda", "los_angeles", "santa_clara"). Required for loan limits. Cal accepts spaces or underscores; both work.
categoryYesWhich 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_countNoFor va_funding_fee — which fee schedule to look up.
va_down_payment_pctNoFor va_funding_fee — down payment % (used to pick the bracket).

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

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 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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
lenderSlugYesCanonical lowercase-with-dashes slug (e.g. "plaza-home-mortgage", "uwm", "carrington").

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
lenderSlugYesCanonical lowercase-with-dashes slug (matches cal_lender_details).

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

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 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.

Parameters3/5

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.

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 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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
intentNoNarrow 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".
lenderSlugYesCanonical lowercase-with-dashes slug. Match what cal_lender_details uses.

TDQS

A4.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
patternYes"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

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ltvNoLoan-to-value as a percentage (e.g. 80 for 80% LTV).
ficoNoBorrower FICO. Used to filter out lenders whose floor is higher.
stateNoTwo-letter US state code (e.g. "CA"). Optional but improves ranking.
expandNoReturn top 15 instead of the default top 5.
categoryYesProduct category. One of: DSCR, Non-QM, Jumbo, Conventional, FHA, VA, Bank-Statement, ITIN, HELOC, USDA, Reverse, Renovation. Required.
occupancyNoProperty occupancy.
loanAmountNoLoan amount in USD. Used to filter against lender min/max bounds.
subProgramNoOptional product sub-type (e.g. "DPA", "HomeReady", "203k", "Bank-Statement-12mo").
includeBlockedNoInclude lenders that have blockers in the result (default false).

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
optsNoOptional tuning: K (number of nearest comps, default 6) and lotCap/bathFlat/poolFlat adjustment overrides. Omit for defaults.
subjectYesThe subject property. Include address (or id), price (list price, number), and sqft (number). Optional: lotSqft, beds, baths, pool, year, zip.
listingsYesAt 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

A4.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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. 1 tool updatev0.2.0
    • Addedcal_valuation
  2. 7 tool updatesv0.1.1
    • First observedcal_dpa_search
    • First observedcal_fact_lookup
    • First observedcal_lender_details
    • First observedcal_lender_documents
    • First observedcal_lender_intel
    • First observedcal_scenario_pattern
    • First observedcal_search_lenders

TDQS

A4.2/5.0

Scored across 8 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    D
    quality
    C
    maintenance
    Provides 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
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides AI assistants access to real-time MLS data via the Repliers API, enabling natural language property search, market statistics, and listing details.
    284 npm
    18
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    2
    MIT