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

VariableRequiredDescription
DATABASE_URL✅PostgreSQL connection string

Available tools (7)

Policies

ToolDescription
list_policiesFiltered list of policies — status, stateCode, producerCode, agencyId
get_policyFull policy detail by UUID or policy number (e.g. POL-2026-001234)
list_submissionsFiltered list of submissions — status, transactionType, sourceChannel
get_submissionFull submission detail by UUID or submission number

Underwriting Agent Tasks

ToolDescription
get_agent_tasksActive UW agent tasks — filter by taskKind, entityId, assignedTo
complete_agent_taskMark a task completed, escalated, or failed with outcome notes

Renewals

ToolDescription
list_renewalsPolicies 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 KindTriggerDescription
quote_reviewNew quote boundUW reviews risk before policy issue
endorsement_reviewPolicy endorsement requestMid-term change review
cancellationCancellation requestConfirm reason and effective date
renewal_preparation60-day pre-renewalPrepare renewal terms
large_loss_reviewLoss > thresholdSenior UW reviews large claims