Insurance MCP Server
Make your insurance data queryable by AI agents. Coverage details, renewal tracking, discount analysis. Works with Claude, ChatGPT, and any MCP client.
Developer Preview: Sign up and generate an API key from your dashboard. Add the config below and your agent can start querying your insurance data.
Overview
AI tools like Claude and ChatGPT can read a PDF you upload. But they can't remember it next week, cross-reference it with your other policies, or compare your rate to the market. The data isn't structured. It isn't persistent. It isn't connected.
This MCP server gives your AI agent access to the structured insurance data in your Policy Penguin vault: coverage details, limits, deductibles, discounts, renewal history. It uses the Model Context Protocol, so any MCP-compatible client can query it.
Policy Penguin does the extraction and structuring. Your AI agent gets clean, validated data it can reason about. For direct programmatic access, see the REST API.
What you can ask
- "What's my auto deductible?"
- "Do I have umbrella coverage? What are the limits?"
- "What discounts am I missing?"
- "How did my rate compare to the state average this year?"
- "What changed on my last renewal?"
- "Show me all my policies and when they renew."
Prerequisites
- A Policy Penguin account with at least one policy uploaded
- An MCP-compatible AI client (Claude Desktop, Claude Code, ChatGPT, or any MCP client)
- An API key from your Policy Penguin dashboard
Connect to the Server
Add the Policy Penguin MCP server to your AI agent's configuration. The server uses the Streamable HTTP transport.
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"policy-penguin": {
"url": "https://mcp.policypenguin.ai/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
} Claude Code
Add to your project's .mcp.json:
{
"mcpServers": {
"policy-penguin": {
"type": "http",
"url": "https://mcp.policypenguin.ai/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
} Other MCP Clients
OpenClaw, ChatGPT, and any client supporting the Model Context Protocol can connect to https://mcp.policypenguin.ai/mcp with Bearer token authentication. See our OpenClaw tutorial for a step-by-step walkthrough.
Tools
Tools are functions your AI agent can call. Each returns structured JSON. The server provides four tools covering portfolio overview, policy details, asset details, and document upload.
get_portfolio
Get all policies and assets. Returns policy summaries (carrier, type, premium, coverage, insights count) and assets (vehicles, properties) with coverage status.
Parameters
None. Returns all policies and assets in your vault.
Example Response
{
"policies": [
{
"id": "pol_a1b2c3d4",
"type": "auto",
"carrier": "State Farm",
"state": "TX",
"premium": {
"amount": 2400,
"period": "6mo",
"currency": "usd"
},
"vehicles": 2,
"insights_count": 4,
"renewal_date": "2026-09-01"
},
{
"id": "pol_e5f6g7h8",
"type": "home",
"carrier": "Progressive",
"state": "TX",
"premium": {
"amount": 1800,
"period": "12mo",
"currency": "usd"
},
"insights_count": 3,
"renewal_date": "2026-11-15"
}
],
"assets": [
{
"id": "ast_x1y2z3",
"type": "vehicle",
"name": "2022 Honda Accord",
"covered": true
},
{
"id": "ast_x4y5z6",
"type": "vehicle",
"name": "2020 Toyota Camry",
"covered": true
},
{
"id": "ast_x7y8z9",
"type": "property",
"name": "123 Main St",
"covered": true
}
]
} get_policy_details
Full details for a specific policy: structured coverages with numeric limits and deductibles (grouped by vehicle), insights, discount analysis with savings estimates, renewal timeline, state minimums, and exclusions.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
policy_id | string | Yes | The policy ID to retrieve details for. |
Example Response
{
"id": "pol_a1b2c3d4",
"type": "auto",
"carrier": "State Farm",
"state": "TX",
"premium": {
"amount": 2400,
"period": "6mo",
"currency": "usd"
},
"effective_date": "2026-03-01",
"renewal_date": "2026-09-01",
"coverages": {
"policy_level": {
"bodily_injury": {
"per_person": 250000,
"per_accident": 500000
},
"property_damage": {
"limit": 100000
},
"uninsured_motorist": {
"per_person": 250000,
"per_accident": 500000
}
},
"by_vehicle": [
{
"vehicle": "2022 Honda Accord",
"collision": {
"deductible": 500
},
"comprehensive": {
"deductible": 250
}
},
{
"vehicle": "2020 Toyota Camry",
"collision": {
"deductible": 1000
},
"comprehensive": {
"deductible": 500
}
}
]
},
"insights": [
{
"type": "coverage_gap",
"severity": "high",
"title": "Umbrella liability gap",
"description": "Auto liability is $250K/$500K but umbrella requires $500K/$500K minimum."
},
{
"type": "hidden_fee",
"title": "Duplicate roadside assistance",
"savings_estimate": 72
}
],
"discounts": {
"applied": [
"Multi-policy",
"Multi-vehicle",
"Paid in full"
],
"available": [
{
"name": "Defensive driving course",
"estimated_savings": 160
},
{
"name": "Good student",
"estimated_savings": 120
}
]
}
} get_asset_details
Detail for a vehicle or property: current coverage, coverage history, premium trends.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
asset_id | string | Yes | The asset ID to retrieve details for. |
Example Response
{
"asset": {
"type": "vehicle",
"name": "2022 Honda Accord",
"details": {
"year": 2022,
"make": "Honda",
"model": "Accord"
}
},
"current_coverage": {
"carrier": "State Farm",
"policy_number": "SF-12345678",
"premium": {
"amount": 2400,
"period": "6-month",
"currency": "usd"
},
"effective": {
"start": "2025-12-01",
"end": "2026-06-01"
},
"status": "active"
},
"premium_trends": {
"current_monthly": 400,
"change_percent": 8.1,
"trend": "increasing"
}
} upload_policy
Upload an insurance policy document for extraction. Accepts PDF, JPEG, or PNG as base64. Returns structured policy data in about 15 seconds. The document is processed and deleted. Only extracted data is stored.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file | string | Yes | Base64-encoded file content. |
filename | string | Yes | Original filename (e.g. "my-policy.pdf"). |
mime_type | string | Yes | "application/pdf", "image/jpeg", or "image/png" |
Example Response
{
"policies": [
{
"id": "pol_n3w4p5",
"carrier": "Progressive",
"type": "auto",
"premium": {
"amount": 1850,
"period": "6-month",
"currency": "usd"
},
"effective": {
"start": "2026-03-15",
"end": "2026-09-15"
},
"vehicles": [
{
"year": 2020,
"make": "Toyota",
"model": "Camry"
}
],
"extraction_quality": "clean",
"is_renewal": false
}
],
"insights_status": "generating"
} Resources
Resources are data your AI agent can read without calling a function. They update automatically as you upload policies and renewals.
insurance://portfolio
Current portfolio snapshot: total policies, carriers, per-policy summary with premiums and renewal dates.
insurance://renewals
Upcoming renewal dates across all policies, sorted by date.
What This Looks Like in Practice
The same AI, the same question. The difference is whether your insurance data is connected.
Without the insurance MCP server:
With the insurance MCP server:
How It Works
- Upload your policies to Policy Penguin. We extract and structure the data from your documents.
- Policy Penguin validates and stores the structured data. Coverages, limits, deductibles, discounts, insights. All typed and verified.
- Add the MCP server to your AI agent. Use the config snippets above to connect Claude, ChatGPT, or any MCP client.
- Ask questions in natural language. Your agent calls the tools and resources to answer with real, validated data from your policies.
Connect your agent.
Sign up for Policy Penguin, upload a policy, and generate your API key. Add the MCP config above and start asking questions.
Or see the Insurance Intelligence API for direct programmatic access to the same data.