# Jerry Insurance

> Compare US car, home and renters insurance quotes with Jerry. Sign-in required; buy in the app.

- name: ai.jerry/insurance
- version: 0.0.1
- connection class: R0 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 92/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/ai.jerry%2Finsurance
- tools: https://api.protogrid.dev/v1/servers/ai.jerry%2Finsurance/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "insurance": {
      "type": "http",
      "url": "https://mcp.jerry.ai/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% +updated-14d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 92/100 (strong)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 93 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 1 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 8 of 8 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 6,894 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 8, about 6,894 tokens to load them all
- tool set hash: 94d8ff0050f7eee42f37669b434f42bd
- badge: [![protogrid quality](https://protogrid.dev/badge/ai.jerry/insurance.svg)](https://protogrid.dev/servers/ai.jerry/insurance)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://mcp.jerry.ai/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (8)

- `jerry_get_account`: Read the name, email and phone on the customer's Jerry account, and whether the phone is verified. It doesn't verify an email or change any insurance information.
- `jerry_get_quotes`: List every quote for a shopping intent, cheapest first by monthly price (in USD cents); each policy has a coverageSummary. Pass up to 4 bundleIds to also get their coverages, discounts and payment plans, for example to compare them. Prices are estimates until priceStatus is final. Declined quotes are left out and counted in declinedCount. It doesn't request quotes.
- `jerry_get_status`: Read where the customer's insurance shopping stands: the stage, what the current goal still needs (by application path), a summary of the application, what Jerry found that isn't on the application yet (suggested) and, when a request is ready, the confirmation to show. It doesn't change anything.
- `jerry_request_final_price`: Get the final price of the quote the customer chose. Call it first with bundleId only: that selects the quote and returns the status, which may list what the final price still needs, then a confirmation. After the customer says yes to that confirmation, call again with its token and the customer's exact reply. Nothing is requested unless requested comes back true.
- `jerry_request_quotes`: Request quotes. Every request needs the confirmation from the status: show its summary, get the customer's explicit yes, then pass its token and their exact reply. Nothing is requested unless requested comes back true; reason says why not, and status is the intent after the call. On stale_confirmation the facts changed: show the new confirmation and ask again.
- `jerry_start_shopping`: Start shopping for the insurance products the customer asked for. If a shopping intent for exactly these products is already open, it resumes that one. Pass the main facts you already know in application, so the status asks only for the rest. application takes the main fields only: send any other fact with jerry_update_application right after. Returns the status, with rejected and clarify. When a fact comes from anything other than the customer, sources says where, and permission holds the customer's reply allowing it.
- `jerry_update_application`: Save application facts the customer gave, in their own words. Every field is optional and merges into what's saved, so send only facts that are new or changed.
- Items with an id update that driver, car or home; items without one are added. included puts an item on the quote or leaves it off.
- Add a car by vin, by licensePlate and licensePlateState, or by year, make and model. Send year, make and model only when there's no VIN or plate, since those set them. A final price needs the VIN.
- Answer any other requirement in answers, by its path. A fact that has its own field here comes back rejected as typed_field if it's sent in answers.
- coverage and history.currentMonthlyPremiumCents are optional and never block quotes. Send them only when the customer asks for a coverage level or specific coverages, or says what they pay now.
- Drivers and cars Jerry found are in the status's suggested list, each with an id that starts with suggested:. Once the customer confirms one, send that id in drivers or vehicles with included: true.
Returns the status, with suggested. rejected lists values to correct with the customer, and clarify lists values to choose from. The rest of the write is saved either way.
- `jerry_wait`: Wait for quotes or a final price after requesting them. Returns as soon as they're ready, or after timeoutSeconds with the status so far; call again while they're still running. When quotes are ready, it returns the quote list too. A final price is ready once it's resolved. If a Jerry agent takes it over (manual) or it's taking longer than usual (delayed), the wait stops with that reason, and the status's nextStep says what happens next. Calling again on a delayed price keeps waiting.
