Koskamo

Menlo Insurance MCP

An official MCP server by Menlo Insurance Services that allows agents to list insurance products, initiate or continue quote applications, answer follow-up questions, and check quote status. It supports document uploads and integrates with major AI clients like ChatGPT and Claude, facilitating the insurance brokerage workflow without binding policies directly.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Menlo Insurance MCP logo, by Menlo Insurance ServicesVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-06Operated by Menlo Insurance Services
MCP endpoint (Streamable HTTP)
https://www.menloinsurance.com/mcp
Vendor documentation

What its tools do

12 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

12 of 12 have a description · 12 of 12 declare behavior hints · 1 of 11 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to menloinsurance.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • List Menlo's insurance products and get a quote-form link
  • Start or continue a quote with customer OAuth approval
  • Answer quote follow-up questions and read status

Source and maintenance

Vendor evidenceRegistry 0.3.0

Protocol and capabilities

Server
menlo-insurance 0.4.0
MCP protocol negotiated in check
2025-11-25
Tools
12 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Menlo Insurance Services is an insurance agency. list_products and get_quote_link are public. The other tools work on one quote that the customer authorized on Menlo’s website: they read its current application page, status and follow-up questions, save the customer's answers and attach documents. New coverage requests begin with missing contact details: the customer's name and their preferred email or phone for Menlo to follow up. These answers stay on the quote and create or update its CRM lead. Public product information needs no contact details. Saves take the quote’s current baseRevision and an eventId; repeating an eventId with the same answers is a safe retry, and revision_conflict means the quote changed. Saving answers can start or resume eligible carrier processing; reading never does. Premiums returned are indicative carrier results and nothing is bound. A question marked attachDocument takes a file through attach_quote_document: pass the customer's attached file when the chat app supports file inputs; otherwise the tool returns a single-use website upload link to give the customer. review_quote_application presents the application and quote consent; submit_quote_request requests carrier quotes only after explicit customer confirmation of that revision. Protected information, carrier-specific attestations, signatures and purchase stay on Menlo’s website. A licensed Menlo agent reviews options. Never claim proactive notifications unless an event subscription has been activated.

Tools

12 advertised

list_products — Find Menlo insurance products
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when a customer wants insurance coverage or a quote and you need the product Menlo can quote and where, for example builders risk for a renovation, vacant home insurance, a DIC policy alongside the California FAIR Plan, or event insurance. Returns published formIds, labels, states, website links and the application process. When the customer wants help insuring their risk, continue with start_quote. General product browsing needs no contact details. Availability does not guarantee eligibility or a carrier quote. Do not use for claims or changes to an existing policy.

