Skip to main content
Glama

bizinsured

Estimate premiums and match carriers

get_carrier_recommendations

Use this when the user wants premium estimates or carrier options for BOP, GL, WC or commercial_auto and you have the confirmed classification, the business's state, annual revenue and at least one coverage. Returns carriers whose appetite data matches, market budget estimates (not quotes) with sources, assumptions and caveats, and explicit estimateIssues for missing or unsupported inputs. Workers' comp in OH, WA, ND and WY is returned separately in stateFundEstimates; the Ohio figure is an estimate from published BWC rates, not a BWC quote. Omit any value the user did not give; never infer payroll from revenue. Each call saves the inputs and results in BizInsured's records and returns a recommendationId to pass to connect_with_agent; nothing is sent to carriers or agents.

Input Schema

NameRequiredDescriptionDefault
stateYesTwo-letter code of the US state where the business operates
naics_codeNo
deductiblesNo
has_alcoholNo
iso_gl_codeNo
has_deliveryNo
prior_lossesNo
vehicle_countNo
annual_payrollNoActual annual payroll; never infer from revenue
annual_revenueYes
building_valueNo
effective_dateNo
employee_countNo
square_footageNo
coverage_limitsNo
payroll_by_classNoActual payroll split by state and workers compensation classification
desired_coveragesYes
years_in_businessNo
experience_modifierNo
business_descriptionNoThe business activity, as confirmed with classify_business
business_property_valueNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed11 schema fields changed
    • addedInput schema / properties / business_description / description
      Added value: +"The business activity, as confirmed with classify_business"
    • changedInput schema / properties / business_description / maxLength
      Previous value: -4000New value: +500
    • removedInput schema / properties / city
      Removed value: -{
      -  "maxLength": 200,
      -  "type": "string"
      -}
    • removedInput schema / properties / current_carrier
      Removed value: -{
      -  "maxLength": 200,
      -  "type": "string"
      -}
    • removedInput schema / properties / current_policy_expiration
      Removed value: -{
      -  "description": "When the current policy expires or renews (YYYY-MM-DD), if known. Omit dates more than 365 days past or 730 days ahead",
      -  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      -  "type": "string"
      -}
    • removedInput schema / properties / prior_loss_details
      Removed value: -{
      -  "maxLength": 4000,
      -  "type": "string"
      -}
    • removedInput schema / properties / serves_food
      Removed value: -{
      -  "type": "boolean"
      -}
    • removedInput schema / properties / source
      Removed value: -{
      -  "maxLength": 50,
      -  "type": "string"
      -}
    • addedInput schema / properties / state / description
      Added value: +"Two-letter code of the US state where the business operates"
    • removedInput schema / properties / vehicle_types
      Removed value: -{
      -  "items": {
      -    "maxLength": 100,
      -    "minLength": 1,
      -    "type": "string"
      -  },
      -  "maxItems": 50,
      -  "type": "array"
      -}
    • removedInput schema / properties / zip_code
      Removed value: -{
      -  "pattern": "^\\d{5}(-\\d{4})?$",
      -  "type": "string"
      -}
  2. Changed1 schema field changed
    • addedInput schema / properties / current_policy_expiration
      Added value: +{
      +  "description": "When the current policy expires or renews (YYYY-MM-DD), if known. Omit dates more than 365 days past or 730 days ahead",
      +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +  "type": "string"
      +}
  3. Changed37 schema fields changed
    • addedInput schema / properties / annual_payroll
      Added value: +{
      +  "description": "Actual annual payroll; never infer from revenue",
      +  "maximum": 1000000000000,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / annual_revenue / maximum
      Added value: +1000000000000
    • addedInput schema / properties / annual_revenue / minimum
      Added value: +0
    • addedInput schema / properties / building_value
      Added value: +{
      +  "maximum": 1000000000000,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • removedInput schema / properties / business_description / default
      Removed value: -""
    • addedInput schema / properties / business_description / maxLength
      Added value: +4000
    • addedInput schema / properties / business_property_value
      Added value: +{
      +  "maximum": 1000000000000,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / city
      Added value: +{
      +  "maxLength": 200,
      +  "type": "string"
      +}
    • addedInput schema / properties / coverage_limits
      Added value: +{
      +  "additionalProperties": {
      +    "maxLength": 100,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "propertyNames": {
      +    "enum": [
      +      "BOP",
      +      "GL",
      +      "WC",
      +      "commercial_auto"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / current_carrier
      Added value: +{
      +  "maxLength": 200,
      +  "type": "string"
      +}
    • addedInput schema / properties / deductibles
      Added value: +{
      +  "additionalProperties": {
      +    "maximum": 1000000000000,
      +    "minimum": 0,
      +    "type": "number"
      +  },
      +  "propertyNames": {
      +    "enum": [
      +      "BOP",
      +      "GL",
      +      "WC",
      +      "commercial_auto"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / desired_coverages / maxItems
      Added value: +20
    • addedInput schema / properties / desired_coverages / minItems
      Added value: +1
    • addedInput schema / properties / effective_date
      Added value: +{
      +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +  "type": "string"
      +}
    • removedInput schema / properties / employee_count / default
      Removed value: -1
    • addedInput schema / properties / employee_count / maximum
      Added value: +1000000
    • addedInput schema / properties / employee_count / minimum
      Added value: +0
    • changedInput schema / properties / employee_count / type
      Previous value: -"number"New value: +"integer"
    • addedInput schema / properties / experience_modifier
      Added value: +{
      +  "exclusiveMinimum": 0,
      +  "maximum": 10,
      +  "type": "number"
      +}
    • addedInput schema / properties / iso_gl_code / pattern
      Added value: +"^\\d{3,6}$"
    • addedInput schema / properties / naics_code / pattern
      Added value: +"^\\d{6}$"
    • addedInput schema / properties / payroll_by_class
      Added value: +{
      +  "description": "Actual payroll split by state and workers compensation classification",
      +  "items": {
      +    "properties": {
      +      "class_code": {
      +        "pattern": "^\\d{1,6}$",
      +        "type": "string"
      +      },
      +      "class_system": {
      +        "maxLength": 30,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "payroll": {
      +        "exclusiveMinimum": 0,
      +        "maximum": 1000000000000,
      +        "type": "number"
      +      },
      +      "state": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "state",
      +      "class_code",
      +      "payroll"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 100,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedInput schema / properties / prior_loss_details
      Added value: +{
      +  "maxLength": 4000,
      +  "type": "string"
      +}
    • removedInput schema / properties / prior_losses / default
      Removed value: -false
    • addedInput schema / properties / serves_food
      Added value: +{
      +  "type": "boolean"
      +}
    • addedInput schema / properties / source
      Added value: +{
      +  "maxLength": 50,
      +  "type": "string"
      +}
    • addedInput schema / properties / square_footage / maximum
      Added value: +1000000000000
    • addedInput schema / properties / square_footage / minimum
      Added value: +0
    • addedInput schema / properties / vehicle_count / maximum
      Added value: +1000000
    • addedInput schema / properties / vehicle_count / minimum
      Added value: +0
    • changedInput schema / properties / vehicle_count / type
      Previous value: -"number"New value: +"integer"
    • addedInput schema / properties / vehicle_types
      Added value: +{
      +  "items": {
      +    "maxLength": 100,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "maxItems": 50,
      +  "type": "array"
      +}
    • removedInput schema / properties / years_in_business / default
      Removed value: -1
    • addedInput schema / properties / years_in_business / maximum
      Added value: +300
    • addedInput schema / properties / years_in_business / minimum
      Added value: +0
    • addedInput schema / properties / zip_code / pattern
      Added value: +"^\\d{5}(-\\d{4})?$"
    • changedInput schema / required
      Previous value: -[
      -  "naics_code",
      -  "state",
      -  "annual_revenue",
      -  "desired_coverages"
      -]New value: +[
      +  "state",
      +  "annual_revenue",
      +  "desired_coverages"
      +]
  4. First observed

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond the annotations: outputs are market budget estimates, not quotes; WC in OH/WA/ND/WY is returned separately in stateFundEstimates with the Ohio figure sourced from published BWC rates; missing inputs surface as estimateIssues; and each call persists data and returns a recommendationId, consistent with readOnlyHint=false and non-idempotent behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the invocation trigger, then returns, then caveats and persistence, with no filler sentences. It is dense but each clause serves a purpose, though the WC state-fund detail is a lengthy aside.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 21-parameter tool with no output schema, the description does describe the return shape (matching carriers, budget estimates with sources/assumptions/caveats, estimateIssues, stateFundEstimates, recommendationId) and the required inputs. Remaining gaps are the undocumented optional parameters and details like effective_date or coverage_limits semantics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 19% schema description coverage across 21 parameters, the description carries the burden, and it does clarify the key required inputs (state, annual revenue, desired_coverages) and the payroll-vs-revenue distinction. However, it says nothing about many optional inputs such as deductibles, coverage_limits, iso_gl_code, experience_modifier, or payroll_by_class, so the compensation is partial.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States specific verbs and resources (premium estimates and carrier matching) and scopes them to named coverage lines (BOP, GL, WC, commercial_auto). It also distinguishes itself from siblings by requiring 'the confirmed classification', implicitly routing after classify_business rather than suggest_coverages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit preconditions for invocation: confirmed classification, business state, annual revenue, and at least one coverage. It also prescribes data-handling behavior ('Omit any value the user did not give; never infer payroll from revenue') but never names a sibling alternative or a when-not-to-use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources