PolicyOne MCP Server
The PolicyOne Model Context Protocol (MCP) server exposes policy, submission, renewal, and underwriting agent task data to any MCP-compatible AI client.
What is MCP?
Model Context Protocol is an open standard that lets AI models call structured tools backed by real data sources. The PolicyOne MCP server implements this standard over stdio transport.
Package location
policyone-platform/
packages/
mcp/
package.json @policyone/mcp
tsconfig.json
src/
server.ts Entry point
tools/
policies.ts list_policies · get_policy · list_submissions · get_submission
agent-tasks.ts get_agent_tasks · complete_agent_task
renewals.ts list_renewals
Running the server
Development
pnpm --filter @policyone/mcp dev
Environment variables
| Variable | Required | Description |
|---|---|---|
DATABASE_URL | ✅ | PostgreSQL connection string |
Available tools (7)
Policies
| Tool | Description |
|---|---|
list_policies | Filtered list of policies — status, stateCode, producerCode, agencyId |
get_policy | Full policy detail by UUID or policy number (e.g. POL-2026-001234) |
list_submissions | Filtered list of submissions — status, transactionType, sourceChannel |
get_submission | Full submission detail by UUID or submission number |
Underwriting Agent Tasks
| Tool | Description |
|---|---|
get_agent_tasks | Active UW agent tasks — filter by taskKind, entityId, assignedTo |
complete_agent_task | Mark a task completed, escalated, or failed with outcome notes |
Renewals
| Tool | Description |
|---|---|
list_renewals | Policies expiring within N days (default 60) — ordered by expiration date |
Example: list renewals
{
"tool": "list_renewals",
"arguments": {
"tenantId": "550e8400-e29b-41d4-a716-446655440000",
"withinDays": 30,
"producerCode": "SMITH-TX-001"
}
}
Response:
{
"count": 5,
"windowDays": 30,
"windowStart": "2026-07-01",
"windowEnd": "2026-07-31",
"policies": [
{
"id": "...",
"policyNumber": "POL-2025-000567",
"status": "in_force",
"stateCode": "TX",
"expirationDate": "2026-07-15",
...
}
]
}
Example: get UW tasks for a submission
{
"tool": "get_agent_tasks",
"arguments": {
"tenantId": "550e8400-e29b-41d4-a716-446655440000",
"taskKind": "quote_review",
"entityId": "sub-uuid-here"
}
}
Connecting to Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"policyone": {
"command": "pnpm",
"args": ["--filter", "@policyone/mcp", "dev"],
"cwd": "/path/to/policyone-platform",
"env": {
"DATABASE_URL": "postgresql://..."
}
}
}
}
Tenant isolation
Every tool requires a tenantId UUID. All queries are scoped to that tenant with no cross-tenant access.
Task kinds reference
| Task Kind | Trigger | Description |
|---|---|---|
quote_review | New quote bound | UW reviews risk before policy issue |
endorsement_review | Policy endorsement request | Mid-term change review |
cancellation | Cancellation request | Confirm reason and effective date |
renewal_preparation | 60-day pre-renewal | Prepare renewal terms |
large_loss_review | Loss > threshold | Senior UW reviews large claims |