list_products input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "locale": {
      "enum": [
        "en",
        "es"
      ],
      "type": "string",
      "default": "en"
    }
  },
  "additionalProperties": false
}
list_products output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "products"
  ],
  "properties": {
    "products": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "formId",
          "label",
          "quoteUrl",
          "availableStates",
          "quotingProcess"
        ],
        "properties": {
          "label": {
            "type": "string"
          },
          "formId": {
            "type": "string"
          },
          "quoteUrl": {
            "type": "string",
            "format": "uri"
          },
          "quotingProcess": {
            "type": "string"
          },
          "availableStates": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
list_products annotations
{
  "title": "Find Menlo insurance products",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_quote_link — Get a Menlo quote form link
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the customer prefers to fill in a quote request on Menlo's website rather than in chat. Returns the website link for a formId from list_products. Does not create, read or submit an application.

get_quote_link input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "formId"
  ],
  "properties": {
    "formId": {
      "type": "string",
      "pattern": "^[a-z][a-z0-9-]{0,60}$"
    },
    "locale": {
      "enum": [
        "en",
        "es"
      ],
      "type": "string",
      "default": "en"
    }
  },
  "additionalProperties": false
}
get_quote_link output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "product",
    "nextStep"
  ],
  "properties": {
    "product": {
      "type": "object",
      "required": [
        "formId",
        "label",
        "quoteUrl",
        "availableStates"
      ],
      "properties": {
        "label": {
          "type": "string"
        },
        "formId": {
          "type": "string"
        },
        "quoteUrl": {
          "type": "string",
          "format": "uri"
        },
        "availableStates": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "nextStep": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
get_quote_link annotations
{
  "title": "Get a Menlo quote form link",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
start_quote — Start your connected Menlo quote
Advertised by the server during the last successful anonymous check.

Use this when the customer wants Menlo to help insure a home, business, project or event, or to resume their connected quote; they do not need to say 'apply'. Choose the matching formId from list_products. Requires website connection consent first. Creates or resumes one quote and returns its next questions, starting with missing lead contact details. Ask for their name and preferred email OR phone so Menlo can follow up, then save the details they provide with answer_quote_page. Reuse confirmed quote details or details volunteered for this request; do not re-ask or infer contact information from unrelated history. Respect a declined contact request. Repeated calls return the same quote; another product cannot replace it. Does not request carrier pricing, accept terms or submit the application.

start_quote input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "formId": {
      "type": "string",
      "pattern": "^[a-z][a-z0-9-]{0,60}$",
      "description": "Published formId from list_products, chosen for the customer's stated insurance need. Required for a new connection; omit to resume its existing quote."
    },
    "locale": {
      "enum": [
        "en",
        "es"
      ],
      "type": "string",
      "default": "en"
    }
  },
  "additionalProperties": false
}
start_quote output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "demo",
    "quoteNumber",
    "formId",
    "formRevisionId",
    "baseRevision",
    "stage",
    "section",
    "websiteRequired",
    "websiteRequiredReason",
    "websiteUrl",
    "geography",
    "page",
    "nextStep"
  ],
  "properties": {
    "demo": {
      "type": "boolean"
    },
    "page": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "id",
            "title",
            "index",
            "pageCount",
            "questions",
            "answerSchema"
          ],
          "properties": {
            "id": {
              "type": "string"
            },
            "index": {
              "type": "integer",
              "maximum": 9007199254740991,
              "minimum": -9007199254740991
            },
            "title": {
              "type": "string"
            },
            "pageCount": {
              "type": "integer",
              "maximum": 9007199254740991,
              "minimum": -9007199254740991
            },
            "questions": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "id",
                  "label",
                  "control",
                  "required",
                  "answerOnWebsite",
                  "readOnly"
                ],
                "properties": {
                  "id": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "control": {
                    "type": "string"
                  },
                  "options": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "value",
                        "label"
                      ],
                      "properties": {
                        "label": {
                          "type": "string"
                        },
                        "value": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    }
                  },
                  "helpText": {
                    "type": "string"
                  },
                  "readOnly": {
                    "type": "boolean"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "prefillValue": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 5000
                      },
                      {
                        "type": "number"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "maxLength": 500
                        },
                        "maxItems": 100
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "attachDocument": {
                    "type": "boolean",
                    "const": true
                  },
                  "answerOnWebsite": {
                    "type": "boolean"
                  }
                },
                "additionalProperties": false
              }
            },
            "answerSchema": {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {}
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "stage": {
      "type": "string"
    },
    "formId": {
      "type": "string"
    },
    "section": {
      "enum": [
        "easy",
        "recommendation",
        "application",
        "review",
        "waiting",
        "out_of_area",
        "cancelled"
      ],
      "type": "string"
    },
    "nextStep": {
      "type": "string"
    },
    "geography": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "eligible",
            "state"
          ],
          "properties": {
            "basis": {
              "enum": [
                "license",
                "product"
              ],
              "type": "string"
            },
            "state": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "eligible": {
              "type": "boolean"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "websiteUrl": {
      "type": "string",
      "format": "uri"
    },
    "quoteNumber": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "baseRevision": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "formRevisionId": {
      "type": "string"
    },
    "websiteRequired": {
      "type": "boolean"
    },
    "websiteRequiredReason": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false
}
start_quote annotations
{
  "title": "Start your connected Menlo quote",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_current_page — Read your current application page
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when continuing the connected quote, including its first contact questions, and again after every save. Returns the current page: grouped questions, visibility conditions, ZIP/state prefills, document questions (attachDocument) and whether the page must be completed on Menlo’s website (protected questions). Reading never creates a lead or starts carrier processing. Do not use for carrier follow-up questions after submission; use get_missing_questions.

get_current_page input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "locale": {
      "enum": [
        "en",
        "es"
      ],
      "type": "string",
      "default": "en"
    }
  },
  "additionalProperties": false
}
get_current_page output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "demo",
    "quoteNumber",
    "formId",
    "formRevisionId",
    "baseRevision",
    "stage",
    "section",
    "websiteRequired",
    "websiteRequiredReason",
    "websiteUrl",
    "geography",
    "page",
    "nextStep"
  ],
  "properties": {
    "demo": {
      "type": "boolean"
    },
    "page": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "id",
            "title",
            "index",
            "pageCount",
            "questions",
            "answerSchema"
          ],
          "properties": {
            "id": {
              "type": "string"
            },
            "index": {
              "type": "integer",
              "maximum": 9007199254740991,
              "minimum": -9007199254740991
            },
            "title": {
              "type": "string"
            },
            "pageCount": {
              "type": "integer",
              "maximum": 9007199254740991,
              "minimum": -9007199254740991
            },
            "questions": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "id",
                  "label",
                  "control",
                  "required",
                  "answerOnWebsite",
                  "readOnly"
                ],
                "properties": {
                  "id": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "control": {
                    "type": "string"
                  },
                  "options": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "value",
                        "label"
                      ],
                      "properties": {
                        "label": {
                          "type": "string"
                        },
                        "value": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    }
                  },
                  "helpText": {
                    "type": "string"
                  },
                  "readOnly": {
                    "type": "boolean"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "prefillValue": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 5000
                      },
                      {
                        "type": "number"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "maxLength": 500
                        },
                        "maxItems": 100
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "attachDocument": {
                    "type": "boolean",
                    "const": true
                  },
                  "answerOnWebsite": {
                    "type": "boolean"
                  }
                },
                "additionalProperties": false
              }
            },
            "answerSchema": {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {}
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "stage": {
      "type": "string"
    },
    "formId": {
      "type": "string"
    },
    "section": {
      "enum": [
        "easy",
        "recommendation",
        "application",
        "review",
        "waiting",
        "out_of_area",
        "cancelled"
      ],
      "type": "string"
    },
    "nextStep": {
      "type": "string"
    },
    "geography": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "eligible",
            "state"
          ],
          "properties": {
            "basis": {
              "enum": [
                "license",
                "product"
              ],
              "type": "string"
            },
            "state": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "eligible": {
              "type": "boolean"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "websiteUrl": {
      "type": "string",
      "format": "uri"
    },
    "quoteNumber": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "baseRevision": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "formRevisionId": {
      "type": "string"
    },
    "websiteRequired": {
      "type": "boolean"
    },
    "websiteRequiredReason": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false
}
get_current_page annotations
{
  "title": "Read your current application page",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
answer_quote_page — Save your current application page
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Use this when the customer has answered the current contact or application questions, including coverage choices they made. Saves those answers and returns the updated page. Contact answers on a real quote also file the lead in Menlo's CRM; saving a lead does not submit the application or request carrier quotes. Takes the current baseRevision and an eventId; retry identical answers with the same eventId. A save can overwrite earlier answers and can resume eligible processing under the website's existing rules. Save only details the customer supplied or confirmed for this request. Do not use for protected information, consent, signatures or a document upload (use attach_quote_document).

answer_quote_page input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "eventId",
    "baseRevision",
    "answers"
  ],
  "properties": {
    "locale": {
      "enum": [
        "en",
        "es"
      ],
      "type": "string",
      "default": "en"
    },
    "answers": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "questionId",
          "status",
          "value"
        ],
        "properties": {
          "value": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 5000
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              },
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "maxLength": 500
                },
                "maxItems": 100
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "enum": [
              "confirmed",
              "unknown",
              "declined"
            ],
            "type": "string"
          },
          "questionId": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
          }
        },
        "additionalProperties": false
      },
      "maxItems": 100,
      "minItems": 1,
      "description": "Only customer-confirmed facts from the current page with answerOnWebsite false; readonly prefills are server-owned"
    },
    "eventId": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{8,128}$",
      "description": "Unique submission ID; retry identical answers with the same eventId"
    },
    "baseRevision": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": 0,
      "description": "Current baseRevision returned by get_current_page"
    }
  },
  "additionalProperties": false
}
answer_quote_page output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "demo",
    "quoteNumber",
    "formId",
    "formRevisionId",
    "baseRevision",
    "stage",
    "section",
    "websiteRequired",
    "websiteRequiredReason",
    "websiteUrl",
    "geography",
    "page",
    "nextStep"
  ],
  "properties": {
    "demo": {
      "type": "boolean"
    },
    "page": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "id",
            "title",
            "index",
            "pageCount",
            "questions",
            "answerSchema"
          ],
          "properties": {
            "id": {
              "type": "string"
            },
            "index": {
              "type": "integer",
              "maximum": 9007199254740991,
              "minimum": -9007199254740991
            },
            "title": {
              "type": "string"
            },
            "pageCount": {
              "type": "integer",
              "maximum": 9007199254740991,
              "minimum": -9007199254740991
            },
            "questions": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "id",
                  "label",
                  "control",
                  "required",
                  "answerOnWebsite",
                  "readOnly"
                ],
                "properties": {
                  "id": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "control": {
                    "type": "string"
                  },
                  "options": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "value",
                        "label"
                      ],
                      "properties": {
                        "label": {
                          "type": "string"
                        },
                        "value": {
                          "anyOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false
                    }
                  },
                  "helpText": {
                    "type": "string"
                  },
                  "readOnly": {
                    "type": "boolean"
                  },
                  "required": {
                    "type": "boolean"
                  },
                  "prefillValue": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 5000
                      },
                      {
                        "type": "number"
                      },
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "maxLength": 500
                        },
                        "maxItems": 100
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "attachDocument": {
                    "type": "boolean",
                    "const": true
                  },
                  "answerOnWebsite": {
                    "type": "boolean"
                  }
                },
                "additionalProperties": false
              }
            },
            "answerSchema": {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {}
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "stage": {
      "type": "string"
    },
    "formId": {
      "type": "string"
    },
    "section": {
      "enum": [
        "easy",
        "recommendation",
        "application",
        "review",
        "waiting",
        "out_of_area",
        "cancelled"
      ],
      "type": "string"
    },
    "nextStep": {
      "type": "string"
    },
    "geography": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "eligible",
            "state"
          ],
          "properties": {
            "basis": {
              "enum": [
                "license",
                "product"
              ],
              "type": "string"
            },
            "state": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "eligible": {
              "type": "boolean"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "websiteUrl": {
      "type": "string",
      "format": "uri"
    },
    "quoteNumber": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "baseRevision": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "formRevisionId": {
      "type": "string"
    },
    "websiteRequired": {
      "type": "boolean"
    },
    "websiteRequiredReason": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false
}
answer_quote_page annotations
{
  "title": "Save your current application page",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": true
}
review_quote_application — Review your application and quote consent
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the current page reports section review and the customer wants to request quotes. Returns the application's answers, the exact quote-authorization consent, the Terms link and a short-lived revision-bound reviewToken when ready; show them to the customer. Protected values are excluded. Reading does not request carrier quotes or accept terms.

review_quote_application input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "locale": {
      "enum": [
        "en",
        "es"
      ],
      "type": "string",
      "default": "en"
    }
  },
  "additionalProperties": false
}
review_quote_application output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "demo",
    "quoteNumber",
    "baseRevision",
    "readyToSubmit",
    "alreadySubmitted",
    "reviewToken",
    "expiresAt",
    "answers",
    "websiteOnlyAnswerCount",
    "requiredWebsiteQuestionIds",
    "termsVersion",
    "termsUrl",
    "consentText",
    "confirmationText",
    "websiteUrl",
    "nextStep"
  ],
  "properties": {
    "demo": {
      "type": "boolean"
    },
    "answers": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "questionId",
          "label",
          "value"
        ],
        "properties": {
          "label": {
            "type": "string"
          },
          "value": {},
          "questionId": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "nextStep": {
      "type": "string"
    },
    "termsUrl": {
      "type": "string",
      "format": "uri"
    },
    "expiresAt": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "websiteUrl": {
      "type": "string",
      "format": "uri"
    },
    "consentText": {
      "type": "string"
    },
    "quoteNumber": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "reviewToken": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "baseRevision": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "termsVersion": {
      "type": "string"
    },
    "readyToSubmit": {
      "type": "boolean"
    },
    "alreadySubmitted": {
      "type": "boolean"
    },
    "confirmationText": {
      "type": "string"
    },
    "websiteOnlyAnswerCount": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "requiredWebsiteQuestionIds": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "additionalProperties": false
}
review_quote_application annotations
{
  "title": "Review your application and quote consent",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
submit_quote_request — Authorize and request carrier quotes
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Use this only after the customer has seen review_quote_application's answers and consent and explicitly confirmed them in this conversation. Records acceptance of Menlo's Terms and requests eligible carrier quotes through Menlo's existing workflow. Sends application information to carriers and may authorize consumer reports. Requires separate quotes:submit OAuth permission, a current reviewToken and the exact customerConfirmation from the displayed review; OAuth and saved answers do not constitute agreement. Identical reviewToken and payload retries return the original submission without duplicate requests. Does not purchase, bind coverage, choose coverage, sign a carrier application or enroll in SMS. The reviewer demo never dispatches.

submit_quote_request input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "reviewToken",
    "baseRevision",
    "termsVersion",
    "locale",
    "customerConfirmation"
  ],
  "properties": {
    "locale": {
      "enum": [
        "en",
        "es"
      ],
      "type": "string"
    },
    "reviewToken": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{43}$",
      "description": "Short-lived reviewToken returned by review_quote_application; never invent one"
    },
    "baseRevision": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": 0
    },
    "termsVersion": {
      "type": "string",
      "const": "quote-terms-2026-10-07"
    },
    "customerConfirmation": {
      "enum": [
        "I reviewed my application, agree to Menlo’s Terms of Service and authorize Menlo to request carrier quotes with the consumer-report consent shown above.",
        "Revisé mi solicitud, acepto los Términos del servicio de Menlo y autorizo a Menlo a solicitar cotizaciones a las aseguradoras con el consentimiento para informes del consumidor mostrado arriba."
      ],
      "type": "string",
      "description": "Exact confirmationText from the review, only after the customer explicitly confirms the displayed application and consent; never infer consent from OAuth, an answer save or an earlier request"
    }
  },
  "additionalProperties": false
}
submit_quote_request output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "demo",
    "quoteNumber",
    "formId",
    "formRevisionId",
    "revision",
    "stage",
    "aggregate",
    "carriers",
    "additionalQuestionCount",
    "nextAction",
    "websiteUrl",
    "pricingNotice",
    "notificationStatus",
    "notificationExpiresAt",
    "progressMessage"
  ],
  "properties": {
    "demo": {
      "type": "boolean"
    },
    "stage": {
      "type": "string"
    },
    "formId": {
      "type": "string"
    },
    "carriers": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "carrierId",
          "status",
          "quote",
          "declineReason",
          "informationSubmitted"
        ],
        "properties": {
          "quote": {
            "anyOf": [
              {
                "type": "object",
                "required": [
                  "coverages",
                  "limits",
                  "carrier"
                ],
                "properties": {
                  "fees": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "label",
                        "amount"
                      ],
                      "properties": {
                        "label": {
                          "type": "string",
                          "minLength": 1
                        },
                        "amount": {
                          "type": "string",
                          "pattern": "^(?:0\\.(?:0[1-9]|[1-9]\\d)|[1-9]\\d*\\.\\d{2})$",
                          "maxLength": 40
                        }
                      },
                      "additionalProperties": false
                    },
                    "minItems": 1
                  },
                  "term": {
                    "type": "string",
                    "minLength": 1
                  },
                  "intro": {
                    "type": "string",
                    "minLength": 1
                  },
                  "taxes": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "label",
                        "amount"
                      ],
                      "properties": {
                        "label": {
                          "type": "string",
                          "minLength": 1
                        },
                        "amount": {
                          "type": "string",
                          "pattern": "^(?:0\\.(?:0[1-9]|[1-9]\\d)|[1-9]\\d*\\.\\d{2})$",
                          "maxLength": 40
                        }
                      },
                      "additionalProperties": false
                    },
                    "minItems": 1
                  },
                  "issuer": {
                    "type": "object",
                    "required": [
                      "name",
                      "paper",
                      "evidence"
                    ],
                    "properties": {
                      "name": {
                        "type": "string",
                        "minLength": 1
                      },
                      "paper": {
                        "enum": [
                          "admitted",
                          "surplus"
                        ],
                        "type": "string"
                      },
                      "evidence": {
                        "type": "string",
                        "minLength": 1
                      }
                    },
                    "description": "The actual issuing insurer, admitted or surplus (nonadmitted) status, and exact result text evidencing that status (or, when the quote names the insurer and its NAIC number but not its status, the risk state's regulator license record cited with the quote's words). It decides the quote's paper ahead of its route's. Omit unless both are evidenced; never infer from its broker, MGA, premium or insurer name.",
                    "additionalProperties": false
                  },
                  "limits": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "label",
                        "value"
                      ],
                      "properties": {
                        "label": {
                          "type": "string",
                          "minLength": 1
                        },
                        "value": {
                          "type": "string",
                          "minLength": 1
                        }
                      },
                      "additionalProperties": false
                    },
                    "minItems": 1,
                    "description": "The quote's limits, sublimits and other stated terms, each labelled as the carrier labels it. Never a price: the premium and its parts, fees, taxes and totals go in yearly/monthly, fees and taxes."
                  },
                  "yearly": {
                    "type": "string",
                    "pattern": "^(?:0\\.(?:0[1-9]|[1-9]\\d)|[1-9]\\d*\\.\\d{2})$",
                    "maxLength": 40
                  },
                  "carrier": {
                    "type": "string",
                    "minLength": 1
                  },
                  "monthly": {
                    "type": "string",
                    "pattern": "^(?:0\\.(?:0[1-9]|[1-9]\\d)|[1-9]\\d*\\.\\d{2})$",
                    "maxLength": 40
                  },
                  "building": {
                    "type": "string",
                    "minLength": 1
                  },
                  "dueToday": {
                    "type": "string",
                    "pattern": "^(?:0\\.(?:0[1-9]|[1-9]\\d)|[1-9]\\d*\\.\\d{2})$",
                    "maxLength": 40
                  },
                  "keyTerms": {
                    "type": "object",
                    "properties": {
                      "end": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "The policy's expiration date."
                      },
                      "start": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "The policy's effective date."
                      },
                      "contents": {
                        "type": "string",
                        "pattern": "^(?:0|[1-9]\\d*)\\.\\d{2}$",
                        "maxLength": 40,
                        "description": "The contents or personal property limit (Coverage C)."
                      },
                      "coverage": {
                        "type": "array",
                        "items": {
                          "enum": [
                            "homeowners_dwelling",
                            "dwelling_property",
                            "mobile_home",
                            "condo_unit_owners",
                            "personal_contents",
                            "home_equipment_breakdown",
                            "personal_deductible_buyback",
                            "personal_dic",
                            "personal_liability",
                            "personal_liability_vacant_land",
                            "homeowners_earthquake",
                            "homeowners_earthquake_excess_or_buyback",
                            "personal_umbrella",
                            "personal_flood_primary",
                            "personal_flood_excess",
                            "personal_articles_floater",
                            "residential_named_storm",
                            "collector_auto",
                            "personal_auto",
                            "recreational_vehicle",
                            "vessel",
                            "term_life",
                            "vacant_building_property_personal",
                            "vacant_building_property_commercial",
                            "apartment_building_property",
                            "commercial_building_property",
                            "business_income",
                            "disaster_income_protection",
                            "commercial_earthquake_dic",
                            "commercial_flood_primary",
                            "commercial_flood_excess",
                            "commercial_deductible_buyback",
                            "sawmill_property",
                            "hay_in_the_open",
                            "explosives_property",
                            "amusement_property",
                            "builders_risk_new_construction_residential",
                            "builders_risk_new_construction_commercial",
                            "builders_risk_renovation_residential",
                            "builders_risk_renovation_commercial",
                            "contractor_general_liability",
                            "tract_home_condo_contractor_gl",
                            "blasting_contractor_gl",
                            "building_moving_gl",
                            "crane_rigging_contractor_gl",
                            "demolition_contractor_gl",
                            "scaffold_contractor_gl",
                            "oilfield_contractor_gl",
                            "premises_liability_vacant_land",
                            "premises_liability_vacant_building",
                            "premises_liability_apartment",
                            "commercial_general_liability",
                            "liquor_liability",
                            "products_completed_operations",
                            "products_recall",
                            "excess_liability",
                            "directors_officers",
                            "fiduciary_liability",
                            "cyber_liability",
                            "workers_compensation",
                            "employment_practices_liability",
                            "pollution_liability",
                            "ambulance_services",
                            "amusement_liability",
                            "clinical_trials",
                            "explosives_liability",
                            "fireworks_display",
                            "foster_family",
                            "hot_air_balloon",
                            "outfitters_guides",
                            "ip_infringement",
                            "seasonal_mobile_vendor",
                            "security_guard",
                            "special_event",
                            "film_railroad_protective",
                            "tattoo_body_piercing_gl",
                            "professional_liability",
                            "technology_errors_omissions",
                            "medical_professional_liability",
                            "crop_hail_private",
                            "architects_engineers",
                            "campaign_treasurer",
                            "creditors_committee",
                            "medical_billing_eo",
                            "tattoo_body_piercing_eo",
                            "crime",
                            "excess_crime",
                            "employee_identity_fraud",
                            "surety_bond",
                            "kidnap_ransom",
                            "aviation_excess_liability",
                            "film_contingent_aircraft",
                            "drone",
                            "commercial_auto",
                            "commercial_inland_marine",
                            "commercial_vessel",
                            "excess_motor_truck_cargo",
                            "high_limits_disability",
                            "international_major_medical",
                            "cannabis_operations",
                            "event_cancellation",
                            "parametric_weather",
                            "tax_audit_defense",
                            "political_risk",
                            "prize_indemnification",
                            "hole_in_one",
                            "film_failure_to_survive"
                          ],
                          "type": "string"
                        },
                        "minItems": 1,
                        "description": "The policy lines this quote actually provides (policy-lines.ts), one per coverage component, package parts too, the policy's main line first. Read from the quote, never copied from the product's declared lines."
                      },
                      "dwelling": {
                        "type": "string",
                        "pattern": "^(?:0|[1-9]\\d*)\\.\\d{2}$",
                        "maxLength": 40,
                        "description": "The building or dwelling limit (Coverage A)."
                      },
                      "liability": {
                        "type": "object",
                        "required": [
                          "perOccurrence"
                        ],
                        "properties": {
                          "aggregate": {
                            "type": "string",
                            "pattern": "^(?:0|[1-9]\\d*)\\.\\d{2}$",
                            "maxLength": 40,
                            "description": "The aggregate liability limit."
                          },
                          "perOccurrence": {
                            "type": "string",
                            "pattern": "^(?:0|[1-9]\\d*)\\.\\d{2}$",
                            "maxLength": 40,
                            "description": "The liability limit per occurrence (per claim on a claims-made policy), or the one liability limit a quote states without occurrence or aggregate wording (US Assure VacantExpress's \"General Liability Limit\"); leave aggregate out then."
                          }
                        },
                        "additionalProperties": false
                      },
                      "lossOfUse": {
                        "type": "string",
                        "pattern": "^(?:0|[1-9]\\d*)\\.\\d{2}$",
                        "maxLength": 40,
                        "description": "The loss of use or additional living expense limit (Coverage D)."
                      },
                      "termMonths": {
                        "type": "integer",
                        "maximum": 9007199254740991,
                        "minimum": 1,
                        "description": "The policy term in months; an event policy states none."
                      },
                      "deductibles": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "enum": [
                                "all_other_perils",
                                "wind_hail"
                              ],
                              "type": "string",
                              "description": "all_other_perils for the property's all other perils (AOP) deductible, wind_hail for its wind or hail deductible; leave out for any other."
                            },
                            "amount": {
                              "type": "string",
                              "pattern": "^(?:0|[1-9]\\d*)\\.\\d{2}$",
                              "maxLength": 40,
                              "description": "A fixed deductible."
                            },
                            "percent": {
                              "type": "number",
                              "maximum": 100,
                              "description": "A percentage deductible (\"5% of Coverage A\" is 5).",
                              "exclusiveMinimum": 0
                            },
                            "appliesTo": {
                              "type": "string",
                              "minLength": 1,
                              "description": "What it applies to, in the carrier's words (\"All other perils\", \"Wind/hail\", \"Building\"), when the quote says."
                            }
                          },
                          "additionalProperties": false
                        },
                        "minItems": 1
                      },
                      "otherStructures": {
                        "type": "string",
                        "pattern": "^(?:0|[1-9]\\d*)\\.\\d{2}$",
                        "maxLength": 40,
                        "description": "The other structures limit (Coverage B)."
                      }
                    },
                    "additionalProperties": false
                  },
                  "coverages": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1
                    },
                    "minItems": 1,
                    "description": "The coverages the quote provides, in the carrier's words. Never a price: the premium and its parts, fees, taxes and totals go in yearly/monthly, fees and taxes."
                  },
                  "startDate": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
                  },
                  "validUntil": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
                  },
                  "monthlyCount": {
                    "type": "integer",
                    "maximum": 9007199254740991,
                    "exclusiveMinimum": 0
                  },
                  "subjectivities": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1
                    },
                    "minItems": 1
                  },
                  "underwritingApproval": {
                    "enum": [
                      "pending",
                      "approved"
                    ],
                    "type": "string",
                    "description": "\"pending\" when the carrier calls this price indicative, an indication or an estimate, or shows it with a referral, underwriter review or pending-approval notice; omit for a firm quote."
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "type": "string"
          },
          "carrierId": {
            "type": "string"
          },
          "declineReason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "informationSubmitted": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      }
    },
    "revision": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "aggregate": {
      "type": "object",
      "required": [
        "status",
        "total",
        "terminal",
        "quoted",
        "referred",
        "declined",
        "blocked"
      ],
      "properties": {
        "total": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        "quoted": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        "status": {
          "type": "string"
        },
        "blocked": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        "declined": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        "referred": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        "terminal": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        }
      },
      "additionalProperties": false
    },
    "nextAction": {
      "enum": [
        "answer_page",
        "finish_on_website",
        "answer_questions",
        "wait",
        "review",
        "review_application",
        "cancelled"
      ],
      "type": "string"
    },
    "websiteUrl": {
      "type": "string",
      "format": "uri"
    },
    "quoteNumber": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "pricingNotice": {
      "type": "string"
    },
    "formRevisionId": {
      "type": "string"
    },
    "progressMessage": {
      "type": "string"
    },
    "notificationStatus": {
      "enum": [
        "subscribed",
        "not_subscribed"
      ],
      "type": "string"
    },
    "notificationExpiresAt": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "additionalQuestionCount": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    }
  },
  "additionalProperties": false
}
submit_quote_request annotations
{
  "title": "Authorize and request carrier quotes",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": true
}
get_quote_status — Check your Menlo quote
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the customer asks how their connected quote is going or what happens next. Returns its stage, carrier outcomes, available quotes and next action. Premiums are indicative carrier results and nothing is bound. Includes a waiting-on-carriers message and whether an MCP Events quote.updated subscription is active. Reading does not activate notifications, start carrier processing or list other quotes.

