compare_personal_mortgages
Compare residential mortgage products and rates based on property value, loan amount, and credit score
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Compare residential mortgage products and rates based on property value, loan amount, and credit score
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Changes observed during successful MCP inspections.
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"Input schema / additionalPropertiesAdded value: +trueInput schema / propertiesRemoved value: -{
- "creditScore": {
- "description": "The applicant's estimated credit score (500-850).",
- "maximum": 850,
- "minimum": 500,
- "type": "number"
- },
- "downPayment": {
- "description": "The amount of the down payment in USD.",
- "minimum": 0,
- "type": "number"
- },
- "homePrice": {
- "description": "The purchase price of the home in USD.",
- "maximum": 5000000,
- "minimum": 50000,
- "type": "number"
- },
- "loanAmount": {
- "description": "The desired mortgage loan amount in USD.",
- "maximum": 2000000,
- "minimum": 50000,
- "type": "number"
- },
- "loanType": {
- "description": "The type of mortgage loan.",
- "enum": [
- "conventional",
- "fha",
- "va",
- "jumbo",
- "refinance"
- ],
- "type": "string"
- },
- "propertyType": {
- "description": "The intended use of the property.",
- "enum": [
- "primary",
- "secondary",
- "investment"
- ],
- "type": "string"
- },
- "state": {
- "description": "The state where the property is located (2-letter code).",
- "type": "string"
- }
-}Input schema / requiredRemoved value: -[
- "loanAmount",
- "loanType"
-]Output schema / (root)Previous value: -{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "additionalProperties": false,
- "properties": {
- "metadata": {
- "additionalProperties": false,
- "properties": {
- "queryId": {
- "type": "string"
- },
- "sessionId": {
- "type": "string"
- },
- "timestamp": {
- "type": "string"
- }
- },
- "required": [
- "queryId",
- "timestamp"
- ],
- "type": "object"
- },
- "offers": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "disclaimer": {
- "description": "A disclaimer message, e.g., if the offer is an estimate.",
- "type": "string"
- },
- "fees": {
- "additionalProperties": false,
- "description": "Any fees associated with the loan.",
- "properties": {
- "origination": {
- "additionalProperties": false,
- "description": "Fee charged by the lender for processing the loan.",
- "properties": {
- "amount": {
- "additionalProperties": false,
- "description": "The origination fee amount.",
- "properties": {
- "amount": {
- "type": "number"
- },
- "currency": {
- "const": "USD",
- "type": "string"
- }
- },
- "required": [
- "amount",
- "currency"
- ],
- "type": "object"
- },
- "percentage": {
- "description": "The origination fee as a percentage of the loan amount.",
- "type": "number"
- }
- },
- "required": [
- "amount"
- ],
- "type": "object"
- }
- },
- "type": "object"
- },
- "isEstimate": {
- "description": "Indicates if the offer terms are an estimate and not a firm quote.",
- "type": "boolean"
- },
- "isSecureLendTenant": {
- "description": "Indicates if the offer is from a SecureLend-managed tenant.",
- "type": "boolean"
- },
- "lender": {
- "additionalProperties": false,
- "description": "Details about the lender providing the offer.",
- "properties": {
- "id": {
- "description": "The unique identifier for the lender.",
- "type": "string"
- },
- "name": {
- "description": "The display name of the lender.",
- "type": "string"
- },
- "type": {
- "description": "The type of lending institution (e.g., 'Bank', 'Credit Union').",
- "type": "string"
- }
- },
- "required": [
- "id",
- "name",
- "type"
- ],
- "type": "object"
- },
- "matching": {
- "additionalProperties": false,
- "description": "Information about how the offer was matched.",
- "properties": {
- "matchReasons": {
- "description": "Reasons for the match score.",
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "matchScore": {
- "description": "A score indicating how well the offer matches the search criteria.",
- "type": "number"
- }
- },
- "type": "object"
- },
- "offerId": {
- "description": "A unique identifier for this specific loan offer.",
- "type": "string"
- },
- "process": {
- "additionalProperties": false,
- "description": "Details about the application and funding process.",
- "properties": {
- "applicationMethod": {
- "description": "How to apply for the loan.",
- "enum": [
- "online",
- "phone",
- "in_person"
- ],
- "type": "string"
- },
- "applicationUrl": {
- "description": "The URL to the online application form.",
- "format": "uri",
- "type": "string"
- },
- "fundingSpeed": {
- "additionalProperties": false,
- "description": "Information on how quickly the loan is funded.",
- "properties": {
- "description": {
- "description": "Estimated time to receive funds.",
- "type": "string"
- }
- },
- "required": [
- "description"
- ],
- "type": "object"
- }
- },
- "required": [
- "applicationMethod"
- ],
- "type": "object"
- },
- "product": {
- "additionalProperties": false,
- "description": "Details about the financial product.",
- "properties": {
- "description": {
- "description": "A brief description of the product.",
- "type": "string"
- },
- "name": {
- "description": "The name of the financial product being offered.",
- "type": "string"
- },
- "type": {
- "description": "The category of the financial product.",
- "enum": [
- "INSTALLMENT_LOAN",
- "LINE_OF_CREDIT",
- "SHORT_TERM_CREDIT",
- "BNPL",
- "MORTGAGE",
- "AUTO_LOAN",
- "AUTO_REFINANCE",
- "STUDENT_LOAN",
- "STUDENT_LOAN_REFINANCE",
- "BUSINESS_LOAN",
- "BUSINESS_BANKING",
- "BUSINESS_CREDIT_CARD",
- "PERSONAL_BANKING",
- "SAVINGS_ACCOUNT",
- "PERSONAL_CREDIT_CARD"
- ],
- "type": "string"
- }
- },
- "required": [
- "name",
- "type"
- ],
- "type": "object"
- },
- "terms": {
- "additionalProperties": false,
- "description": "The terms and conditions of the loan offer.",
- "properties": {
- "amount": {
- "additionalProperties": false,
- "description": "The principal loan amount.",
- "properties": {
- "amount": {
- "type": "number"
- },
- "currency": {
- "const": "USD",
- "type": "string"
- }
- },
- "required": [
- "amount",
- "currency"
- ],
- "type": "object"
- },
- "interestRate": {
- "additionalProperties": false,
- "description": "Details about the interest rate.",
- "properties": {
- "apr": {
- "description": "The Annual Percentage Rate, including fees.",
- "type": "number"
- },
- "rate": {
- "description": "The nominal interest rate.",
- "type": "number"
- },
- "type": {
- "description": "The type of interest rate.",
- "enum": [
- "fixed",
- "variable"
- ],
- "type": "string"
- }
- },
- "required": [
- "type",
- "rate",
- "apr"
- ],
- "type": "object"
- },
- "payment": {
- "additionalProperties": false,
- "description": "Details about the repayment schedule.",
- "properties": {
- "amount": {
- "additionalProperties": false,
- "description": "The amount of each payment.",
- "properties": {
- "amount": {
- "type": "number"
- },
- "currency": {
- "const": "USD",
- "type": "string"
- }
- },
- "required": [
- "amount",
- "currency"
- ],
- "type": "object"
- },
- "frequency": {
- "const": "monthly",
- "description": "The frequency of payments.",
- "type": "string"
- }
- },
- "required": [
- "frequency",
- "amount"
- ],
- "type": "object"
- },
- "prepaymentPenalty": {
- "description": "Indicates if there is a penalty for early repayment.",
- "type": "boolean"
- },
- "repayment": {
- "additionalProperties": false,
- "description": "Summary of repayment details.",
- "properties": {
- "costOfFinancing": {
- "description": "The total cost of borrowing (interest and fees).",
- "type": "number"
- },
- "totalRepaymentAmount": {
- "description": "The total amount to be repaid over the life of the loan.",
- "type": "number"
- }
- },
- "required": [
- "totalRepaymentAmount",
- "costOfFinancing"
- ],
- "type": "object"
- },
- "termMonths": {
- "description": "The duration of the loan in months.",
- "type": "number"
- },
- "totalCost": {
- "additionalProperties": false,
- "description": "The total cost of the loan, including interest and fees.",
- "properties": {
- "amount": {
- "type": "number"
- },
- "currency": {
- "const": "USD",
- "type": "string"
- }
- },
- "required": [
- "amount",
- "currency"
- ],
- "type": "object"
- }
- },
- "required": [
- "amount",
- "interestRate",
- "termMonths"
- ],
- "type": "object"
- }
- },
- "required": [
- "offerId",
- "lender",
- "product",
- "terms",
- "process",
- "isSecureLendTenant"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "summary": {
- "additionalProperties": false,
- "properties": {
- "bestRate": {
- "type": "number"
- },
- "fastestFunding": {
- "type": "string"
- },
- "totalOffers": {
- "type": "number"
- }
- },
- "required": [
- "totalOffers",
- "bestRate",
- "fastestFunding"
- ],
- "type": "object"
- }
- },
- "required": [
- "offers",
- "summary",
- "metadata"
- ],
- "type": "object"
-}New value: +nullDoes the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Compare', which implies a read-only operation, but it does not state whether it returns product lists, rate quotes, or a comparison summary, nor does it mention any side effects, authentication requirements, or data persistence. For a tool with zero annotation support, this is a notable 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 is a single, front-loaded sentence that states the action, object, and key inputs with no filler. Every phrase earns its place, making it easy for an agent to parse quickly.
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 the lack of an output schema and annotations, the description could do more to explain what a 'comparison' returns and how the named inputs should be supplied. It is adequate for an agent to grasp the tool's purpose, but it leaves the calling contract underspecified for a tool with no structured parameter definitions.
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 input schema has zero defined parameters, so the description is the only source for what inputs the tool expects. It names three key factors (property value, loan amount, credit score), which gives meaning beyond the empty schema. However, it does not specify exact parameter names, types, or format, so the baseline of 4 for zero-parameter tools is slightly adjusted upward by the named 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?
The description states a specific verb ('Compare') and a specific resource ('residential mortgage products and rates') and names the key input dimensions (property value, loan amount, credit score). The word 'residential' clearly distinguishes this from sibling compare_business_mortgages and from calculation tools like calculate_mortgage_payment.
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 implies when to use the tool—when comparing residential mortgage products and rates—but does not explicitly tell the agent when not to use it, nor does it mention alternatives such as compare_business_mortgages or calculators. The context is clear but lacks explicit exclusion or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Add one secure layer between your agents and this server.