LenDb.ai
Server Details
Find US mortgage loan officers for a borrower's situation and place. Free, lender-neutral, sourced.
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- LenDb.ai
TDQS
Scored across 5 tools
Each tool has a clearly stated trigger, and the descriptions explicitly delimit boundaries (e.g. list_specialties returns slugs, explain_specialty explains one). Two mild overlaps remain: find_loan_officers can return a person's profile via profile_match, which duplicates get_loan_officer, and both specialty tools surface specialty metadata. These are documented fallbacks rather than true collisions, so misselection is unlikely.
All five names follow a clean snake_case verb_noun pattern: explain_specialty, find_loan_officers, get_lender, get_loan_officer, list_specialties. The verb choice maps predictably to operation type (get = fetch one entity, list = enumerate, find = ranked search, explain = narrative detail). No camelCase or naming drift.
Five tools is on the lean side but each one earns its place and covers a distinct resource (specialty, officer, lender). Nothing feels padded, though a directory server of this scope might reasonably carry one or two more lookup entry points. Slightly under-scoped rather than bloated.
Read coverage across the three core entities (specialties, loan officers, lenders) is thorough, with rich retrieval by ID, name, and situation+location. The notable gap is that get_lender only works with a name or NMLS ID, so an agent cannot browse lenders by state, program, or geography the way it can with officers. Minor functional gaps otherwise, and the documented not_yet_verified / unassessed_requirements fields mitigate dead ends.
Available Tools
5 toolsexplain_specialtyExplain a mortgage specialtyARead-onlyIdempotentInspect
Use this when someone asks what a mortgage loan type or borrower situation means, such as a DSCR loan, a bank statement loan, an ITIN loan, a non-warrantable condo or an FHA loan. Returns, for one specialty slug, what it is, why it can be hard to get done, the questions a borrower should ask a loan officer about it, its synonyms and a canonical_url.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | One of: condo, condo-non-warrantable, co-op, multi-family-2-4, manufactured, rural, new-construction, mixed-use, condotel, vacation-home, fha, va, usda, jumbo, non-qm, dscr, bank-statement, reverse, renovation, construction, fix-and-flip, heloc, down-payment-assistance, crypto-mortgage, self-employed, first-time-buyer, investor, refinance, permanent-resident, foreign-national, itin, low-credit, recent-credit-event, physician, 1099-income, asset-based |
Output Schema
| Name | Required | Description |
|---|---|---|
| slug | Yes | |
| label | Yes | |
| api_url | Yes | |
| category | Yes | |
| why_hard | Yes | |
| description | Yes | |
| canonical_url | Yes | |
| questions_to_ask | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and a closed world, so the safety profile is fully covered and the description does not contradict it. The description adds a return-content inventory (definition, difficulty, questions to ask, synonyms, canonical_url), but since an output schema exists this mostly restates structured data rather than disclosing new behavior such as invalid-slug handling or caching.
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?
Two sentences, front-loaded with the when-to-use condition followed by the return contract, with zero filler. The example list is dense but each item is a distinct, useful cue rather than redundant restatement.
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 single-parameter read-only lookup with a full output schema, the description covers the trigger, the input vocabulary, and the return shape adequately. The remaining gap is operational: it does not point the agent at list_specialties for discovery or describe the failure mode for an unrecognized slug, which matters given the tool's narrow closed-world scope.
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% and the slug property already enumerates all 36 accepted values, so the baseline is 3. The description earns an extra point by translating colloquial user phrasing ("bank statement loan", "ITIN loan", "non-warrantable condo") into slug-like terms, helping the agent map a natural-language question to the right slug, though it does not state casing or format expectations explicitly.
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 states a specific verb (explain) and resource (a mortgage specialty slug) and enumerates concrete examples of the domain objects (DSCR loan, bank statement loan, ITIN loan, non-warrantable condo, FHA loan). An agent can tell this is a lookup/explanation tool rather than a search or retrieval-by-id tool, though it never names its siblings (list_specialties, get_lender) to sharpen the distinction.
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?
"Use this when someone asks what a mortgage loan type or borrower situation means" gives a clear triggering condition with illustrative phrasings that match real user questions. It stops short of exclusions — it never says to call list_specialties first to discover valid slugs, nor what to do when the question spans multiple specialties.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_loan_officersFind mortgage loan officersARead-onlyIdempotentInspect
Use this when someone wants a US mortgage loan officer (or mortgage broker or lender contact) for a specific situation and place: for example an FHA, VA, USDA, jumbo, DSCR or ITIN loan, a first-time buyer, a self-employed borrower who needs a bank statement loan, a non-warrantable condo or a duplex, or a Spanish-speaking loan officer near a city, ZIP, region or state. Searches LenDb, an independent, lender-neutral database of US loan officers (coverage is partial), and returns a ranked list. Each result has the person's name, NMLS ID, lender, office location, distance_mi, license_check for the property state (confirmed, lender_reported or federal_registration), match_status (exact, or partial with unconfirmed_specialties), matched specialties with a short reason each, last_verified and a canonical_url profile link; detail 'full' returns every field and reason. A city or ZIP keeps offices within 25 miles, widened to 50 or 100 when few are found (search.note); a state alone ranks statewide. Words like 'broker' or 'credit union' rank that kind of lender first. People with no license evidence for the state are listed separately in not_yet_verified. Also returns ambiguous_location when a city name fits several places, unassessed_requirements for parts of the situation LenDb cannot check, and citation_guidance. If situation is just a loan officer's name (the name on their lender page or the name a state regulator licenses, e.g. 'Nicholas Bucca' for Nic Bucca), it returns that profile in profile_match. Phone numbers and email addresses are never returned.
| Name | Required | Description | Default |
|---|---|---|---|
| debug | No | Also return how the query was parsed (debug.parsed, debug.filters). Default false. | |
| limit | No | Max results, default 10. | |
| detail | No | 'compact' (default): per person name, NMLS ID, canonical_url, lender, office, license evidence for the property state, matched specialties with one short reason each and the last verified date. 'full': every field, all reasons and the matching method. | |
| language | No | Language the borrower wants to be served in. Accepts an ISO 639-1 code ('es'), a BCP 47 tag ('es-MX', 'zh-TW'), an ISO 639-2/3 code ('spa'), an English name ('Spanish') or a native name ('español', '中文', '한국어', 'tiếng Việt'). A hard filter: every result speaks it. An unsupported language returns an error listing the supported codes (see list_specialties). | |
| location | Yes | Where the property is: 'City, ST', a city, a 5-digit ZIP, a region ('Bay Area'), or a US state. | |
| situation | Yes | The borrower's situation in plain words: property type, loan program, income type, credit, language, kind of lender. Example: 'duplex, self-employed, bank statement loan'. | |
| fha_approved | No | Only loan officers whose current lender is FHA-approved per HUD's FHA Single Family Portfolio Snapshot data (the lender, not the person). Default false. Without it, an FHA search still ranks HUD-approved lenders' people first when all else is equal. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| debug | No | Only when the call set debug: true. |
| detail | No | Present on compact results; detail 'full' returns rows with every field. |
| method | No | How matching works (detail 'full'; compact results link method_url). |
| notice | No | |
| sample | No | True when the data is fictional sample data. |
| search | Yes | |
| related | No | |
| results | Yes | |
| method_url | No | |
| lender_level | No | |
| canonical_url | Yes | The same search on the LenDb API. |
| profile_match | No | |
| fallback_applied | Yes | |
| not_yet_verified | No | |
| citation_guidance | Yes | |
| exact_match_count | Yes | |
| ambiguous_location | No | |
| all_terms_understood | Yes | |
| requested_specialties | Yes | |
| unassessed_requirements | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, and the description still adds substantial non-obvious context: partial coverage of LenDb, ranking rules, distance radius auto-widening from 25 to 50/100 miles, separate not_yet_verified bucket, ambiguous_location and unassessed_requirements signals, and the guarantee that phone/email are never returned. That is far beyond what the annotations convey.
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 opening clause is front-loaded with the trigger and the rest is dense but purposeful; the scenario enumeration and the edge-case returns (not_yet_verified, ambiguous_location) each carry routing value. It loses a point because the field-by-field enumeration of result contents partly duplicates what the output schema and the 'detail' parameter description already state.
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 7-parameter, open-world-ish search tool with an output schema, the description covers what an agent still needs: source and coverage limits, ranking and radius behavior, the unverified-results caveat, ambiguity handling, and the name-lookup escape hatch. Nothing an agent needs in order to call it correctly or interpret results is missing.
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 the baseline is 3, but the description adds semantics the schema does not: a city/ZIP constrains offices to 25 miles widened to 50 or 100 with a search.note, a state alone ranks statewide, and 'situation' may hold a person's licensed name to yield a profile_match. These behaviors materially change how an agent should phrase inputs.
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?
States a specific verb and resource ('find/search US mortgage loan officers') and immediately bounds the scope: situation-specific, place-specific, sourced from LenDb, ranked list returned. It is clearly distinct from the profile-lookup siblings (get_loan_officer, get_lender) because it returns a ranked list rather than a single record.
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?
'Use this when someone wants a US mortgage loan officer ... for a specific situation and place' gives a concrete trigger, backed by an unusually rich set of example scenarios (FHA, VA, DSCR, ITIN, bank statement, Spanish-speaking) that show the intended query shape. It does not explicitly say when to prefer get_loan_officer over this tool, though the name-in-situation -> profile_match note effectively covers that case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_lenderGet a mortgage lenderARead-onlyIdempotentInspect
Use this when you need facts about a US mortgage lender, bank, credit union or mortgage broker company, by its company NMLS ID or by name (a partial name works). Returns the lender's type (bank, credit_union, imb, broker, other), headquarters state, website, the loan programs it offers (such as FHA, VA, jumbo or DSCR), program_approvals from agency data (FHA approval per HUD, with the month of loans it covers; absent means no HUD match on file, not that the lender lacks approval), activity (home loans it funded per HMDA, FFIEC/CFPB: counts by year, loan type and purpose, with as_of_year and source_url; cite it as 'HMDA, FFIEC/CFPB, '; includes_brokered true means the counts include loans brokers originated; absent means no HMDA match on file, never that the lender makes no loans), how many of its loan officers LenDb lists, disciplinary_check, the date the record was last verified and a canonical_url.
| Name | Required | Description | Default |
|---|---|---|---|
| nmls_id_or_name | Yes | Company NMLS ID (digits) or all or part of the company name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| lender | Yes | |
| notice | No | |
| sample | No | True when the data is fictional sample data. |
| canonical_url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), but the description adds substantive semantics: 'absent means no HUD match on file, not that the lender lacks approval', the same caveat for HMDA, and the meaning of includes_brokered=true. These absence-vs-negative distinctions are exactly the kind of behavioral context annotations cannot express.
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?
It is front-loaded with the usage clause, and the citation-format and absence-semantics fragments earn their place. However, the long middle enumerates return fields (type, HQ state, website, programs, activity counts, disciplinary_check, verified date, canonical_url) that an output schema already defines, making one run-on sentence heavier than necessary.
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 an output schema present, return values need not be described, yet the critical non-schema caveats (absence meaning, HMDA attribution format) are included, so an agent can call and interpret the result correctly. It is slightly over-complete on return fields, but nothing essential is missing.
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?
The single parameter has 100% schema coverage and the schema already documents 'digits or all or part of the company name', which is precisely what 'a partial name works' restates. The description adds no new syntax or format guidance beyond the schema, so the baseline 3 applies.
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?
States a specific verb (get facts about) plus a precisely scoped resource ('a US mortgage lender, bank, credit union or mortgage broker company') and the two lookup keys. The domain is cleanly distinguished from the loan-officer and specialty siblings by naming the entity type it returns facts about.
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?
'Use this when you need facts about a US mortgage lender... by its company NMLS ID or by name (a partial name works)' gives clear triggering conditions and lookup modes. It stops short of naming the alternatives (get_loan_officer, find_loan_officers) or stating when to prefer them, so it is context without explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_loan_officerGet a loan officer by NMLS IDARead-onlyIdempotentInspect
Use this when you have a mortgage loan officer's individual NMLS ID and need their full profile. Returns LenDb's sourced record: name, title, current lender and branch, employment history, state licenses with license confidence, specialties (such as FHA, VA, bank statement or DSCR) with the evidence for each, languages spoken, stated experience, the earliest state license record, public links (such as their page on the lender's site), disciplinary_check ('not_checked' means LenDb has not yet checked regulator records), the date the record was last verified and a canonical_url. US only. Phone numbers and email addresses are not returned; the LenDb profile page shows them after a human check.
| Name | Required | Description | Default |
|---|---|---|---|
| nmls_id | Yes | Individual NMLS ID, digits only, e.g. 452476. |
Output Schema
| Name | Required | Description |
|---|---|---|
| notice | No | |
| sample | No | True when the data is fictional sample data. |
| loan_officer | Yes | |
| canonical_url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description layers on real behavioral context: US-only scope, the meaning of disciplinary_check='not_checked', the last-verified date, and an explicit statement that phone/email are withheld pending human check. That is meaningful disclosure beyond what the structured fields provide.
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 usage trigger is front-loaded and the response inventory is packed into one dense sentence with no filler. It is on the long side and the field enumeration reads as a run-on, but every clause conveys usable 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?
For a single-parameter lookup tool this is complete: it covers the identity model, geographic scope, data provenance ('LenDb's sourced record'), known gaps (no phone/email, unchecked discipline), and freshness. The output schema exists, so the return-field listing is a bonus rather than a necessity.
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% and the single parameter is fully documented in the schema (digits only, example 452476). The description only restates that the ID is the individual officer's NMLS ID, adding marginal meaning over the schema — the baseline 3 applies.
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?
States a specific verb and resource ('Get a loan officer') keyed by the identifying attribute ('by NMLS ID'), which cleanly separates it from the sibling find_loan_officers search tool and from get_lender. An agent knows exactly what entity this returns without opening the schema.
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?
Gives a clear trigger condition: use it 'when you have a mortgage loan officer's individual NMLS ID and need their full profile' — implying a known-ID lookup rather than a search. It does not explicitly name find_loan_officers as the alternative for name/state lookups, so the routing guidance is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_specialtiesList mortgage specialtiesARead-onlyIdempotentInspect
Use this when you need the mortgage situations LenDb can match on. Returns every specialty with its slug, category (property type, loan program or borrower situation), label, one-line description and canonical_url: for example FHA, VA, USDA, jumbo, DSCR, bank statement, ITIN, self-employed, first-time buyer, non-warrantable condo, multi-family 2-4 units and reverse mortgage. Also returns the supported languages as ISO 639-1 codes with names.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| languages | Yes | ISO 639-1 code to language name. |
| specialties | Yes | |
| canonical_url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds the completeness guarantee ('every specialty', i.e. no filtering or pagination) and notes that supported languages are included, which is modest extra context rather than rich behavioral disclosure.
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?
Front-loaded with the usage condition, followed by the return contract; both sentences earn their place. The long enumeration of example specialties (FHA, VA, USDA, jumbo, DSCR...) is helpful for semantic matching but is the wordiest part of the definition.
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 zero-parameter, read-only listing tool with full annotations and an output schema, the description supplies everything an agent needs: when to call it, that the result is exhaustive, and the shape of each entry. Return-value detail is technically redundant with the output schema but does not leave any gap.
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?
The tool takes zero parameters, so the schema carries no semantics to clarify and the baseline of 4 applies. Nothing in the description is needed or misleading on this dimension.
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?
States a specific verb and resource ('Returns every specialty') and enumerates exactly what comes back: slug, category, label, one-line description and canonical_url. The scope word 'every' plus the use-case framing ('the mortgage situations LenDb can match on') separates it from the single-item sibling explain_specialty without the agent needing to open either schema.
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?
'Use this when you need the mortgage situations LenDb can match on' gives an explicit trigger condition. However, it never names an alternative (e.g. explain_specialty for one specialty) or states when not to use it, so the routing guidance is clear but not complete.
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
- Changed
explain_specialty1 field changed- changed
Input schema / properties / slug / descriptionPrevious value: -"One of: condo, condo-non-warrantable, co-op, multi-family-2-4, manufactured, rural, new-construction, mixed-use, condotel, vacation-home, fha, va, usda, jumbo, non-qm, dscr, bank-statement, reverse, renovation, construction, heloc, down-payment-assistance, crypto-mortgage, self-employed, first-time-buyer, investor, refinance, permanent-resident, foreign-national, itin, low-credit, recent-credit-event, physician, 1099-income, asset-based"New value: +"One of: condo, condo-non-warrantable, co-op, multi-family-2-4, manufactured, rural, new-construction, mixed-use, condotel, vacation-home, fha, va, usda, jumbo, non-qm, dscr, bank-statement, reverse, renovation, construction, fix-and-flip, heloc, down-payment-assistance, crypto-mortgage, self-employed, first-time-buyer, investor, refinance, permanent-resident, foreign-national, itin, low-credit, recent-credit-event, physician, 1099-income, asset-based"
1 tool update
- Changed
find_loan_officers25 fields changed- added
Input schema / properties / detailAdded value: +{ + "description": "'compact' (default): per person name, NMLS ID, canonical_url, lender, office, license evidence for the property state, matched specialties with one short reason each and the last verified date. 'full': every field, all reasons and the matching method.", + "enum": [ + "compact", + "full" + ], + "type": "string" +} - added
Output schema / properties / detailAdded value: +{ + "const": "compact", + "description": "Present on compact results; detail 'full' returns rows with every field.", + "type": "string" +} - removed
Output schema / properties / lender_level / properties / results / items / additionalPropertiesRemoved value: -{} - added
Output schema / properties / lender_level / properties / results / items / anyOfAdded value: +[ + { + "additionalProperties": {}, + "properties": { + "canonical_url": { + "type": "string" + }, + "distance_mi": { + "type": [ + "number", + "null" + ] + }, + "license_check": { + "additionalProperties": {}, + "properties": { + "confidence": { + "enum": [ + "confirmed", + "lender_reported", + "federal_registration", + "unknown" + ], + "type": "string" + }, + "label": { + "type": "string" + }, + "state": { + "type": "string" + } + }, + "required": [ + "state", + "confidence", + "label" + ], + "type": "object" + }, + "loan_officer": { + "additionalProperties": {}, + "properties": { + "branch": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "city": { + "type": [ + "string", + "null" + ] + }, + "state": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "city", + "state" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "canonical_url": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "languages": { + "items": { + "type": "string" + }, + "type": "array" + }, + "lender": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "canonical_url": { + "type": "string" + }, + "name": { + "type": "string" + }, + "nmls_id": { + "type": "number" + } + }, + "required": [ + "nmls_id", + "name", + "canonical_url" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "lender_profile_url": { + "type": [ + "string", + "null" + ] + }, + "licensed_states": { + "items": { + "type": "string" + }, + "type": "array" + }, + "nmls_id": { + "type": "number" + } + }, + "required": [ + "nmls_id", + "full_name", + "canonical_url" + ], + "type": "object" + }, + "match_level": { + "enum": [ + "officer", + "lender" + ], + "type": "string" + }, + "match_status": { + "enum": [ + "exact", + "partial" + ], + "type": "string" + }, + "matched_specialties": { + "items": { + "type": "string" + }, + "type": "array" + }, + "office_location_unknown": { + "type": "boolean" + }, + "rank": { + "type": "number" + }, + "reasons": { + "items": { + "type": "string" + }, + "type": "array" + }, + "unconfirmed_specialties": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "rank", + "loan_officer", + "reasons", + "canonical_url" + ], + "type": "object" + }, + { + "additionalProperties": {}, + "properties": { + "canonical_url": { + "type": "string" + }, + "distance_mi": { + "type": [ + "number", + "null" + ] + }, + "full_name": { + "type": "string" + }, + "last_verified": { + "type": [ + "string", + "null" + ] + }, + "lender": { + "type": [ + "string", + "null" + ] + }, + "license_check": { + "additionalProperties": {}, + "properties": { + "confidence": { + "enum": [ + "confirmed", + "lender_reported", + "federal_registration", + "unknown" + ], + "type": "string" + }, + "state": { + "type": "string" + }, + "verified_at": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "state", + "confidence", + "verified_at" + ], + "type": "object" + }, + "licensed_states": { + "description": "Licensed or eligible states the query is about, not every state on file.", + "items": { + "type": "string" + }, + "type": "array" + }, + "match_level": { + "enum": [ + "officer", + "lender" + ], + "type": "string" + }, + "match_status": { + "enum": [ + "exact", + "partial" + ], + "type": "string" + }, + "nmls_id": { + "type": "number" + }, + "office": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "city": { + "type": [ + "string", + "null" + ] + }, + "state": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "city", + "state" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "office_location_unknown": { + "type": "boolean" + }, + "rank": { + "type": "number" + }, + "specialties": { + "items": { + "additionalProperties": {}, + "properties": { + "reason": { + "type": "string" + }, + "slug": { + "type": "string" + } + }, + "required": [ + "slug", + "reason" + ], + "type": "object" + }, + "type": "array" + }, + "unconfirmed_specialties": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "rank", + "nmls_id", + "full_name", + "canonical_url", + "lender", + "office", + "licensed_states", + "specialties", + "last_verified" + ], + "type": "object" + } +] - removed
Output schema / properties / lender_level / properties / results / items / propertiesRemoved value: -{ - "canonical_url": { - "type": "string" - }, - "distance_mi": { - "type": [ - "number", - "null" - ] - }, - "license_check": { - "additionalProperties": {}, - "properties": { - "confidence": { - "enum": [ - "confirmed", - "lender_reported", - "federal_registration", - "unknown" - ], - "type": "string" - }, - "label": { - "type": "string" - }, - "state": { - "type": "string" - } - }, - "required": [ - "state", - "confidence", - "label" - ], - "type": "object" - }, - "loan_officer": { - "additionalProperties": {}, - "properties": { - "branch": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "city": { - "type": [ - "string", - "null" - ] - }, - "state": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "city", - "state" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "canonical_url": { - "type": "string" - }, - "full_name": { - "type": "string" - }, - "languages": { - "items": { - "type": "string" - }, - "type": "array" - }, - "lender": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "canonical_url": { - "type": "string" - }, - "name": { - "type": "string" - }, - "nmls_id": { - "type": "number" - } - }, - "required": [ - "nmls_id", - "name", - "canonical_url" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "lender_profile_url": { - "type": [ - "string", - "null" - ] - }, - "licensed_states": { - "items": { - "type": "string" - }, - "type": "array" - }, - "nmls_id": { - "type": "number" - } - }, - "required": [ - "nmls_id", - "full_name", - "canonical_url" - ], - "type": "object" - }, - "match_level": { - "enum": [ - "officer", - "lender" - ], - "type": "string" - }, - "match_status": { - "enum": [ - "exact", - "partial" - ], - "type": "string" - }, - "matched_specialties": { - "items": { - "type": "string" - }, - "type": "array" - }, - "office_location_unknown": { - "type": "boolean" - }, - "rank": { - "type": "number" - }, - "reasons": { - "items": { - "type": "string" - }, - "type": "array" - }, - "unconfirmed_specialties": { - "items": { - "type": "string" - }, - "type": "array" - } -} - removed
Output schema / properties / lender_level / properties / results / items / requiredRemoved value: -[ - "rank", - "loan_officer", - "reasons", - "canonical_url" -] - removed
Output schema / properties / lender_level / properties / results / items / typeRemoved value: -"object" - added
Output schema / properties / method / descriptionAdded value: +"How matching works (detail 'full'; compact results link method_url)." - added
Output schema / properties / method_urlAdded value: +{ + "type": "string" +} - removed
Output schema / properties / not_yet_verified / properties / results / items / additionalPropertiesRemoved value: -{} - added
Output schema / properties / not_yet_verified / properties / results / items / anyOfAdded value: +[ + { + "additionalProperties": {}, + "properties": { + "canonical_url": { + "type": "string" + }, + "distance_mi": { + "type": [ + "number", + "null" + ] + }, + "license_check": { + "additionalProperties": {}, + "properties": { + "confidence": { + "enum": [ + "confirmed", + "lender_reported", + "federal_registration", + "unknown" + ], + "type": "string" + }, + "label": { + "type": "string" + }, + "state": { + "type": "string" + } + }, + "required": [ + "state", + "confidence", + "label" + ], + "type": "object" + }, + "loan_officer": { + "additionalProperties": {}, + "properties": { + "branch": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "city": { + "type": [ + "string", + "null" + ] + }, + "state": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "city", + "state" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "canonical_url": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "languages": { + "items": { + "type": "string" + }, + "type": "array" + }, + "lender": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "canonical_url": { + "type": "string" + }, + "name": { + "type": "string" + }, + "nmls_id": { + "type": "number" + } + }, + "required": [ + "nmls_id", + "name", + "canonical_url" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "lender_profile_url": { + "type": [ + "string", + "null" + ] + }, + "licensed_states": { + "items": { + "type": "string" + }, + "type": "array" + }, + "nmls_id": { + "type": "number" + } + }, + "required": [ + "nmls_id", + "full_name", + "canonical_url" + ], + "type": "object" + }, + "match_level": { + "enum": [ + "officer", + "lender" + ], + "type": "string" + }, + "match_status": { + "enum": [ + "exact", + "partial" + ], + "type": "string" + }, + "matched_specialties": { + "items": { + "type": "string" + }, + "type": "array" + }, + "office_location_unknown": { + "type": "boolean" + }, + "rank": { + "type": "number" + }, + "reasons": { + "items": { + "type": "string" + }, + "type": "array" + }, + "unconfirmed_specialties": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "rank", + "loan_officer", + "reasons", + "canonical_url" + ], + "type": "object" + }, + { + "additionalProperties": {}, + "properties": { + "canonical_url": { + "type": "string" + }, + "distance_mi": { + "type": [ + "number", + "null" + ] + }, + "full_name": { + "type": "string" + }, + "last_verified": { + "type": [ + "string", + "null" + ] + }, + "lender": { + "type": [ + "string", + "null" + ] + }, + "license_check": { + "additionalProperties": {}, + "properties": { + "confidence": { + "enum": [ + "confirmed", + "lender_reported", + "federal_registration", + "unknown" + ], + "type": "string" + }, + "state": { + "type": "string" + }, + "verified_at": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "state", + "confidence", + "verified_at" + ], + "type": "object" + }, + "licensed_states": { + "description": "Licensed or eligible states the query is about, not every state on file.", + "items": { + "type": "string" + }, + "type": "array" + }, + "match_level": { + "enum": [ + "officer", + "lender" + ], + "type": "string" + }, + "match_status": { + "enum": [ + "exact", + "partial" + ], + "type": "string" + }, + "nmls_id": { + "type": "number" + }, + "office": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "city": { + "type": [ + "string", + "null" + ] + }, + "state": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "city", + "state" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "office_location_unknown": { + "type": "boolean" + }, + "rank": { + "type": "number" + }, + "specialties": { + "items": { + "additionalProperties": {}, + "properties": { + "reason": { + "type": "string" + }, + "slug": { + "type": "string" + } + }, + "required": [ + "slug", + "reason" + ], + "type": "object" + }, + "type": "array" + }, + "unconfirmed_specialties": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "rank", + "nmls_id", + "full_name", + "canonical_url", + "lender", + "office", + "licensed_states", + "specialties", + "last_verified" + ], + "type": "object" + } +] - removed
Output schema / properties / not_yet_verified / properties / results / items / propertiesRemoved value: -{ - "canonical_url": { - "type": "string" - }, - "distance_mi": { - "type": [ - "number", - "null" - ] - }, - "license_check": { - "additionalProperties": {}, - "properties": { - "confidence": { - "enum": [ - "confirmed", - "lender_reported", - "federal_registration", - "unknown" - ], - "type": "string" - }, - "label": { - "type": "string" - }, - "state": { - "type": "string" - } - }, - "required": [ - "state", - "confidence", - "label" - ], - "type": "object" - }, - "loan_officer": { - "additionalProperties": {}, - "properties": { - "branch": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "city": { - "type": [ - "string", - "null" - ] - }, - "state": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "city", - "state" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "canonical_url": { - "type": "string" - }, - "full_name": { - "type": "string" - }, - "languages": { - "items": { - "type": "string" - }, - "type": "array" - }, - "lender": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "canonical_url": { - "type": "string" - }, - "name": { - "type": "string" - }, - "nmls_id": { - "type": "number" - } - }, - "required": [ - "nmls_id", - "name", - "canonical_url" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "lender_profile_url": { - "type": [ - "string", - "null" - ] - }, - "licensed_states": { - "items": { - "type": "string" - }, - "type": "array" - }, - "nmls_id": { - "type": "number" - } - }, - "required": [ - "nmls_id", - "full_name", - "canonical_url" - ], - "type": "object" - }, - "match_level": { - "enum": [ - "officer", - "lender" - ], - "type": "string" - }, - "match_status": { - "enum": [ - "exact", - "partial" - ], - "type": "string" - }, - "matched_specialties": { - "items": { - "type": "string" - }, - "type": "array" - }, - "office_location_unknown": { - "type": "boolean" - }, - "rank": { - "type": "number" - }, - "reasons": { - "items": { - "type": "string" - }, - "type": "array" - }, - "unconfirmed_specialties": { - "items": { - "type": "string" - }, - "type": "array" - } -} - removed
Output schema / properties / not_yet_verified / properties / results / items / requiredRemoved value: -[ - "rank", - "loan_officer", - "reasons", - "canonical_url" -] - removed
Output schema / properties / not_yet_verified / properties / results / items / typeRemoved value: -"object" - removed
Output schema / properties / related / properties / results / items / additionalPropertiesRemoved value: -{} - added
Output schema / properties / related / properties / results / items / anyOfAdded value: +[ + { + "additionalProperties": {}, + "properties": { + "canonical_url": { + "type": "string" + }, + "distance_mi": { + "type": [ + "number", + "null" + ] + }, + "license_check": { + "additionalProperties": {}, + "properties": { + "confidence": { + "enum": [ + "confirmed", + "lender_reported", + "federal_registration", + "unknown" + ], + "type": "string" + }, + "label": { + "type": "string" + }, + "state": { + "type": "string" + } + }, + "required": [ + "state", + "confidence", + "label" + ], + "type": "object" + }, + "loan_officer": { + "additionalProperties": {}, + "properties": { + "branch": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "city": { + "type": [ + "string", + "null" + ] + }, + "state": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "city", + "state" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "canonical_url": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "languages": { + "items": { + "type": "string" + }, + "type": "array" + }, + "lender": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "canonical_url": { + "type": "string" + }, + "name": { + "type": "string" + }, + "nmls_id": { + "type": "number" + } + }, + "required": [ + "nmls_id", + "name", + "canonical_url" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "lender_profile_url": { + "type": [ + "string", + "null" + ] + }, + "licensed_states": { + "items": { + "type": "string" + }, + "type": "array" + }, + "nmls_id": { + "type": "number" + } + }, + "required": [ + "nmls_id", + "full_name", + "canonical_url" + ], + "type": "object" + }, + "match_level": { + "enum": [ + "officer", + "lender" + ], + "type": "string" + }, + "match_status": { + "enum": [ + "exact", + "partial" + ], + "type": "string" + }, + "matched_specialties": { + "items": { + "type": "string" + }, + "type": "array" + }, + "office_location_unknown": { + "type": "boolean" + }, + "rank": { + "type": "number" + }, + "reasons": { + "items": { + "type": "string" + }, + "type": "array" + }, + "unconfirmed_specialties": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "rank", + "loan_officer", + "reasons", + "canonical_url" + ], + "type": "object" + }, + { + "additionalProperties": {}, + "properties": { + "canonical_url": { + "type": "string" + }, + "distance_mi": { + "type": [ + "number", + "null" + ] + }, + "full_name": { + "type": "string" + }, + "last_verified": { + "type": [ + "string", + "null" + ] + }, + "lender": { + "type": [ + "string", + "null" + ] + }, + "license_check": { + "additionalProperties": {}, + "properties": { + "confidence": { + "enum": [ + "confirmed", + "lender_reported", + "federal_registration", + "unknown" + ], + "type": "string" + }, + "state": { + "type": "string" + }, + "verified_at": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "state", + "confidence", + "verified_at" + ], + "type": "object" + }, + "licensed_states": { + "description": "Licensed or eligible states the query is about, not every state on file.", + "items": { + "type": "string" + }, + "type": "array" + }, + "match_level": { + "enum": [ + "officer", + "lender" + ], + "type": "string" + }, + "match_status": { + "enum": [ + "exact", + "partial" + ], + "type": "string" + }, + "nmls_id": { + "type": "number" + }, + "office": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "city": { + "type": [ + "string", + "null" + ] + }, + "state": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "city", + "state" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "office_location_unknown": { + "type": "boolean" + }, + "rank": { + "type": "number" + }, + "specialties": { + "items": { + "additionalProperties": {}, + "properties": { + "reason": { + "type": "string" + }, + "slug": { + "type": "string" + } + }, + "required": [ + "slug", + "reason" + ], + "type": "object" + }, + "type": "array" + }, + "unconfirmed_specialties": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "rank", + "nmls_id", + "full_name", + "canonical_url", + "lender", + "office", + "licensed_states", + "specialties", + "last_verified" + ], + "type": "object" + } +] - removed
Output schema / properties / related / properties / results / items / propertiesRemoved value: -{ - "canonical_url": { - "type": "string" - }, - "distance_mi": { - "type": [ - "number", - "null" - ] - }, - "license_check": { - "additionalProperties": {}, - "properties": { - "confidence": { - "enum": [ - "confirmed", - "lender_reported", - "federal_registration", - "unknown" - ], - "type": "string" - }, - "label": { - "type": "string" - }, - "state": { - "type": "string" - } - }, - "required": [ - "state", - "confidence", - "label" - ], - "type": "object" - }, - "loan_officer": { - "additionalProperties": {}, - "properties": { - "branch": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "city": { - "type": [ - "string", - "null" - ] - }, - "state": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "city", - "state" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "canonical_url": { - "type": "string" - }, - "full_name": { - "type": "string" - }, - "languages": { - "items": { - "type": "string" - }, - "type": "array" - }, - "lender": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "canonical_url": { - "type": "string" - }, - "name": { - "type": "string" - }, - "nmls_id": { - "type": "number" - } - }, - "required": [ - "nmls_id", - "name", - "canonical_url" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "lender_profile_url": { - "type": [ - "string", - "null" - ] - }, - "licensed_states": { - "items": { - "type": "string" - }, - "type": "array" - }, - "nmls_id": { - "type": "number" - } - }, - "required": [ - "nmls_id", - "full_name", - "canonical_url" - ], - "type": "object" - }, - "match_level": { - "enum": [ - "officer", - "lender" - ], - "type": "string" - }, - "match_status": { - "enum": [ - "exact", - "partial" - ], - "type": "string" - }, - "matched_specialties": { - "items": { - "type": "string" - }, - "type": "array" - }, - "office_location_unknown": { - "type": "boolean" - }, - "rank": { - "type": "number" - }, - "reasons": { - "items": { - "type": "string" - }, - "type": "array" - }, - "unconfirmed_specialties": { - "items": { - "type": "string" - }, - "type": "array" - } -} - removed
Output schema / properties / related / properties / results / items / requiredRemoved value: -[ - "rank", - "loan_officer", - "reasons", - "canonical_url" -] - removed
Output schema / properties / related / properties / results / items / typeRemoved value: -"object" - removed
Output schema / properties / results / items / additionalPropertiesRemoved value: -{} - added
Output schema / properties / results / items / anyOfAdded value: +[ + { + "additionalProperties": {}, + "properties": { + "canonical_url": { + "type": "string" + }, + "distance_mi": { + "type": [ + "number", + "null" + ] + }, + "license_check": { + "additionalProperties": {}, + "properties": { + "confidence": { + "enum": [ + "confirmed", + "lender_reported", + "federal_registration", + "unknown" + ], + "type": "string" + }, + "label": { + "type": "string" + }, + "state": { + "type": "string" + } + }, + "required": [ + "state", + "confidence", + "label" + ], + "type": "object" + }, + "loan_officer": { + "additionalProperties": {}, + "properties": { + "branch": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "city": { + "type": [ + "string", + "null" + ] + }, + "state": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "city", + "state" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "canonical_url": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "languages": { + "items": { + "type": "string" + }, + "type": "array" + }, + "lender": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "canonical_url": { + "type": "string" + }, + "name": { + "type": "string" + }, + "nmls_id": { + "type": "number" + } + }, + "required": [ + "nmls_id", + "name", + "canonical_url" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "lender_profile_url": { + "type": [ + "string", + "null" + ] + }, + "licensed_states": { + "items": { + "type": "string" + }, + "type": "array" + }, + "nmls_id": { + "type": "number" + } + }, + "required": [ + "nmls_id", + "full_name", + "canonical_url" + ], + "type": "object" + }, + "match_level": { + "enum": [ + "officer", + "lender" + ], + "type": "string" + }, + "match_status": { + "enum": [ + "exact", + "partial" + ], + "type": "string" + }, + "matched_specialties": { + "items": { + "type": "string" + }, + "type": "array" + }, + "office_location_unknown": { + "type": "boolean" + }, + "rank": { + "type": "number" + }, + "reasons": { + "items": { + "type": "string" + }, + "type": "array" + }, + "unconfirmed_specialties": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "rank", + "loan_officer", + "reasons", + "canonical_url" + ], + "type": "object" + }, + { + "additionalProperties": {}, + "properties": { + "canonical_url": { + "type": "string" + }, + "distance_mi": { + "type": [ + "number", + "null" + ] + }, + "full_name": { + "type": "string" + }, + "last_verified": { + "type": [ + "string", + "null" + ] + }, + "lender": { + "type": [ + "string", + "null" + ] + }, + "license_check": { + "additionalProperties": {}, + "properties": { + "confidence": { + "enum": [ + "confirmed", + "lender_reported", + "federal_registration", + "unknown" + ], + "type": "string" + }, + "state": { + "type": "string" + }, + "verified_at": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "state", + "confidence", + "verified_at" + ], + "type": "object" + }, + "licensed_states": { + "description": "Licensed or eligible states the query is about, not every state on file.", + "items": { + "type": "string" + }, + "type": "array" + }, + "match_level": { + "enum": [ + "officer", + "lender" + ], + "type": "string" + }, + "match_status": { + "enum": [ + "exact", + "partial" + ], + "type": "string" + }, + "nmls_id": { + "type": "number" + }, + "office": { + "anyOf": [ + { + "additionalProperties": {}, + "properties": { + "city": { + "type": [ + "string", + "null" + ] + }, + "state": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "city", + "state" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "office_location_unknown": { + "type": "boolean" + }, + "rank": { + "type": "number" + }, + "specialties": { + "items": { + "additionalProperties": {}, + "properties": { + "reason": { + "type": "string" + }, + "slug": { + "type": "string" + } + }, + "required": [ + "slug", + "reason" + ], + "type": "object" + }, + "type": "array" + }, + "unconfirmed_specialties": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "rank", + "nmls_id", + "full_name", + "canonical_url", + "lender", + "office", + "licensed_states", + "specialties", + "last_verified" + ], + "type": "object" + } +] - removed
Output schema / properties / results / items / propertiesRemoved value: -{ - "canonical_url": { - "type": "string" - }, - "distance_mi": { - "type": [ - "number", - "null" - ] - }, - "license_check": { - "additionalProperties": {}, - "properties": { - "confidence": { - "enum": [ - "confirmed", - "lender_reported", - "federal_registration", - "unknown" - ], - "type": "string" - }, - "label": { - "type": "string" - }, - "state": { - "type": "string" - } - }, - "required": [ - "state", - "confidence", - "label" - ], - "type": "object" - }, - "loan_officer": { - "additionalProperties": {}, - "properties": { - "branch": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "city": { - "type": [ - "string", - "null" - ] - }, - "state": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "city", - "state" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "canonical_url": { - "type": "string" - }, - "full_name": { - "type": "string" - }, - "languages": { - "items": { - "type": "string" - }, - "type": "array" - }, - "lender": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "canonical_url": { - "type": "string" - }, - "name": { - "type": "string" - }, - "nmls_id": { - "type": "number" - } - }, - "required": [ - "nmls_id", - "name", - "canonical_url" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "lender_profile_url": { - "type": [ - "string", - "null" - ] - }, - "licensed_states": { - "items": { - "type": "string" - }, - "type": "array" - }, - "nmls_id": { - "type": "number" - } - }, - "required": [ - "nmls_id", - "full_name", - "canonical_url" - ], - "type": "object" - }, - "match_level": { - "enum": [ - "officer", - "lender" - ], - "type": "string" - }, - "match_status": { - "enum": [ - "exact", - "partial" - ], - "type": "string" - }, - "matched_specialties": { - "items": { - "type": "string" - }, - "type": "array" - }, - "office_location_unknown": { - "type": "boolean" - }, - "rank": { - "type": "number" - }, - "reasons": { - "items": { - "type": "string" - }, - "type": "array" - }, - "unconfirmed_specialties": { - "items": { - "type": "string" - }, - "type": "array" - } -} - removed
Output schema / properties / results / items / requiredRemoved value: -[ - "rank", - "loan_officer", - "reasons", - "canonical_url" -] - removed
Output schema / properties / results / items / typeRemoved value: -"object" - changed
Output schema / requiredPrevious value: -[ - "canonical_url", - "requested_specialties", - "exact_match_count", - "all_terms_understood", - "unassessed_requirements", - "fallback_applied", - "search", - "count", - "results", - "method", - "citation_guidance" -]New value: +[ + "canonical_url", + "requested_specialties", + "exact_match_count", + "all_terms_understood", + "unassessed_requirements", + "fallback_applied", + "search", + "count", + "results", + "citation_guidance" +]
5 tool updates
- First observed
explain_specialty - First observed
find_loan_officers - First observed
get_lender - First observed
get_loan_officer - First observed
list_specialties
Related MCP Connectors
US mortgage rate estimates, lender rankings and research, and US Treasury market data.
US lenders by industry and state, state brokering rules, and the next-best option after a decline.
Live US mortgage, auto, HELOC, personal & deposit rates with evidence, plus who can join each lender
Cited, receipt-backed US home-buying data & calculators — education-only, every number sourced.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceQuery 13,000+ US consumer lenders with eligibility criteria, rates, CFPB complaints, and ratings. Find matching lenders by borrower profile, get full profiles, compare lenders, and check eligibility.MIT
- AlicenseAqualityCmaintenanceEnables AI assistants to answer mortgage-related queries by providing tools for lender search, loan limit lookup, down-payment assistance programs, and more, with data sourced from real wholesale lenders and broker-curated intel.85 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to retrieve verbatim U.S. mortgage regulations with citations and effective dates, verify quotes, and run guided compliance playbooks without sending user documents to the server.MIT
- AlicenseDqualityDmaintenanceProvides 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.7MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.