get_quote_status input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "locale": {
      "enum": [
        "en",
        "es"
      ],
      "type": "string",
      "default": "en"
    }
  },
  "additionalProperties": false
}
get_quote_status output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "demo",
    "quoteNumber",
    "formId",
    "formRevisionId",
    "revision",
    "stage",
    "aggregate",
    "carriers",
    "additionalQuestionCount",
    "nextAction",
    "websiteUrl",
    "pricingNotice",
    "notificationStatus",
    "notificationExpiresAt",
    "progressMessage"
  ],
  "properties": {
    "demo": {
      "type": "boolean"
    },
    "stage": {
      "type": "string"
    },
    "formId": {
      "type": "string"
    },
    "carriers": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "carrierId",
          "status",
          "quote",
          "declineReason",
          "informationSubmitted"
        ],
        "properties": {
          "quote": {
            "anyOf": [
              {
                "type": "object",
                "required": [
                  "coverages",
                  "limits",
                  "carrier"
                ],
                "properties": {
                  "fees": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "label",
                        "amount"
                      ],
                      "properties": {
                        "label": {
                          "type": "string",
                          "minLength": 1
                        },
                        "amount": {
                          "type": "string",
                          "pattern": "^(?:0\\.(?:0[1-9]|[1-9]\\d)|[1-9]\\d*\\.\\d{2})$",
                          "maxLength": 40
                        }
                      },
                      "additionalProperties": false
                    },
                    "minItems": 1
                  },
                  "term": {
                    "type": "string",
                    "minLength": 1
                  },
                  "intro": {
                    "type": "string",
                    "minLength": 1
                  },
                  "taxes": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "label",
                        "amount"
                      ],
                      "properties": {
                        "label": {
                          "type": "string",
                          "minLength": 1
                        },
                        "amount": {
                          "type": "string",
                          "pattern": "^(?:0\\.(?:0[1-9]|[1-9]\\d)|[1-9]\\d*\\.\\d{2})$",
                          "maxLength": 40
                        }
                      },
                      "additionalProperties": false
                    },
                    "minItems": 1
                  },
                  "issuer": {
                    "type": "object",
                    "required": [
                      "name",
                      "paper",
                      "evidence"
                    ],
                    "properties": {
                      "name": {
                        "type": "string",
                        "minLength": 1
                      },
                      "paper": {
                        "enum": [
                          "admitted",
                          "surplus"
                        ],
                        "type": "string"
                      },
                      "evidence": {
                        "type": "string",
                        "minLength": 1
                      }
                    },
                    "description": "The actual issuing insurer, admitted or surplus (nonadmitted) status, and exact result text evidencing that status (or, when the quote names the insurer and its NAIC number but not its status, the risk state's regulator license record cited with the quote's words). It decides the quote's paper ahead of its route's. Omit unless both are evidenced; never infer from its broker, MGA, premium or insurer name.",
                    "additionalProperties": false
                  },
                  "limits": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "label",
                        "value"
                      ],
                      "properties": {
                        "label": {
                          "type": "string",
                          "minLength": 1
                        },
                        "value": {
                          "type": "string",
                          "minLength": 1
                        }
                      },
                      "additionalProperties": false
                    },
                    "minItems": 1,
                    "description": "The quote's limits, sublimits and other stated terms, each labelled as the carrier labels it. Never a price: the premium and its parts, fees, taxes and totals go in yearly/monthly, fees and taxes."
                  },
                  "yearly": {
                    "type": "string",
                    "pattern": "^(?:0\\.(?:0[1-9]|[1-9]\\d)|[1-9]\\d*\\.\\d{2})$",
                    "maxLength": 40
                  },
                  "carrier": {
                    "type": "string",
                    "minLength": 1
                  },
                  "monthly": {
                    "type": "string",
                    "pattern": "^(?:0\\.(?:0[1-9]|[1-9]\\d)|[1-9]\\d*\\.\\d{2})$",
                    "maxLength": 40
                  },
                  "building": {
                    "type": "string",
                    "minLength": 1
                  },
                  "dueToday": {
                    "type": "string",
                    "pattern": "^(?:0\\.(?:0[1-9]|[1-9]\\d)|[1-9]\\d*\\.\\d{2})$",
                    "maxLength": 40
                  },
                  "keyTerms": {
                    "type": "object",
                    "properties": {
                      "end": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "The policy's expiration date."
                      },
                      "start": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "The policy's effective date."
                      },
                      "contents": {
                        "type": "string",
                        "pattern": "^(?:0|[1-9]\\d*)\\.\\d{2}$",
                        "maxLength": 40,
                        "description": "The contents or personal property limit (Coverage C)."
                      },
                      "coverage": {
                        "type": "array",
                        "items": {
                          "enum": [
                            "homeowners_dwelling",
                            "dwelling_property",
                            "mobile_home",
                            "condo_unit_owners",
                            "personal_contents",
                            "home_equipment_breakdown",
                            "personal_deductible_buyback",
                            "personal_dic",
                            "personal_liability",
                            "personal_liability_vacant_land",
                            "homeowners_earthquake",
                            "homeowners_earthquake_excess_or_buyback",
                            "personal_umbrella",
                            "personal_flood_primary",
                            "personal_flood_excess",
                            "personal_articles_floater",
                            "residential_named_storm",
                            "collector_auto",
                            "personal_auto",
                            "recreational_vehicle",
                            "vessel",
                            "term_life",
                            "vacant_building_property_personal",
                            "vacant_building_property_commercial",
                            "apartment_building_property",
                            "commercial_building_property",
                            "business_income",
                            "disaster_income_protection",
                            "commercial_earthquake_dic",
                            "commercial_flood_primary",
                            "commercial_flood_excess",
                            "commercial_deductible_buyback",
                            "sawmill_property",
                            "hay_in_the_open",
                            "explosives_property",
                            "amusement_property",
                            "builders_risk_new_construction_residential",
                            "builders_risk_new_construction_commercial",
                            "builders_risk_renovation_residential",
                            "builders_risk_renovation_commercial",
                            "contractor_general_liability",
                            "tract_home_condo_contractor_gl",
                            "blasting_contractor_gl",
                            "building_moving_gl",
                            "crane_rigging_contractor_gl",
                            "demolition_contractor_gl",
                            "scaffold_contractor_gl",
                            "oilfield_contractor_gl",
                            "premises_liability_vacant_land",
                            "premises_liability_vacant_building",
                            "premises_liability_apartment",
                            "commercial_general_liability",
                            "liquor_liability",
                            "products_completed_operations",
                            "products_recall",
                            "excess_liability",
                            "directors_officers",
                            "fiduciary_liability",
                            "cyber_liability",
                            "workers_compensation",
                            "employment_practices_liability",
                            "pollution_liability",
                            "ambulance_services",
                            "amusement_liability",
                            "clinical_trials",
                            "explosives_liability",
                            "fireworks_display",
                            "foster_family",
                            "hot_air_balloon",
                            "outfitters_guides",
                            "ip_infringement",
                            "seasonal_mobile_vendor",
                            "security_guard",
                            "special_event",
                            "film_railroad_protective",
                            "tattoo_body_piercing_gl",
                            "professional_liability",
                            "technology_errors_omissions",
                            "medical_professional_liability",
                            "crop_hail_private",
                            "architects_engineers",
                            "campaign_treasurer",
                            "creditors_committee",
                            "medical_billing_eo",
                            "tattoo_body_piercing_eo",
                            "crime",
                            "excess_crime",
                            "employee_identity_fraud",
                            "surety_bond",
                            "kidnap_ransom",
                            "aviation_excess_liability",
                            "film_contingent_aircraft",
                            "drone",
                            "commercial_auto",
                            "commercial_inland_marine",
                            "commercial_vessel",
                            "excess_motor_truck_cargo",
                            "high_limits_disability",
                            "international_major_medical",
                            "cannabis_operations",
                            "event_cancellation",
                            "parametric_weather",
                            "tax_audit_defense",
                            "political_risk",
                            "prize_indemnification",
                            "hole_in_one",
                            "film_failure_to_survive"
                          ],
                          "type": "string"
                        },
                        "minItems": 1,
                        "description": "The policy lines this quote actually provides (policy-lines.ts), one per coverage component, package parts too, the policy's main line first. Read from the quote, never copied from the product's declared lines."
                      },
                      "dwelling": {
                        "type": "string",
                        "pattern": "^(?:0|[1-9]\\d*)\\.\\d{2}$",
                        "maxLength": 40,
                        "description": "The building or dwelling limit (Coverage A)."
                      },
                      "liability": {
                        "type": "object",
                        "required": [
                          "perOccurrence"
                        ],
                        "properties": {
                          "aggregate": {
                            "type": "string",
                            "pattern": "^(?:0|[1-9]\\d*)\\.\\d{2}$",
                            "maxLength": 40,
                            "description": "The aggregate liability limit."
                          },
                          "perOccurrence": {
                            "type": "string",
                            "pattern": "^(?:0|[1-9]\\d*)\\.\\d{2}$",
                            "maxLength": 40,
                            "description": "The liability limit per occurrence (per claim on a claims-made policy), or the one liability limit a quote states without occurrence or aggregate wording (US Assure VacantExpress's \"General Liability Limit\"); leave aggregate out then."
                          }
                        },
                        "additionalProperties": false
                      },
                      "lossOfUse": {
                        "type": "string",
                        "pattern": "^(?:0|[1-9]\\d*)\\.\\d{2}$",
                        "maxLength": 40,
                        "description": "The loss of use or additional living expense limit (Coverage D)."
                      },
                      "termMonths": {
                        "type": "integer",
                        "maximum": 9007199254740991,
                        "minimum": 1,
                        "description": "The policy term in months; an event policy states none."
                      },
                      "deductibles": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "enum": [
                                "all_other_perils",
                                "wind_hail"
                              ],
                              "type": "string",
                              "description": "all_other_perils for the property's all other perils (AOP) deductible, wind_hail for its wind or hail deductible; leave out for any other."
                            },
                            "amount": {
                              "type": "string",
                              "pattern": "^(?:0|[1-9]\\d*)\\.\\d{2}$",
                              "maxLength": 40,
                              "description": "A fixed deductible."
                            },
                            "percent": {
                              "type": "number",
                              "maximum": 100,
                              "description": "A percentage deductible (\"5% of Coverage A\" is 5).",
                              "exclusiveMinimum": 0
                            },
                            "appliesTo": {
                              "type": "string",
                              "minLength": 1,
                              "description": "What it applies to, in the carrier's words (\"All other perils\", \"Wind/hail\", \"Building\"), when the quote says."
                            }
                          },
                          "additionalProperties": false
                        },
                        "minItems": 1
                      },
                      "otherStructures": {
                        "type": "string",
                        "pattern": "^(?:0|[1-9]\\d*)\\.\\d{2}$",
                        "maxLength": 40,
                        "description": "The other structures limit (Coverage B)."
                      }
                    },
                    "additionalProperties": false
                  },
                  "coverages": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1
                    },
                    "minItems": 1,
                    "description": "The coverages the quote provides, in the carrier's words. Never a price: the premium and its parts, fees, taxes and totals go in yearly/monthly, fees and taxes."
                  },
                  "startDate": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
                  },
                  "validUntil": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
                  },
                  "monthlyCount": {
                    "type": "integer",
                    "maximum": 9007199254740991,
                    "exclusiveMinimum": 0
                  },
                  "subjectivities": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1
                    },
                    "minItems": 1
                  },
                  "underwritingApproval": {
                    "enum": [
                      "pending",
                      "approved"
                    ],
                    "type": "string",
                    "description": "\"pending\" when the carrier calls this price indicative, an indication or an estimate, or shows it with a referral, underwriter review or pending-approval notice; omit for a firm quote."
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "type": "string"
          },
          "carrierId": {
            "type": "string"
          },
          "declineReason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "informationSubmitted": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      }
    },
    "revision": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "aggregate": {
      "type": "object",
      "required": [
        "status",
        "total",
        "terminal",
        "quoted",
        "referred",
        "declined",
        "blocked"
      ],
      "properties": {
        "total": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        "quoted": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        "status": {
          "type": "string"
        },
        "blocked": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        "declined": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        "referred": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        "terminal": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        }
      },
      "additionalProperties": false
    },
    "nextAction": {
      "enum": [
        "answer_page",
        "finish_on_website",
        "answer_questions",
        "wait",
        "review",
        "review_application",
        "cancelled"
      ],
      "type": "string"
    },
    "websiteUrl": {
      "type": "string",
      "format": "uri"
    },
    "quoteNumber": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "pricingNotice": {
      "type": "string"
    },
    "formRevisionId": {
      "type": "string"
    },
    "progressMessage": {
      "type": "string"
    },
    "notificationStatus": {
      "enum": [
        "subscribed",
        "not_subscribed"
      ],
      "type": "string"
    },
    "notificationExpiresAt": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "additionalQuestionCount": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    }
  },
  "additionalProperties": false
}
get_quote_status annotations
{
  "title": "Check your Menlo quote",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_missing_questions — Read outstanding quote questions
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when get_quote_status reports answer_questions or the customer asks what carriers still need. Returns outstanding follow-up questions, document requests (attachDocument) and correction requests, deduplicated across carriers, with the current baseRevision. Questions marked answerOnWebsite (protected information) cannot be answered through this connection.

get_missing_questions input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "locale": {
      "enum": [
        "en",
        "es"
      ],
      "type": "string",
      "default": "en"
    }
  },
  "additionalProperties": false
}
get_missing_questions output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "demo",
    "quoteNumber",
    "formRevisionId",
    "baseRevision",
    "stage",
    "websiteUrl",
    "sections",
    "nextStep"
  ],
  "properties": {
    "demo": {
      "type": "boolean"
    },
    "stage": {
      "type": "string"
    },
    "nextStep": {
      "type": "string"
    },
    "sections": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "title",
          "questions",
          "answerSchema"
        ],
        "properties": {
          "title": {
            "type": "string"
          },
          "questions": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "id",
                "label",
                "control",
                "required",
                "answerOnWebsite",
                "askedBy",
                "correction"
              ],
              "properties": {
                "id": {
                  "type": "string"
                },
                "label": {
                  "type": "string"
                },
                "askedBy": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "control": {
                  "type": "string"
                },
                "options": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "value",
                      "label"
                    ],
                    "properties": {
                      "label": {
                        "type": "string"
                      },
                      "value": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "number"
                          },
                          {
                            "type": "boolean"
                          }
                        ]
                      }
                    },
                    "additionalProperties": false
                  }
                },
                "helpText": {
                  "type": "string"
                },
                "required": {
                  "type": "boolean"
                },
                "correction": {
                  "anyOf": [
                    {
                      "type": "object",
                      "required": [
                        "answerRevision",
                        "reason",
                        "requireChangedValue"
                      ],
                      "properties": {
                        "reason": {
                          "type": "string"
                        },
                        "answerRevision": {
                          "type": "integer",
                          "maximum": 9007199254740991,
                          "minimum": -9007199254740991
                        },
                        "requireChangedValue": {
                          "type": "boolean"
                        }
                      },
                      "additionalProperties": false
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "attachDocument": {
                  "type": "boolean",
                  "const": true
                },
                "answerOnWebsite": {
                  "type": "boolean"
                }
              },
              "additionalProperties": false
            }
          },
          "answerSchema": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "additionalProperties": false
      }
    },
    "websiteUrl": {
      "type": "string",
      "format": "uri"
    },
    "quoteNumber": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "baseRevision": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "formRevisionId": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
