Cal MCP Server
Cal MCP 服务器
抵押贷款 MCP 服务器,拥有真实的贷款机构数据护城河。166+ 家批发贷款机构 · 1,400+ 份已索引的计划文件 · 250+ 个首付援助计划 · 覆盖全美 50 个州。 抵押贷款行业首个 Model Context Protocol 服务器,背后是经纪人可访问的矩阵数据——不是计算器,也不是利率抓取器。
@askcal/mcp-server 将 Cal——位于 askcal.io 的 AI 抵押贷款平台——开放给任何 Model Context Protocol 客户端:Claude Desktop、Cursor、Continue、Goose、Zed、Cody,以及你自己的智能体。贷款专员、经纪人、房地产经纪人和个人借款人都可以问他们的 AI 助手类似这样的问题:
"2026 年加州阿拉米达县单户住宅的合规贷款上限是多少?"
"加州排名前 5 的批发巨额贷款机构,适用于 712 FICO 分、80% LTV、140 万美元贷款、且仍有自住房在挂牌出售的借款人?"
"加州橙县有哪些首付援助计划适合 FICO 700 分的首次购房者?"
"Plaza Home Mortgage——他们最新的主信贷指引文件是什么,哪位区域经理负责北加州?"
"给我看看 FHA 580 分以下贷款文件的结构化操作手册。"
……Cal 会基于最新的矩阵 PDF、FHFA / HUD / VA 源文件,以及由在职经纪人整理的行内知识情报,返回有据可查的答案。
为什么这很重要
抵押贷款行业在"人人都在用 Encompass"的时代已经过去了十年。AI 之所以没有触及工作流程,是因为源数据受到限制、碎片化严重,而且会过期。Cal 的数据库——通过抓取经纪人门户构建、每周索引、持续更新——正是让任何抵押贷款 AI 真正有用的数据层。这个 MCP 服务器就是让这些数据触达构建在 MCP 之上的每一个智能体平台的方式。
如果你是一名贷款专员,这意味着你可以问 Claude(或 Cursor,或你自己的智能体)那些过去需要翻遍 PDF 才能回答的问题——并在几秒钟内获得带来源引用的答案。
Related MCP server: Repliers MCP Server
工具
该服务器提供八个工具:
名称 | 用途 |
| FHFA 合规贷款上限、FHA 贷款上限、VA 融资费、FHA 按揭保险费、机构债务收入比上限。县级数据。覆盖 50 个州及哥伦比亚特区。 |
| 基于场景的批发贷款机构搜索。传入 FICO / LTV / 贷款金额 / 州 / 自住情况 → 返回排名前 5(使用 |
| 单家贷款机构的完整记录——计划、州执照、区域经理联系方式、经纪人门户 URL、状态、近期矩阵日期。 |
| 列出某家贷款机构已索引的矩阵 / 手册 / 覆盖文件。按主文件 → 当前 → 已取代排序。每份文件都附带简短的内容摘要。 |
| 按州 / 县 / 市 / 首次购房者 / 类型搜索首付援助计划。最多返回 25 个带提供方 URL 的排名计划。 |
| 行内知识情报——优势、注意事项、放款速度备注、他们偏好的场景、应避免的场景、区域经理联系方式。传入 |
| 复杂场景的结构化操作手册:有自住房在售、ITIN / 外籍人士、FHA 580 分以下、翻新贷款、超巨额贷款,以及矩阵时效性引用规则。 |
| ValueGuard 可比销售法估值。传入标的物业(价格 + 面积)和 4 个以上可比案例,即可获得指示性市场价值、上下限区间、高估 / 低估判断、置信水平以及所用可比案例。几秒钟内生成挂牌价反驳报告。 |
工具表面与 Cal 内部工具调用模式保持一致,因此任何调用这些工具的模型(Claude Sonnet、Opus、Haiku、GPT-4o、Gemini 等)都能获得与 Cal 自身相同的数据结构。
安装
Claude Desktop(macOS / Windows)
将以下内容添加到 ~/Library/Application Support/Claude/claude_desktop_config.json(macOS)或 %APPDATA%\Claude\claude_desktop_config.json(Windows):
{
"mcpServers": {
"cal": {
"command": "npx",
"args": ["-y", "@askcal/mcp-server"],
"env": {
"CAL_API_TOKEN": "your-token-here"
}
}
}
}重启 Claude Desktop。cal 工具会出现在斜杠菜单中。
Cursor
设置 → MCP → 添加服务器,然后粘贴相同的 JSON。
Continue / VS Code
~/.continue/config.json → mcpServers 代码块,格式相同。
本地开发(克隆 + 链接)
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].获取令牌
CAL_API_TOKEN 是一个不透明的 Bearer 令牌。请使用长期有效的 API 密钥,而不是会话令牌——来自 /auth/login 的会话令牌会在 8 小时后过期,这意味着今天还能用的 MCP 客户端配置,明天就会返回 401。
推荐——长期有效的 API 密钥(cal_live_…)
在 api.askcal.io 注册(如果还没有密钥,请申请访问权限——经纪人贷款专员会自动获批)。然后:
# 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"}'响应中包含一个以 cal_live_ 开头的 key 字段。请立即复制——它只显示一次。 将其用作 CAL_API_TOKEN。该密钥永不过期;可随时使用 DELETE /auth/api-keys/<id> 撤销(使用 GET /auth/api-keys 列出你的密钥)。
备选——会话令牌
如果你只是想快速测试一次工具调用,来自 /auth/login 的会话令牌也可以使用(8 小时有效期)。但不要将其放入长期有效的 MCP 配置中。
v0.2 预览
支持 PKCE 的 OAuth 2.1 已在路线图中,届时 MCP 客户端可以自行运行同意流程。在此之前,上述 API 密钥流程是推荐方式。
验证是否正常工作
安装后,向你的 MCP 客户端提问:
"2026 年加州阿拉米达县的合规贷款上限是多少?"
你应该会收到类似这样的回复:
$1,229,100 (FHFA 2026 Conforming Loan Limits, announced 2025‑11‑26).
High‑balance HCOL county. Anything above this is a jumbo loan.如果没有,请检查:
令牌是否过期——Cal 会话令牌默认有效期为 24 小时。通过
/auth/login刷新。网络是否可以访问
https://api.askcal.io。你的 MCP 客户端是否已加载配置——编辑后请重启。
配置
环境变量 | 必填 | 默认值 | 说明 |
| 是 | — | 来自 |
| 否 |
| 仅当你要针对生产环境以外的 Cal 实例进行测试时才需要覆盖。 |
数据范围
调用范围限定为与你的令牌关联的列表。如果你是拥有精选批准贷款机构列表的经纪人贷款专员,结果将过滤为你可以实际使用的贷款机构。Cal 不会跨批准列表泄露数据。创始人的演示列表范围最广,包含 166 家贷款机构。
许可证
MIT。包装器代码是开源的。Cal 精选的贷款机构库、DPA 计划数据和贷款机构情报均为专有数据,保留在 API 之后。
关于 Cal
Cal 是位于 askcal.io 的 AI 抵押贷款平台,由一位拥有 17 年行业经验的人士(NMLS 275073)为在职经纪人打造。此版本的生产状态:
166 家批发贷款机构、1,424 份已索引的计划文件、250 个 DPA 计划、覆盖 50 个州
4 名贷款专员参与试点,软启动前 24 小时内回答了 342 个问题
路线图
v0.1 - 7 个工具、API 密钥认证、stdio 传输、npm + GitHub。
v0.2 (当前) - ValueGuard 估值(
cal_valuation),共 8 个工具;已指向 askcal.io API。v0.3 - 支持 PKCE 的 OAuth 2.1。
.dxtClaude Desktop 捆绑包。Optimal Blue MCP 配套服务器。v0.4 - 可流式 HTTP 传输。公共机构 MCP(Fannie Selling Guide、Freddie Guide、FHA Handbook 4000.1、VA Handbook 26-7、FHFA 限额、HUD AMI)。
v0.5 - Encompass MCP 配套(LOS 读写)。DocuSign MCP 配套。一个提示词即可跨 CRM + 电子邮件 + 日历 + 定价 + 数据库执行。
贡献
欢迎提交 Issue 和 PR。上述路线图即优先级顺序;如果你想认领其中一项,请先开一个 Issue,以免重复工作。
联系方式
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