get_missing_questions annotations
{
  "title": "Read outstanding quote questions",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
answer_additional_questions — Save additional quote answers
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Use this when the customer has answered outstanding carrier follow-up questions from get_missing_questions. Saves those answers and returns the updated status. Takes the current baseRevision and an eventId; the same eventId with the same answers returns the original result. A save can overwrite earlier answers and resume affected carrier processing. Do not use for application-page questions (answer_quote_page), a document (attach_quote_document), consent, attestations or protected information.

answer_additional_questions input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "eventId",
    "baseRevision",
    "answers"
  ],
  "properties": {
    "locale": {
      "enum": [
        "en",
        "es"
      ],
      "type": "string",
      "default": "en",
      "description": "Language for the resulting quote status"
    },
    "answers": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "questionId",
          "status",
          "value"
        ],
        "properties": {
          "value": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 5000
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              },
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "maxLength": 500
                },
                "maxItems": 100
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "enum": [
              "confirmed",
              "unknown",
              "declined"
            ],
            "type": "string"
          },
          "questionId": {
            "type": "string",
            "maxLength": 160,
            "minLength": 1
          }
        },
        "additionalProperties": false
      },
      "maxItems": 100,
      "minItems": 1,
      "description": "Only customer-confirmed facts from current additional questions whose answerOnWebsite is false; coverage choices the customer made are fine; never protected information, consent, signatures or owner answers. A document goes through attach_quote_document"
    },
    "eventId": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{8,128}$",
      "description": "Stable unique ID for this answer submission; retries reuse the same ID and identical answers"
    },
    "baseRevision": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": 0,
      "description": "The revision returned by get_missing_questions; conflicts require rereading questions"
    }
  },
  "additionalProperties": false
}
answer_additional_questions output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "demo",
    "quoteNumber",
    "formId",
    "formRevisionId",
    "revision",
    "stage",
    "aggregate",
    "carriers",
    "additionalQuestionCount",
    "nextAction",
    "websiteUrl",
    "pricingNotice",
    "notificationStatus",
    "notificationExpiresAt",
    "progressMessage"
  ],
  "properties": {
    "demo": {
      "type": "boolean"
    },
    "stage": {
      "type": "string"
    },
    "formId": {
      "type": "string"
    },
    "carriers": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "carrierId",
          "status",
          "quote",
          "declineReason",
          "informationSubmitted"
        ],
        "properties": {
          "quote": {
            "anyOf": [
              {
                "type": "object",
                "required": [
                  "coverages",
                  "limits",
                  "carrier"
                ],
                "properties": {
                  "fees": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "label",
                        "amount"
                      ],
                      "properties": {
                        "label": {
                          "type": "string",
                          "minLength": 1
                        },
                        "amount": {
                          "type": "string",
                          "pattern": "^(?:0\\.(?:0[1-9]|[1-9]\\d)|[1-9]\\d*\\.\\d{2})$",
                          "maxLength": 40
                        }
                      },
                      "additionalProperties": false
                    },
                    "minItems": 1
                  },
                  "term": {
                    "type": "string",
                    "minLength": 1
                  },
                  "intro": {
                    "type": "string",
                    "minLength": 1
                  },
                  "taxes": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "label",
                        "amount"
                      ],
                      "properties": {
                        "label": {
                          "type": "string",
                          "minLength": 1
                        },
                        "amount": {
                          "type": "string",
                          "pattern": "^(?:0\\.(?:0[1-9]|[1-9]\\d)|[1-9]\\d*\\.\\d{2})$",
                          "maxLength": 40
                        }
                      },
                      "additionalProperties": false
                    },
                    "minItems": 1
                  },
                  "issuer": {
                    "type": "object",
                    "required": [
                      "name",
                      "paper",
                      "evidence"
                    ],
                    "properties": {
                      "name": {
                        "type": "string",
                        "minLength": 1
                      },
                      "paper": {
                        "enum": [
                          "admitted",
                          "surplus"
                        ],
                        "type": "string"
                      },
                      "evidence": {
                        "type": "string",
                        "minLength": 1
                      }
                    },
                    "description": "The actual issuing insurer, admitted or surplus (nonadmitted) status, and exact result text evidencing that status (or, when the quote names the insurer and its NAIC number but not its status, the risk state's regulator license record cited with the quote's words). It decides the quote's paper ahead of its route's. Omit unless both are evidenced; never infer from its broker, MGA, premium or insurer name.",
                    "additionalProperties": false
                  },
                  "limits": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "label",
                        "value"
                      ],
                      "properties": {
                        "label": {
                          "type": "string",
                          "minLength": 1
                        },
                        "value": {
                          "type": "string",
                          "minLength": 1
                        }
                      },
                      "additionalProperties": false
                    },
                    "minItems": 1,
                    "description": "The quote's limits, sublimits and other stated terms, each labelled as the carrier labels it. Never a price: the premium and its parts, fees, taxes and totals go in yearly/monthly, fees and taxes."
                  },
                  "yearly": {
                    "type": "string",
                    "pattern": "^(?:0\\.(?:0[1-9]|[1-9]\\d)|[1-9]\\d*\\.\\d{2})$",
                    "maxLength": 40
                  },
                  "carrier": {
                    "type": "string",
                    "minLength": 1
                  },
                  "monthly": {
                    "type": "string",
                    "pattern": "^(?:0\\.(?:0[1-9]|[1-9]\\d)|[1-9]\\d*\\.\\d{2})$",
                    "maxLength": 40
                  },
                  "building": {
                    "type": "string",
                    "minLength": 1
                  },
                  "dueToday": {
                    "type": "string",
                    "pattern": "^(?:0\\.(?:0[1-9]|[1-9]\\d)|[1-9]\\d*\\.\\d{2})$",
                    "maxLength": 40
                  },
                  "keyTerms": {
                    "type": "object",
                    "properties": {
                      "end": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "The policy's expiration date."
                      },
                      "start": {
                        "type": "string",
                        "format": "date",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
                        "description": "The policy's effective date."
                      },
                      "contents": {
                        "type": "string",
                        "pattern": "^(?:0|[1-9]\\d*)\\.\\d{2}$",
                        "maxLength": 40,
                        "description": "The contents or personal property limit (Coverage C)."
                      },
                      "coverage": {
                        "type": "array",
                        "items": {
                          "enum": [
                            "homeowners_dwelling",
                            "dwelling_property",
                            "mobile_home",
                            "condo_unit_owners",
                            "personal_contents",
                            "home_equipment_breakdown",
                            "personal_deductible_buyback",
                            "personal_dic",
                            "personal_liability",
                            "personal_liability_vacant_land",
                            "homeowners_earthquake",
                            "homeowners_earthquake_excess_or_buyback",
                            "personal_umbrella",
                            "personal_flood_primary",
                            "personal_flood_excess",
                            "personal_articles_floater",
                            "residential_named_storm",
                            "collector_auto",
                            "personal_auto",
                            "recreational_vehicle",
                            "vessel",
                            "term_life",
                            "vacant_building_property_personal",
                            "vacant_building_property_commercial",
                            "apartment_building_property",
                            "commercial_building_property",
                            "business_income",
                            "disaster_income_protection",
                            "commercial_earthquake_dic",
                            "commercial_flood_primary",
                            "commercial_flood_excess",
                            "commercial_deductible_buyback",
                            "sawmill_property",
                            "hay_in_the_open",
                            "explosives_property",
                            "amusement_property",
                            "builders_risk_new_construction_residential",
                            "builders_risk_new_construction_commercial",
                            "builders_risk_renovation_residential",
                            "builders_risk_renovation_commercial",
                            "contractor_general_liability",
                            "tract_home_condo_contractor_gl",
                            "blasting_contractor_gl",
                            "building_moving_gl",
                            "crane_rigging_contractor_gl",
                            "demolition_contractor_gl",
                            "scaffold_contractor_gl",
                            "oilfield_contractor_gl",
                            "premises_liability_vacant_land",
                            "premises_liability_vacant_building",
                            "premises_liability_apartment",
                            "commercial_general_liability",
                            "liquor_liability",
                            "products_completed_operations",
                            "products_recall",
                            "excess_liability",
                            "directors_officers",
                            "fiduciary_liability",
                            "cyber_liability",
                            "workers_compensation",
                            "employment_practices_liability",
                            "pollution_liability",
                            "ambulance_services",
                            "amusement_liability",
                            "clinical_trials",
                            "explosives_liability",
                            "fireworks_display",
                            "foster_family",
                            "hot_air_balloon",
                            "outfitters_guides",
                            "ip_infringement",
                            "seasonal_mobile_vendor",
                            "security_guard",
                            "special_event",
                            "film_railroad_protective",
                            "tattoo_body_piercing_gl",
                            "professional_liability",
                            "technology_errors_omissions",
                            "medical_professional_liability",
                            "crop_hail_private",
                            "architects_engineers",
                            "campaign_treasurer",
                            "creditors_committee",
                            "medical_billing_eo",
                            "tattoo_body_piercing_eo",
                            "crime",
                            "excess_crime",
                            "employee_identity_fraud",
                            "surety_bond",
                            "kidnap_ransom",
                            "aviation_excess_liability",
                            "film_contingent_aircraft",
                            "drone",
                            "commercial_auto",
                            "commercial_inland_marine",
                            "commercial_vessel",
                            "excess_motor_truck_cargo",
                            "high_limits_disability",
                            "international_major_medical",
                            "cannabis_operations",
                            "event_cancellation",
                            "parametric_weather",
                            "tax_audit_defense",
                            "political_risk",
                            "prize_indemnification",
                            "hole_in_one",
                            "film_failure_to_survive"
                          ],
                          "type": "string"
                        },
                        "minItems": 1,
                        "description": "The policy lines this quote actually provides (policy-lines.ts), one per coverage component, package parts too, the policy's main line first. Read from the quote, never copied from the product's declared lines."
                      },
                      "dwelling": {
                        "type": "string",
                        "pattern": "^(?:0|[1-9]\\d*)\\.\\d{2}$",
                        "maxLength": 40,
                        "description": "The building or dwelling limit (Coverage A)."
                      },
                      "liability": {
                        "type": "object",
                        "required": [
                          "perOccurrence"
                        ],
                        "properties": {
                          "aggregate": {
                            "type": "string",
                            "pattern": "^(?:0|[1-9]\\d*)\\.\\d{2}$",
                            "maxLength": 40,
                            "description": "The aggregate liability limit."
                          },
                          "perOccurrence": {
                            "type": "string",
                            "pattern": "^(?:0|[1-9]\\d*)\\.\\d{2}$",
                            "maxLength": 40,
                            "description": "The liability limit per occurrence (per claim on a claims-made policy), or the one liability limit a quote states without occurrence or aggregate wording (US Assure VacantExpress's \"General Liability Limit\"); leave aggregate out then."
                          }
                        },
                        "additionalProperties": false
                      },
                      "lossOfUse": {
                        "type": "string",
                        "pattern": "^(?:0|[1-9]\\d*)\\.\\d{2}$",
                        "maxLength": 40,
                        "description": "The loss of use or additional living expense limit (Coverage D)."
                      },
                      "termMonths": {
                        "type": "integer",
                        "maximum": 9007199254740991,
                        "minimum": 1,
                        "description": "The policy term in months; an event policy states none."
                      },
                      "deductibles": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "enum": [
                                "all_other_perils",
                                "wind_hail"
                              ],
                              "type": "string",
                              "description": "all_other_perils for the property's all other perils (AOP) deductible, wind_hail for its wind or hail deductible; leave out for any other."
                            },
                            "amount": {
                              "type": "string",
                              "pattern": "^(?:0|[1-9]\\d*)\\.\\d{2}$",
                              "maxLength": 40,
                              "description": "A fixed deductible."
                            },
                            "percent": {
                              "type": "number",
                              "maximum": 100,
                              "description": "A percentage deductible (\"5% of Coverage A\" is 5).",
                              "exclusiveMinimum": 0
                            },
                            "appliesTo": {
                              "type": "string",
                              "minLength": 1,
                              "description": "What it applies to, in the carrier's words (\"All other perils\", \"Wind/hail\", \"Building\"), when the quote says."
                            }
                          },
                          "additionalProperties": false
                        },
                        "minItems": 1
                      },
                      "otherStructures": {
                        "type": "string",
                        "pattern": "^(?:0|[1-9]\\d*)\\.\\d{2}$",
                        "maxLength": 40,
                        "description": "The other structures limit (Coverage B)."
                      }
                    },
                    "additionalProperties": false
                  },
                  "coverages": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1
                    },
                    "minItems": 1,
                    "description": "The coverages the quote provides, in the carrier's words. Never a price: the premium and its parts, fees, taxes and totals go in yearly/monthly, fees and taxes."
                  },
                  "startDate": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
                  },
                  "validUntil": {
                    "type": "string",
                    "format": "date",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
                  },
                  "monthlyCount": {
                    "type": "integer",
                    "maximum": 9007199254740991,
                    "exclusiveMinimum": 0
                  },
                  "subjectivities": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1
                    },
                    "minItems": 1
                  },
                  "underwritingApproval": {
                    "enum": [
                      "pending",
                      "approved"
                    ],
                    "type": "string",
                    "description": "\"pending\" when the carrier calls this price indicative, an indication or an estimate, or shows it with a referral, underwriter review or pending-approval notice; omit for a firm quote."
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "type": "string"
          },
          "carrierId": {
            "type": "string"
          },
          "declineReason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "informationSubmitted": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      }
    },
    "revision": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "aggregate": {
      "type": "object",
      "required": [
        "status",
        "total",
        "terminal",
        "quoted",
        "referred",
        "declined",
        "blocked"
      ],
      "properties": {
        "total": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        "quoted": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        "status": {
          "type": "string"
        },
        "blocked": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        "declined": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        "referred": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        "terminal": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        }
      },
      "additionalProperties": false
    },
    "nextAction": {
      "enum": [
        "answer_page",
        "finish_on_website",
        "answer_questions",
        "wait",
        "review",
        "review_application",
        "cancelled"
      ],
      "type": "string"
    },
    "websiteUrl": {
      "type": "string",
      "format": "uri"
    },
    "quoteNumber": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "pricingNotice": {
      "type": "string"
    },
    "formRevisionId": {
      "type": "string"
    },
    "progressMessage": {
      "type": "string"
    },
    "notificationStatus": {
      "enum": [
        "subscribed",
        "not_subscribed"
      ],
      "type": "string"
    },
    "notificationExpiresAt": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "additionalQuestionCount": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    }
  },
  "additionalProperties": false
}
answer_additional_questions annotations
{
  "title": "Save additional quote answers",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": true
}
attach_quote_document — Attach a document to your quote
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Use this when a question marked attachDocument, on the current application page or among carrier follow-ups, asks for a document such as a replacement cost estimate or an existing policy or application, and the customer has attached it or wants to provide it. Pass the customer's attachment as file when this chat app supports file inputs; Menlo checks it is a PDF, JPEG or PNG up to 5 MB, keeps it with that question and saves the question's upload answer, which can resume eligible carrier processing. When no file arrives, returns attached false, a website upload link for the customer and the next step. An attached existing policy or application can suggest answers, saved with answer_quote_page once the customer confirms each. Takes the current baseRevision and an eventId; a retry of the same file reuses its eventId. Do not use for a file that answers no open document question, or for protected information.

attach_quote_document input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "eventId",
    "baseRevision",
    "questionId"
  ],
  "properties": {
    "file": {
      "type": "object",
      "required": [
        "download_url",
        "file_id"
      ],
      "properties": {
        "file_id": {
          "type": "string",
          "maxLength": 512,
          "description": "ChatGPT file ID of the attachment"
        },
        "file_name": {
          "type": "string",
          "maxLength": 500,
          "description": "The attachment's file name"
        },
        "mime_type": {
          "type": "string",
          "maxLength": 200,
          "description": "Type ChatGPT reports; Menlo checks the file's own bytes"
        },
        "download_url": {
          "type": "string",
          "maxLength": 4096,
          "description": "Temporary download URL ChatGPT supplies for the attached file"
        }
      },
      "description": "The document the customer attached in this conversation: a PDF, JPEG or PNG up to 5 MB. Omit it when the chat app cannot pass attached files; Menlo then returns a website upload link"
    },
    "locale": {
      "enum": [
        "en",
        "es"
      ],
      "type": "string",
      "default": "en"
    },
    "eventId": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{8,128}$",
      "description": "Unique ID for this attachment; a retry of the same file reuses it, a different file takes a new one"
    },
    "questionId": {
      "type": "string",
      "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,159}$",
      "description": "ID of a current question marked attachDocument, e.g. fair-plan.replacement_cost_estimate"
    },
    "baseRevision": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": 0,
      "description": "baseRevision from get_current_page or get_missing_questions"
    }
  },
  "additionalProperties": false
}
attach_quote_document output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "demo",
    "quoteNumber",
    "questionId",
    "attached",
    "baseRevision",
    "uploadUrl",
    "uploadUrlExpiresAt",
    "websiteUrl",
    "nextStep"
  ],
  "properties": {
    "demo": {
      "type": "boolean"
    },
    "attached": {
      "type": "boolean"
    },
    "nextStep": {
      "type": "string"
    },
    "uploadUrl": {
      "anyOf": [
        {
          "type": "string",
          "format": "uri"
        },
        {
          "type": "null"
        }
      ]
    },
    "questionId": {
      "type": "string"
    },
    "websiteUrl": {
      "type": "string",
      "format": "uri"
    },
    "quoteNumber": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "baseRevision": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "uploadUrlExpiresAt": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false
}
attach_quote_document annotations
{
  "title": "Attach a document to your quote",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": true
}
get_connected_quote_profile — Read connected quote identity
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when you need to know which quote this connection covers. Returns the identifier and display name of the one connected quote, or a new-quote connection label before its draft is started. The connection covers one quote, not a customer account.

get_connected_quote_profile input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {},
  "additionalProperties": false
}
get_connected_quote_profile output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id",
    "name"
  ],
  "properties": {
    "id": {
      "type": "string",
      "pattern": "\\S",
      "minLength": 1
    },
    "name": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
get_connected_quote_profile annotations
{
  "title": "Read connected quote identity",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
7367 ms
95th percentile latency
7367 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 7367 ms · metadata changed · 12 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http menlo-insurance-mcp https://www.menloinsurance.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add menlo-insurance-mcp --url https://www.menloinsurance.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable menlo-insurance-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "menlo-insurance-mcp": {
      "url": "https://www.menloinsurance.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "menlo-insurance-mcp": {
      "type": "streamableHttp",
      "url": "https://www.menloinsurance.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start menlo-insurance-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "menlo-insurance-mcp": {
      "type": "http",
      "url": "https://www.menloinsurance.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http menlo-insurance-mcp https://www.menloinsurance.com/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://www.menloinsurance.com/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "menlo-insurance-mcp": {
      "serverUrl": "https://www.menloinsurance.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Menlo Insurance MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Menlo Insurance MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing