State Farm Capabilities
Naftiko 0.5 capability definitions for State Farm - 122 capabilities showing integration workflows and service orchestrations.
Executes the actuarial catastrophe model in Snowflake for a specified peril and region, calculates probable maximum loss, and publishes results to the executive Power BI dashboard.
naftiko: "0.5"
info:
label: "Actuarial Catastrophe Model Run"
description: "Executes the actuarial catastrophe model in Snowflake for a specified peril and region, calculates probable maximum loss, and publishes results to the executive Power BI dashboard."
tags:
- insurance
- actuarial
- catastrophe
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: cat-model
port: 8080
tools:
- name: run-cat-model
description: "Run catastrophe model for a peril and region. Calculates PML at various return periods and refreshes the dashboard. Use for annual catastrophe modeling."
inputParameters:
- name: peril
in: body
type: string
description: "Peril type: hurricane, earthquake, tornado, wildfire."
- name: region
in: body
type: string
description: "Geographic region code."
steps:
- name: execute-model
type: call
call: "snowflake.run-query"
with:
query: "CALL ACTUARIAL_DB.PROCEDURES.RUN_CAT_MODEL('{{peril}}', '{{region}}')"
- name: refresh-dashboard
type: call
call: "powerbi.refresh-dataset"
with:
group_id: "$secrets.powerbi_cat_group"
dataset_id: "$secrets.powerbi_cat_model_dataset"
consumes:
- type: http
namespace: snowflake
baseUri: "https://statefarm.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/groups/{{group_id}}/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: group_id
in: path
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
Runs the Incurred But Not Reported reserve estimation model in Snowflake for a line of business and accident year, then publishes results to the actuarial Power BI dashboard.
naftiko: "0.5"
info:
label: "Actuarial IBNR Reserve Estimation"
description: "Runs the Incurred But Not Reported reserve estimation model in Snowflake for a line of business and accident year, then publishes results to the actuarial Power BI dashboard."
tags:
- insurance
- actuarial
- claims
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: ibnr-ops
port: 8080
tools:
- name: estimate-ibnr-reserves
description: "Run IBNR reserve estimation for a line of business and accident year. Executes model in Snowflake and refreshes dashboard. Use during quarterly reserve reviews."
inputParameters:
- name: line_of_business
in: body
type: string
description: "Line of business: auto-liability, auto-physical, homeowner."
- name: accident_year
in: body
type: integer
description: "The accident year to estimate (e.g., 2025)."
steps:
- name: run-ibnr-model
type: call
call: "snowflake.run-query"
with:
query: "CALL ACTUARIAL_DB.PROCEDURES.ESTIMATE_IBNR('{{line_of_business}}', {{accident_year}})"
- name: refresh-dashboard
type: call
call: "powerbi.refresh-dataset"
with:
group_id: "$secrets.powerbi_actuarial_group"
dataset_id: "$secrets.powerbi_ibnr_dataset"
consumes:
- type: http
namespace: snowflake
baseUri: "https://statefarm.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/groups/{{group_id}}/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: group_id
in: path
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
Queries Snowflake for incurred losses and earned premiums by line of business, calculates loss ratios, and refreshes the actuarial Power BI dashboard with the latest figures.
naftiko: "0.5"
info:
label: "Actuarial Loss Ratio Dashboard Sync"
description: "Queries Snowflake for incurred losses and earned premiums by line of business, calculates loss ratios, and refreshes the actuarial Power BI dashboard with the latest figures."
tags:
- insurance
- actuarial
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: loss-ratio-ops
port: 8080
tools:
- name: sync-loss-ratio-dashboard
description: "Calculate and refresh loss ratios for a line of business and period. Queries loss data from Snowflake and triggers Power BI refresh. Use for monthly actuarial reviews."
inputParameters:
- name: line_of_business
in: body
type: string
description: "Line of business: auto, homeowner, life, or umbrella."
- name: period
in: body
type: string
description: "Reporting period in YYYY-MM format."
steps:
- name: query-loss-data
type: call
call: "snowflake.run-query"
with:
query: "SELECT SUM(incurred_loss) as total_loss, SUM(earned_premium) as total_premium FROM ACTUARIAL_DB.PUBLIC.LOSS_TRIANGLE WHERE lob = '{{line_of_business}}' AND period = '{{period}}'"
- name: refresh-dashboard
type: call
call: "powerbi.refresh-dataset"
with:
group_id: "$secrets.powerbi_actuarial_group"
dataset_id: "$secrets.powerbi_loss_ratio_dataset"
consumes:
- type: http
namespace: snowflake
baseUri: "https://statefarm.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/groups/{{group_id}}/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: group_id
in: path
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
Retrieves mortality rate data from the actuarial data warehouse for a specified age, gender, and table version, used in life insurance premium calculations.
naftiko: "0.5"
info:
label: "Actuarial Mortality Table Lookup"
description: "Retrieves mortality rate data from the actuarial data warehouse for a specified age, gender, and table version, used in life insurance premium calculations."
tags:
- insurance
- actuarial
- life
capability:
exposes:
- type: mcp
namespace: mortality-ops
port: 8080
tools:
- name: get-mortality-rate
description: "Look up the mortality rate for a given age and gender from the specified actuarial table. Returns annual mortality rate, life expectancy, and table version. Use for life insurance pricing."
inputParameters:
- name: age
in: body
type: integer
description: "The insured's current age."
- name: gender
in: body
type: string
description: "Gender: male or female."
- name: table_version
in: body
type: string
description: "Mortality table version (e.g., CSO2017)."
call: "actuarial-api.get-mortality-rate"
with:
age: "{{age}}"
gender: "{{gender}}"
table_version: "{{table_version}}"
outputParameters:
- name: annual_mortality_rate
type: number
mapping: "$.annualMortalityRate"
- name: life_expectancy
type: number
mapping: "$.lifeExpectancy"
- name: table_version
type: string
mapping: "$.tableVersion"
consumes:
- type: http
namespace: actuarial-api
baseUri: "https://api.statefarm.com/actuarial/v1"
authentication:
type: bearer
token: "$secrets.actuarial_api_token"
resources:
- name: mortality
path: "/mortality-tables/{{table_version}}/rates"
inputParameters:
- name: table_version
in: path
operations:
- name: get-mortality-rate
method: GET
Triggers the quarterly actuarial reserve calculation in Snowflake, validates results against threshold parameters, and publishes the reserve report to Power BI for executive review.
naftiko: "0.5"
info:
label: "Actuarial Reserve Calculation Trigger"
description: "Triggers the quarterly actuarial reserve calculation in Snowflake, validates results against threshold parameters, and publishes the reserve report to Power BI for executive review."
tags:
- insurance
- actuarial
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: actuarial-ops
port: 8080
tools:
- name: run-reserve-calculation
description: "Trigger the actuarial reserve calculation for a specified line of business and quarter, validate results, and refresh the Power BI dashboard. Use during quarterly close."
inputParameters:
- name: line_of_business
in: body
type: string
description: "Line of business: auto, homeowner, life, or umbrella."
- name: quarter
in: body
type: string
description: "Fiscal quarter in YYYY-Q format (e.g., 2026-Q1)."
steps:
- name: run-calculation
type: call
call: "snowflake.run-query"
with:
query: "CALL ACTUARIAL_DB.PROCEDURES.CALCULATE_RESERVES('{{line_of_business}}', '{{quarter}}')"
- name: validate-results
type: call
call: "snowflake.run-query"
with:
query: "SELECT * FROM ACTUARIAL_DB.PUBLIC.RESERVE_VALIDATION WHERE lob = '{{line_of_business}}' AND quarter = '{{quarter}}'"
- name: refresh-dashboard
type: call
call: "powerbi.refresh-dataset"
with:
group_id: "$secrets.powerbi_actuarial_group"
dataset_id: "$secrets.powerbi_reserves_dataset"
consumes:
- type: http
namespace: snowflake
baseUri: "https://statefarm.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/groups/{{group_id}}/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: group_id
in: path
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
Retrieves the upcoming appointment schedule for a State Farm agent from the scheduling system.
naftiko: "0.5"
info:
label: "Agent Appointment Schedule Lookup"
description: "Retrieves the upcoming appointment schedule for a State Farm agent from the scheduling system."
tags:
- insurance
- agent
- scheduling
capability:
exposes:
- type: mcp
namespace: sf-scheduling
port: 8080
tools:
- name: get-appointments
description: "Given an agent ID, return upcoming appointments and next available slot. Use when scheduling policyholder meetings."
inputParameters:
- name: agent_id
in: body
type: string
description: "The agent identifier."
call: "sf-scheduling.get-appointments"
with:
agent_id: "{{agent_id}}"
outputParameters:
- name: appointments
type: array
mapping: "$.appointments"
- name: next_available
type: string
mapping: "$.next_available_slot"
consumes:
- namespace: sf-scheduling
type: http
baseUri: "https://api.statefarm.com/v1/scheduling"
authentication:
type: bearer
token: "$secrets.sf_scheduling_token"
resources:
- name: appointments
path: "/agents/{agent_id}/appointments"
inputParameters:
- name: agent_id
in: path
operations:
- name: get-appointments
method: GET
Retrieves the current appointment status of a State Farm agent by state, returning active appointments, lines of authority, and effective dates from the licensing system.
naftiko: "0.5"
info:
label: "Agent Appointment Status Lookup"
description: "Retrieves the current appointment status of a State Farm agent by state, returning active appointments, lines of authority, and effective dates from the licensing system."
tags:
- insurance
- agent
- compliance
capability:
exposes:
- type: mcp
namespace: appointment-ops
port: 8080
tools:
- name: get-appointment-status
description: "Look up agent appointment status by agent ID and state. Returns active appointments, lines of authority, and dates. Use for compliance verification."
inputParameters:
- name: agent_id
in: body
type: string
description: "The State Farm agent identifier."
- name: state_code
in: body
type: string
description: "Two-letter state code."
call: "licensing-api.get-appointments"
with:
agent_id: "{{agent_id}}"
state_code: "{{state_code}}"
outputParameters:
- name: appointments
type: array
mapping: "$.appointments"
- name: is_active
type: boolean
mapping: "$.isActive"
- name: effective_date
type: string
mapping: "$.effectiveDate"
consumes:
- type: http
namespace: licensing-api
baseUri: "https://api.statefarm.com/licensing/v1"
authentication:
type: bearer
token: "$secrets.licensing_api_token"
resources:
- name: appointments
path: "/agents/{{agent_id}}/appointments/{{state_code}}"
inputParameters:
- name: agent_id
in: path
- name: state_code
in: path
operations:
- name: get-appointments
method: GET
Retrieves the current commission balance and pending payments for a State Farm agent.
naftiko: "0.5"
info:
label: "Agent Commission Balance Lookup"
description: "Retrieves the current commission balance and pending payments for a State Farm agent."
tags:
- insurance
- agent
- commission
capability:
exposes:
- type: mcp
namespace: sf-commissions
port: 8080
tools:
- name: get-commission-balance
description: "Given an agent ID, return the current commission balance and pending payments. Use when an agent checks their earnings."
inputParameters:
- name: agent_id
in: body
type: string
description: "The agent identifier."
call: "sf-commissions.get-commission-balance"
with:
agent_id: "{{agent_id}}"
outputParameters:
- name: balance
type: number
mapping: "$.balance"
- name: pending
type: number
mapping: "$.pending"
- name: last_payment
type: string
mapping: "$.last_payment_date"
consumes:
- namespace: sf-commissions
type: http
baseUri: "https://api.statefarm.com/v1/commissions"
authentication:
type: bearer
token: "$secrets.sf_commissions_token"
resources:
- name: balance
path: "/agents/{agent_id}/balance"
inputParameters:
- name: agent_id
in: path
operations:
- name: get-commission-balance
method: GET
Retrieves the latest commission statement for a State Farm agent from the compensation system, returning total commissions, policy counts, and payment date.
naftiko: "0.5"
info:
label: "Agent Commission Statement Lookup"
description: "Retrieves the latest commission statement for a State Farm agent from the compensation system, returning total commissions, policy counts, and payment date."
tags:
- insurance
- agent
- finance
capability:
exposes:
- type: mcp
namespace: commission-ops
port: 8080
tools:
- name: get-commission-statement
description: "Look up the most recent commission statement for an agent by agent ID. Returns total commissions earned, new policy count, renewal count, and payment date. Use when agents inquire about compensation."
inputParameters:
- name: agent_id
in: body
type: string
description: "The State Farm agent identifier."
call: "compensation-api.get-statement"
with:
agent_id: "{{agent_id}}"
outputParameters:
- name: total_commissions
type: number
mapping: "$.totalCommissions"
- name: new_policy_count
type: integer
mapping: "$.newPolicyCount"
- name: renewal_count
type: integer
mapping: "$.renewalCount"
- name: payment_date
type: string
mapping: "$.paymentDate"
consumes:
- type: http
namespace: compensation-api
baseUri: "https://api.statefarm.com/compensation/v1"
authentication:
type: bearer
token: "$secrets.compensation_api_token"
resources:
- name: statements
path: "/agents/{{agent_id}}/statements/latest"
inputParameters:
- name: agent_id
in: path
operations:
- name: get-statement
method: GET
Retrieves the current license status and expiration dates for a State Farm agent from the compliance system, returning active licenses by state and line of authority.
naftiko: "0.5"
info:
label: "Agent License Verification Lookup"
description: "Retrieves the current license status and expiration dates for a State Farm agent from the compliance system, returning active licenses by state and line of authority."
tags:
- insurance
- compliance
- agent
capability:
exposes:
- type: mcp
namespace: agent-compliance
port: 8080
tools:
- name: get-agent-licenses
description: "Look up active insurance licenses for an agent by agent ID. Returns license states, lines of authority, and expiration dates. Use for compliance verification."
inputParameters:
- name: agent_id
in: body
type: string
description: "The State Farm agent identifier."
call: "compliance-api.get-licenses"
with:
agent_id: "{{agent_id}}"
outputParameters:
- name: licenses
type: array
mapping: "$.licenses"
- name: next_expiration
type: string
mapping: "$.nearestExpiration"
- name: total_active
type: integer
mapping: "$.activeCount"
consumes:
- type: http
namespace: compliance-api
baseUri: "https://api.statefarm.com/compliance/v1"
authentication:
type: bearer
token: "$secrets.compliance_api_token"
resources:
- name: licenses
path: "/agents/{{agent_id}}/licenses"
inputParameters:
- name: agent_id
in: path
operations:
- name: get-licenses
method: GET
Sends a new insurance claim description to the Anthropic Claude API for intelligent triage classification, returning a suggested claim type, priority, and recommended adjuster specialty.
naftiko: "0.5"
info:
label: "Anthropic AI Claims Triage Assistant"
description: "Sends a new insurance claim description to the Anthropic Claude API for intelligent triage classification, returning a suggested claim type, priority, and recommended adjuster specialty."
tags:
- ai
- insurance
- claims
- anthropic
- automation
capability:
exposes:
- type: mcp
namespace: claims-ai
port: 8080
tools:
- name: triage-claim
description: "Given a claim description text, send it to Anthropic Claude for triage classification. Returns a suggested claim type (auto/home/life), priority level, and recommended adjuster specialty. Use when new claims require intelligent routing before manual review."
inputParameters:
- name: claim_description
in: body
type: string
description: "The free-text description of the insurance claim submitted by the policyholder."
- name: policy_type
in: body
type: string
description: "The policy type context: auto, homeowner, life, or health."
call: "anthropic.create-message"
with:
model: "claude-opus-4-5"
max_tokens: 512
system: "You are a State Farm insurance claims triage assistant. Classify the claim and recommend routing. Respond with JSON: {claimType, priority, adjusterSpecialty, summary}."
user_content: "Policy type: {{policy_type}}\nClaim description: {{claim_description}}"
outputParameters:
- name: triage_result
type: string
mapping: "$.content[0].text"
consumes:
- type: http
namespace: anthropic
baseUri: "https://api.anthropic.com/v1"
authentication:
type: apikey
key: "x-api-key"
value: "$secrets.anthropic_api_key"
placement: header
resources:
- name: messages
path: "/messages"
operations:
- name: create-message
method: POST
When a policyholder uploads vehicle damage photos, sends them to the AI damage assessment model, creates an estimate in the claims system, and notifies the adjuster via Microsoft Teams with the preliminary assessment.
naftiko: "0.5"
info:
label: "Auto Claims Photo Damage Assessment"
description: "When a policyholder uploads vehicle damage photos, sends them to the AI damage assessment model, creates an estimate in the claims system, and notifies the adjuster via Microsoft Teams with the preliminary assessment."
tags:
- insurance
- claims
- ai
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: damage-assessment
port: 8080
tools:
- name: assess-vehicle-damage
description: "Given a claim ID and photo URLs, run AI damage assessment, create a preliminary estimate, and notify the assigned adjuster. Use when damage photos are uploaded to a claim."
inputParameters:
- name: claim_id
in: body
type: string
description: "The claim identifier."
- name: photo_urls
in: body
type: string
description: "Comma-separated URLs of uploaded damage photos."
steps:
- name: run-assessment
type: call
call: "ai-damage.analyze-photos"
with:
claim_id: "{{claim_id}}"
photo_urls: "{{photo_urls}}"
- name: create-estimate
type: call
call: "servicenow-claims.create-estimate"
with:
claim_id: "{{claim_id}}"
estimated_amount: "{{run-assessment.estimated_repair_cost}}"
damage_severity: "{{run-assessment.severity}}"
- name: notify-adjuster
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.claims_teams_channel"
text: "AI damage assessment complete for claim {{claim_id}}. Severity: {{run-assessment.severity}}. Estimated cost: ${{run-assessment.estimated_repair_cost}}"
consumes:
- type: http
namespace: ai-damage
baseUri: "https://api.statefarm.com/ai/damage-assessment/v1"
authentication:
type: bearer
token: "$secrets.ai_damage_token"
resources:
- name: analysis
path: "/analyze"
operations:
- name: analyze-photos
method: POST
- type: http
namespace: servicenow-claims
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: estimates
path: "/table/sn_claim_estimate"
operations:
- name: create-estimate
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Fast-tracks an auto glass claim by verifying coverage, scheduling the glass repair with the preferred vendor, and sending confirmation details to the policyholder.
naftiko: "0.5"
info:
label: "Auto Glass Claim Fast Track"
description: "Fast-tracks an auto glass claim by verifying coverage, scheduling the glass repair with the preferred vendor, and sending confirmation details to the policyholder."
tags:
- insurance
- claims
- auto
capability:
exposes:
- type: mcp
namespace: glass-claims
port: 8080
tools:
- name: fast-track-glass-claim
description: "Fast-track an auto glass repair claim. Verifies coverage, schedules repair, and sends confirmation. Use for windshield and glass-only claims."
inputParameters:
- name: policy_number
in: body
type: string
description: "The auto policy number."
- name: damage_type
in: body
type: string
description: "Type: windshield-crack, windshield-chip, side-window, rear-window."
- name: zip_code
in: body
type: string
description: "Policyholder's ZIP code for vendor matching."
steps:
- name: verify-coverage
type: call
call: "claims-api.verify-glass-coverage"
with:
policy_number: "{{policy_number}}"
- name: schedule-repair
type: call
call: "glass-vendor-api.schedule-repair"
with:
policy_number: "{{policy_number}}"
damage_type: "{{damage_type}}"
zip_code: "{{zip_code}}"
- name: send-confirmation
type: call
call: "notification-api.send-notification"
with:
policy_number: "{{policy_number}}"
template: "glass-repair-scheduled"
vendor: "{{schedule-repair.vendor_name}}"
date: "{{schedule-repair.appointment_date}}"
consumes:
- type: http
namespace: claims-api
baseUri: "https://api.statefarm.com/claims/v2"
authentication:
type: bearer
token: "$secrets.claims_api_token"
resources:
- name: glass-coverage
path: "/policies/{{policy_number}}/glass-coverage"
inputParameters:
- name: policy_number
in: path
operations:
- name: verify-glass-coverage
method: GET
- type: http
namespace: glass-vendor-api
baseUri: "https://api.statefarm.com/vendors/glass/v1"
authentication:
type: bearer
token: "$secrets.glass_vendor_token"
resources:
- name: repairs
path: "/schedule"
operations:
- name: schedule-repair
method: POST
- type: http
namespace: notification-api
baseUri: "https://api.statefarm.com/notifications/v1"
authentication:
type: bearer
token: "$secrets.notification_api_token"
resources:
- name: notifications
path: "/send"
operations:
- name: send-notification
method: POST
Retrieves vehicle information by VIN from the auto data provider, returning make, model, year, safety rating, and estimated replacement cost for underwriting purposes.
naftiko: "0.5"
info:
label: "Auto Policy Vehicle VIN Lookup"
description: "Retrieves vehicle information by VIN from the auto data provider, returning make, model, year, safety rating, and estimated replacement cost for underwriting purposes."
tags:
- insurance
- underwriting
- auto
capability:
exposes:
- type: mcp
namespace: vehicle-ops
port: 8080
tools:
- name: lookup-vehicle-by-vin
description: "Look up vehicle details by VIN. Returns make, model, year, safety rating, and replacement cost. Use during auto policy quoting and underwriting."
inputParameters:
- name: vin
in: body
type: string
description: "The 17-character Vehicle Identification Number."
call: "vehicle-api.get-vehicle"
with:
vin: "{{vin}}"
outputParameters:
- name: make
type: string
mapping: "$.make"
- name: model
type: string
mapping: "$.model"
- name: year
type: integer
mapping: "$.year"
- name: safety_rating
type: string
mapping: "$.safetyRating"
- name: replacement_cost
type: number
mapping: "$.estimatedReplacementCost"
consumes:
- type: http
namespace: vehicle-api
baseUri: "https://api.statefarm.com/vehicles/v1"
authentication:
type: bearer
token: "$secrets.vehicle_api_token"
resources:
- name: vehicles
path: "/vin/{{vin}}"
inputParameters:
- name: vin
in: path
operations:
- name: get-vehicle
method: GET
Detects Azure subscription cost anomalies for State Farm's cloud infrastructure, enriches the alert with resource group context, and posts a spend alert to the FinOps team's Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Azure Cloud Cost Anomaly Alert"
description: "Detects Azure subscription cost anomalies for State Farm's cloud infrastructure, enriches the alert with resource group context, and posts a spend alert to the FinOps team's Microsoft Teams channel."
tags:
- cloud
- finops
- azure
- microsoft-teams
- cost-management
capability:
exposes:
- type: mcp
namespace: cloud-finops
port: 8080
tools:
- name: alert-cloud-cost-anomaly
description: "Given an Azure subscription ID, resource group, and anomalous spend amount, retrieve resource group context and post a cost anomaly alert to the FinOps Teams channel. Use when Azure Cost Management detects unexpected spend spikes on State Farm cloud resources."
inputParameters:
- name: subscription_id
in: body
type: string
description: "The Azure subscription ID where the anomaly was detected."
- name: resource_group
in: body
type: string
description: "The Azure resource group name associated with the anomaly."
- name: anomaly_amount_usd
in: body
type: string
description: "The anomalous spend amount in USD."
steps:
- name: get-resource-group
type: call
call: "azure-mgmt.get-resource-group"
with:
subscription_id: "{{subscription_id}}"
resource_group: "{{resource_group}}"
- name: post-cost-alert
type: call
call: "msteams-finops.post-message"
with:
channel_id: "$secrets.finops_teams_channel"
text: "Azure cost anomaly: ${{anomaly_amount_usd}} in {{resource_group}} ({{get-resource-group.location}}). Subscription: {{subscription_id}}"
consumes:
- type: http
namespace: azure-mgmt
baseUri: "https://management.azure.com"
authentication:
type: bearer
token: "$secrets.azure_mgmt_token"
resources:
- name: resource-groups
path: "/subscriptions/{{subscription_id}}/resourceGroups/{{resource_group}}"
inputParameters:
- name: subscription_id
in: path
- name: resource_group
in: path
operations:
- name: get-resource-group
method: GET
- type: http
namespace: msteams-finops
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Checks the latest build status for a State Farm Azure DevOps pipeline.
naftiko: "0.5"
info:
label: "Azure DevOps Build Status Check"
description: "Checks the latest build status for a State Farm Azure DevOps pipeline."
tags:
- azure-devops
- engineering
- ci-cd
capability:
exposes:
- type: mcp
namespace: azure-devops
port: 8080
tools:
- name: get-build-status
description: "Given a build definition ID, return the latest build status and result. Use when checking CI/CD pipeline health."
inputParameters:
- name: definition_id
in: body
type: string
description: "The build definition ID."
call: "azure-devops.get-build-status"
with:
definition_id: "{{definition_id}}"
outputParameters:
- name: status
type: string
mapping: "$.value[0].status"
- name: result
type: string
mapping: "$.value[0].result"
- name: build_number
type: string
mapping: "$.value[0].buildNumber"
consumes:
- namespace: azure-devops
type: http
baseUri: "https://dev.azure.com/statefarm"
authentication:
type: bearer
token: "$secrets.azure_devops_token"
resources:
- name: builds
path: "/_apis/build/builds"
operations:
- name: get-build-status
method: GET
Queries Azure Cost Management for infrastructure spend by department and application, generates a cost allocation report, and publishes it to Confluence for finance review.
naftiko: "0.5"
info:
label: "Azure Infrastructure Cost Allocation Report"
description: "Queries Azure Cost Management for infrastructure spend by department and application, generates a cost allocation report, and publishes it to Confluence for finance review."
tags:
- cloud
- finance
- microsoft-azure
- confluence
capability:
exposes:
- type: mcp
namespace: cost-ops
port: 8080
tools:
- name: generate-cost-allocation-report
description: "Generate an Azure cost allocation report by department for a billing period. Queries costs and publishes to Confluence. Use for monthly chargeback reporting."
inputParameters:
- name: billing_period
in: body
type: string
description: "Billing period in YYYY-MM format."
steps:
- name: get-costs
type: call
call: "azure-cost.get-usage"
with:
billing_period: "{{billing_period}}"
group_by: "department"
- name: publish-report
type: call
call: "confluence.create-page"
with:
space_key: "FINOPS"
title: "Azure Cost Allocation - {{billing_period}}"
body: "Total spend: ${{get-costs.total_cost}}. Departments: {{get-costs.department_count}}"
consumes:
- type: http
namespace: azure-cost
baseUri: "https://management.azure.com"
authentication:
type: bearer
token: "$secrets.azure_mgmt_token"
resources:
- name: usage
path: "/subscriptions/$secrets.azure_subscription_id/providers/Microsoft.CostManagement/query"
operations:
- name: get-usage
method: POST
- type: http
namespace: confluence
baseUri: "https://statefarm.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: pages
path: "/content"
operations:
- name: create-page
method: POST
When a catastrophe event is declared, activates the claims surge protocol by querying affected policies in Snowflake, provisioning additional adjusters in Workday, creating a ServiceNow incident, and broadcasting alerts via Microsoft Teams.
naftiko: "0.5"
info:
label: "Catastrophe Event Claims Surge Handler"
description: "When a catastrophe event is declared, activates the claims surge protocol by querying affected policies in Snowflake, provisioning additional adjusters in Workday, creating a ServiceNow incident, and broadcasting alerts via Microsoft Teams."
tags:
- insurance
- claims
- catastrophe
- snowflake
- workday
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: cat-response
port: 8080
tools:
- name: activate-cat-response
description: "Activate catastrophe response for a declared event. Identify affected policies, provision surge adjusters, create an incident command center, and broadcast alerts. Use when a CAT event is declared."
inputParameters:
- name: event_name
in: body
type: string
description: "Name of the catastrophe event."
- name: affected_zip_codes
in: body
type: string
description: "Comma-separated ZIP codes in the affected area."
- name: event_type
in: body
type: string
description: "Type of event: hurricane, tornado, wildfire, flood, or hail."
steps:
- name: count-affected-policies
type: call
call: "snowflake.run-query"
with:
query: "SELECT COUNT(*) as policy_count FROM POLICY_DB.PUBLIC.ACTIVE_POLICIES WHERE zip_code IN ('{{affected_zip_codes}}')"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "CAT Event: {{event_name}} ({{event_type}})"
category: "catastrophe"
priority: "1"
description: "Catastrophe event {{event_name}}. Affected ZIP codes: {{affected_zip_codes}}. Estimated affected policies: {{count-affected-policies.policy_count}}"
- name: broadcast-alert
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.cat_response_channel"
text: "CAT EVENT DECLARED: {{event_name}} ({{event_type}}). Affected policies: {{count-affected-policies.policy_count}}. Incident: {{create-incident.number}}. All hands on deck."
consumes:
- type: http
namespace: snowflake
baseUri: "https://statefarm.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: servicenow
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
When a new insurance claim is created, evaluates the loss type, coverage amount, and adjuster workload in Workday, then assigns the optimal claims adjuster in Salesforce and notifies them via Microsoft Teams.
naftiko: "0.5"
info:
label: "Claims Adjuster Assignment Router"
description: "When a new insurance claim is created, evaluates the loss type, coverage amount, and adjuster workload in Workday, then assigns the optimal claims adjuster in Salesforce and notifies them via Microsoft Teams."
tags:
- insurance
- claims
- salesforce
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: claims-routing
port: 8080
tools:
- name: route-claim-to-adjuster
description: "Given a claim ID and loss type, check adjuster capacity in Workday, assign the best-fit adjuster in Salesforce, and send a Teams notification. Use when a new claim needs adjuster assignment."
inputParameters:
- name: claim_id
in: body
type: string
description: "The unique claim identifier."
- name: loss_type
in: body
type: string
description: "Type of loss: auto, homeowner, life, or health."
- name: coverage_amount
in: body
type: number
description: "The total coverage amount on the policy."
steps:
- name: get-adjuster-capacity
type: call
call: "workday-hr.get-team-capacity"
with:
department: "claims-{{loss_type}}"
- name: assign-adjuster
type: call
call: "salesforce-claims.assign-adjuster"
with:
claim_id: "{{claim_id}}"
adjuster_id: "{{get-adjuster-capacity.recommended_adjuster_id}}"
- name: notify-adjuster
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.claims_teams_channel"
text: "Claim {{claim_id}} ({{loss_type}}, ${{coverage_amount}}) assigned to you. Please review within 24 hours."
consumes:
- type: http
namespace: workday-hr
baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/statefarm"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: team-capacity
path: "/staffing/teamCapacity"
operations:
- name: get-team-capacity
method: GET
- type: http
namespace: salesforce-claims
baseUri: "https://statefarm.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: claim-assignment
path: "/sobjects/Claim__c/{{claim_id}}"
inputParameters:
- name: claim_id
in: path
operations:
- name: assign-adjuster
method: PATCH
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Returns the current case count and workload metrics for a claims adjuster.
naftiko: "0.5"
info:
label: "Claims Adjuster Workload Lookup"
description: "Returns the current case count and workload metrics for a claims adjuster."
tags:
- insurance
- claims
- adjuster
capability:
exposes:
- type: mcp
namespace: sf-claims
port: 8080
tools:
- name: get-adjuster-workload
description: "Given an adjuster ID, return open case count, average cycle time, and capacity status. Use when assigning new claims."
inputParameters:
- name: adjuster_id
in: body
type: string
description: "The claims adjuster identifier."
call: "sf-claims.get-adjuster-workload"
with:
adjuster_id: "{{adjuster_id}}"
outputParameters:
- name: open_cases
type: number
mapping: "$.open_cases"
- name: avg_cycle_time
type: number
mapping: "$.avg_cycle_time_days"
- name: capacity
type: string
mapping: "$.capacity_status"
consumes:
- namespace: sf-claims
type: http
baseUri: "https://api.statefarm.com/v1/claims"
authentication:
type: bearer
token: "$secrets.sf_claims_token"
resources:
- name: workload
path: "/adjusters/{adjuster_id}/workload"
inputParameters:
- name: adjuster_id
in: path
operations:
- name: get-adjuster-workload
method: GET
Dispatches an appraisal vendor for a property claim by selecting the nearest qualified appraiser, creating a work order in ServiceNow, and notifying the claims adjuster via Microsoft Teams.
naftiko: "0.5"
info:
label: "Claims Appraisal Vendor Dispatch"
description: "Dispatches an appraisal vendor for a property claim by selecting the nearest qualified appraiser, creating a work order in ServiceNow, and notifying the claims adjuster via Microsoft Teams."
tags:
- insurance
- claims
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: appraisal-ops
port: 8080
tools:
- name: dispatch-appraiser
description: "Dispatch an appraisal vendor for a property claim. Finds appraiser, creates work order, and notifies adjuster. Use when a property inspection is needed."
inputParameters:
- name: claim_id
in: body
type: string
description: "The claim identifier."
- name: property_address
in: body
type: string
description: "Property address requiring appraisal."
- name: loss_type
in: body
type: string
description: "Type of loss: fire, water, wind, theft."
steps:
- name: find-appraiser
type: call
call: "vendor-api.find-appraiser"
with:
location: "{{property_address}}"
specialty: "{{loss_type}}"
- name: create-work-order
type: call
call: "servicenow.create-work-order"
with:
short_description: "Property appraisal: Claim {{claim_id}}"
assigned_to: "{{find-appraiser.vendor_id}}"
location: "{{property_address}}"
description: "{{loss_type}} damage appraisal for claim {{claim_id}}"
- name: notify-adjuster
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.claims_teams_channel"
text: "Appraiser dispatched for claim {{claim_id}}. Vendor: {{find-appraiser.vendor_name}}. ETA: {{find-appraiser.estimated_date}}"
consumes:
- type: http
namespace: vendor-api
baseUri: "https://api.statefarm.com/vendors/v1"
authentication:
type: bearer
token: "$secrets.vendor_api_token"
resources:
- name: appraisers
path: "/appraisers/search"
operations:
- name: find-appraiser
method: GET
- type: http
namespace: servicenow
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: work-orders
path: "/table/wm_order"
operations:
- name: create-work-order
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Calculates the recommended reserve for a bodily injury claim using injury type, treatment data, and jurisdiction, then updates the reserve in ServiceNow and notifies the claims manager.
naftiko: "0.5"
info:
label: "Claims Bodily Injury Reserve Calculator"
description: "Calculates the recommended reserve for a bodily injury claim using injury type, treatment data, and jurisdiction, then updates the reserve in ServiceNow and notifies the claims manager."
tags:
- insurance
- claims
- actuarial
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: bi-reserve
port: 8080
tools:
- name: calculate-bi-reserve
description: "Calculate the recommended bodily injury reserve. Uses injury data and jurisdiction factors. Updates claim and notifies manager. Use when setting initial BI reserves."
inputParameters:
- name: claim_id
in: body
type: string
description: "The claim identifier."
- name: injury_type
in: body
type: string
description: "Primary injury type: soft-tissue, fracture, spinal, tbi."
- name: jurisdiction
in: body
type: string
description: "Two-letter state code where the loss occurred."
steps:
- name: calculate-reserve
type: call
call: "reserve-engine.calculate-bi"
with:
injury_type: "{{injury_type}}"
jurisdiction: "{{jurisdiction}}"
- name: update-claim
type: call
call: "servicenow-claims.update-reserve"
with:
claim_id: "{{claim_id}}"
reserve_amount: "{{calculate-reserve.recommended_reserve}}"
reserve_basis: "{{calculate-reserve.calculation_basis}}"
- name: notify-manager
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.claims_mgr_channel"
text: "BI reserve set for claim {{claim_id}}: ${{calculate-reserve.recommended_reserve}} ({{injury_type}}, {{jurisdiction}})"
consumes:
- type: http
namespace: reserve-engine
baseUri: "https://api.statefarm.com/actuarial/v1"
authentication:
type: bearer
token: "$secrets.actuarial_api_token"
resources:
- name: bi-reserves
path: "/reserves/bodily-injury"
operations:
- name: calculate-bi
method: POST
- type: http
namespace: servicenow-claims
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: reserves
path: "/table/sn_claim_reserve/{{claim_id}}"
inputParameters:
- name: claim_id
in: path
operations:
- name: update-reserve
method: PATCH
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Retrieves the current repair or replacement estimate for an open insurance claim.
naftiko: "0.5"
info:
label: "Claims Estimate Lookup"
description: "Retrieves the current repair or replacement estimate for an open insurance claim."
tags:
- insurance
- claims
- estimates
capability:
exposes:
- type: mcp
namespace: sf-claims
port: 8080
tools:
- name: get-claim-estimate
description: "Given a claim ID, return the estimate amount, estimator, and status. Use when reviewing claim repair costs."
inputParameters:
- name: claim_id
in: body
type: string
description: "The claim identifier."
call: "sf-claims.get-claim-estimate"
with:
claim_id: "{{claim_id}}"
outputParameters:
- name: estimate_amount
type: number
mapping: "$.estimate_amount"
- name: estimator
type: string
mapping: "$.estimator_name"
- name: status
type: string
mapping: "$.estimate_status"
consumes:
- namespace: sf-claims
type: http
baseUri: "https://api.statefarm.com/v1/claims"
authentication:
type: bearer
token: "$secrets.sf_claims_token"
resources:
- name: estimate
path: "/claims/{claim_id}/estimate"
inputParameters:
- name: claim_id
in: path
operations:
- name: get-claim-estimate
method: GET
Schedules an independent medical examination for a bodily injury claim by finding a qualified physician, booking the appointment, and notifying the claimant and adjuster.
naftiko: "0.5"
info:
label: "Claims Independent Medical Exam Scheduling"
description: "Schedules an independent medical examination for a bodily injury claim by finding a qualified physician, booking the appointment, and notifying the claimant and adjuster."
tags:
- insurance
- claims
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ime-ops
port: 8080
tools:
- name: schedule-ime
description: "Schedule an independent medical exam for a claim. Finds a physician, books the exam, and sends notifications. Use when an adjuster requests an IME."
inputParameters:
- name: claim_id
in: body
type: string
description: "The claim identifier."
- name: specialty
in: body
type: string
description: "Medical specialty needed: orthopedic, neurological, general."
- name: zip_code
in: body
type: string
description: "ZIP code near the claimant."
steps:
- name: find-physician
type: call
call: "medical-network-api.find-ime-provider"
with:
specialty: "{{specialty}}"
zip_code: "{{zip_code}}"
- name: book-appointment
type: call
call: "scheduling-api.create-appointment"
with:
provider_id: "{{find-physician.provider_id}}"
claim_id: "{{claim_id}}"
- name: create-tracking-record
type: call
call: "servicenow.create-record"
with:
table: "u_ime_request"
claim_id: "{{claim_id}}"
provider: "{{find-physician.provider_name}}"
date: "{{book-appointment.appointment_date}}"
consumes:
- type: http
namespace: medical-network-api
baseUri: "https://api.statefarm.com/medical-network/v1"
authentication:
type: bearer
token: "$secrets.medical_network_token"
resources:
- name: providers
path: "/ime-providers/search"
operations:
- name: find-ime-provider
method: GET
- type: http
namespace: scheduling-api
baseUri: "https://api.statefarm.com/scheduling/v1"
authentication:
type: bearer
token: "$secrets.scheduling_api_token"
resources:
- name: appointments
path: "/appointments"
operations:
- name: create-appointment
method: POST
- type: http
namespace: servicenow
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: records
path: "/table/{{table}}"
inputParameters:
- name: table
in: path
operations:
- name: create-record
method: POST
When a claim enters litigation, places a litigation hold on all related documents, creates a legal case in ServiceNow, notifies the legal team via Microsoft Teams, and logs the hold in the compliance system.
naftiko: "0.5"
info:
label: "Claims Litigation Hold Workflow"
description: "When a claim enters litigation, places a litigation hold on all related documents, creates a legal case in ServiceNow, notifies the legal team via Microsoft Teams, and logs the hold in the compliance system."
tags:
- insurance
- claims
- compliance
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: litigation-ops
port: 8080
tools:
- name: initiate-litigation-hold
description: "Place a litigation hold on a claim's documents, create a legal case, and notify the legal team. Use when a claim is escalated to litigation."
inputParameters:
- name: claim_id
in: body
type: string
description: "The claim identifier entering litigation."
- name: attorney_name
in: body
type: string
description: "Name of the opposing attorney or law firm."
steps:
- name: place-hold
type: call
call: "document-api.create-litigation-hold"
with:
claim_id: "{{claim_id}}"
hold_type: "litigation"
- name: create-legal-case
type: call
call: "servicenow.create-case"
with:
short_description: "Litigation: Claim {{claim_id}}"
category: "legal"
description: "Claim {{claim_id}} in litigation. Opposing counsel: {{attorney_name}}. Document hold placed: {{place-hold.hold_id}}"
- name: notify-legal
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.legal_teams_channel"
text: "Litigation hold placed on claim {{claim_id}}. Legal case: {{create-legal-case.number}}. Opposing counsel: {{attorney_name}}"
consumes:
- type: http
namespace: document-api
baseUri: "https://api.statefarm.com/documents/v1"
authentication:
type: bearer
token: "$secrets.document_api_token"
resources:
- name: holds
path: "/holds"
operations:
- name: create-litigation-hold
method: POST
- type: http
namespace: servicenow
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: cases
path: "/table/sn_legal_case"
operations:
- name: create-case
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Generates and sends a medical record request for a bodily injury claim, creates a tracking record in ServiceNow, and sets a follow-up reminder for the adjuster in Jira.
naftiko: "0.5"
info:
label: "Claims Medical Record Request Workflow"
description: "Generates and sends a medical record request for a bodily injury claim, creates a tracking record in ServiceNow, and sets a follow-up reminder for the adjuster in Jira."
tags:
- insurance
- claims
- servicenow
- jira
capability:
exposes:
- type: mcp
namespace: medical-records
port: 8080
tools:
- name: request-medical-records
description: "Generate and send a medical record request for a claim. Creates tracking in ServiceNow and a follow-up in Jira. Use for bodily injury claims requiring medical documentation."
inputParameters:
- name: claim_id
in: body
type: string
description: "The claim identifier."
- name: provider_name
in: body
type: string
description: "Name of the medical provider."
- name: claimant_name
in: body
type: string
description: "Name of the claimant."
steps:
- name: generate-request
type: call
call: "document-api.generate-medical-request"
with:
claim_id: "{{claim_id}}"
provider_name: "{{provider_name}}"
claimant_name: "{{claimant_name}}"
- name: track-request
type: call
call: "servicenow.create-record"
with:
table: "u_medical_record_request"
claim_id: "{{claim_id}}"
provider: "{{provider_name}}"
status: "sent"
- name: create-followup
type: call
call: "jira.create-issue"
with:
project_key: "CLAIMS"
issuetype: "Task"
summary: "Follow up: Medical records for claim {{claim_id}}"
description: "Follow up with {{provider_name}} for medical records. Claimant: {{claimant_name}}"
consumes:
- type: http
namespace: document-api
baseUri: "https://api.statefarm.com/documents/v1"
authentication:
type: bearer
token: "$secrets.document_api_token"
resources:
- name: medical-requests
path: "/generate/medical-request"
operations:
- name: generate-medical-request
method: POST
- type: http
namespace: servicenow
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: records
path: "/table/{{table}}"
inputParameters:
- name: table
in: path
operations:
- name: create-record
method: POST
- type: http
namespace: jira
baseUri: "https://statefarm.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
When a claims adjuster approves a payment, validates the payment against policy limits, processes the payment through the disbursement system, updates the claim record in ServiceNow, and notifies the policyholder.
naftiko: "0.5"
info:
label: "Claims Payment Processing Workflow"
description: "When a claims adjuster approves a payment, validates the payment against policy limits, processes the payment through the disbursement system, updates the claim record in ServiceNow, and notifies the policyholder."
tags:
- insurance
- claims
- payments
- servicenow
capability:
exposes:
- type: mcp
namespace: claims-payment
port: 8080
tools:
- name: process-claims-payment
description: "Process an approved claims payment. Validates against policy limits, disburses payment, updates claim record, and notifies the claimant. Use when an adjuster approves a claim payment."
inputParameters:
- name: claim_id
in: body
type: string
description: "The claim identifier."
- name: payment_amount
in: body
type: number
description: "The approved payment amount."
- name: payee_name
in: body
type: string
description: "Name of the payment recipient."
steps:
- name: validate-payment
type: call
call: "claims-api.validate-payment"
with:
claim_id: "{{claim_id}}"
amount: "{{payment_amount}}"
- name: disburse-payment
type: call
call: "payment-api.create-disbursement"
with:
claim_id: "{{claim_id}}"
amount: "{{payment_amount}}"
payee: "{{payee_name}}"
- name: update-claim
type: call
call: "servicenow-claims.update-case"
with:
claim_id: "{{claim_id}}"
payment_status: "disbursed"
payment_amount: "{{payment_amount}}"
consumes:
- type: http
namespace: claims-api
baseUri: "https://api.statefarm.com/claims/v2"
authentication:
type: bearer
token: "$secrets.claims_api_token"
resources:
- name: validation
path: "/payments/validate"
operations:
- name: validate-payment
method: POST
- type: http
namespace: payment-api
baseUri: "https://api.statefarm.com/payments/v1"
authentication:
type: bearer
token: "$secrets.payment_api_token"
resources:
- name: disbursements
path: "/disbursements"
operations:
- name: create-disbursement
method: POST
- type: http
namespace: servicenow-claims
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: cases
path: "/table/sn_customerservice_case/{{claim_id}}"
inputParameters:
- name: claim_id
in: path
operations:
- name: update-case
method: PATCH
Authorizes a rental car for an auto claim policyholder by checking coverage limits, creating a rental authorization with the vendor, and updating the claim record in ServiceNow.
naftiko: "0.5"
info:
label: "Claims Rental Car Authorization"
description: "Authorizes a rental car for an auto claim policyholder by checking coverage limits, creating a rental authorization with the vendor, and updating the claim record in ServiceNow."
tags:
- insurance
- claims
- auto
- servicenow
capability:
exposes:
- type: mcp
namespace: rental-ops
port: 8080
tools:
- name: authorize-rental-car
description: "Authorize a rental car for an auto claim. Checks coverage, creates vendor authorization, and updates the claim. Use when a policyholder needs a rental during repairs."
inputParameters:
- name: claim_id
in: body
type: string
description: "The claim identifier."
- name: rental_days
in: body
type: integer
description: "Number of rental days requested."
steps:
- name: check-coverage
type: call
call: "claims-api.check-rental-coverage"
with:
claim_id: "{{claim_id}}"
- name: create-authorization
type: call
call: "rental-vendor-api.create-auth"
with:
claim_id: "{{claim_id}}"
days: "{{rental_days}}"
daily_limit: "{{check-coverage.daily_limit}}"
- name: update-claim
type: call
call: "servicenow-claims.update-case"
with:
claim_id: "{{claim_id}}"
rental_auth_id: "{{create-authorization.auth_id}}"
rental_status: "authorized"
consumes:
- type: http
namespace: claims-api
baseUri: "https://api.statefarm.com/claims/v2"
authentication:
type: bearer
token: "$secrets.claims_api_token"
resources:
- name: rental-coverage
path: "/claims/{{claim_id}}/rental-coverage"
inputParameters:
- name: claim_id
in: path
operations:
- name: check-rental-coverage
method: GET
- type: http
namespace: rental-vendor-api
baseUri: "https://api.statefarm.com/rental/v1"
authentication:
type: bearer
token: "$secrets.rental_api_token"
resources:
- name: authorizations
path: "/authorizations"
operations:
- name: create-auth
method: POST
- type: http
namespace: servicenow-claims
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: cases
path: "/table/sn_customerservice_case/{{claim_id}}"
inputParameters:
- name: claim_id
in: path
operations:
- name: update-case
method: PATCH
When a claims adjuster requests a reserve adjustment, validates the new amount against authority limits, updates the reserve in the claims system, and notifies the claims manager if the adjustment exceeds threshold.
naftiko: "0.5"
info:
label: "Claims Reserve Adjustment Workflow"
description: "When a claims adjuster requests a reserve adjustment, validates the new amount against authority limits, updates the reserve in the claims system, and notifies the claims manager if the adjustment exceeds threshold."
tags:
- insurance
- claims
- actuarial
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: reserve-ops
port: 8080
tools:
- name: adjust-claim-reserve
description: "Process a reserve adjustment for a claim. Validates authority, updates the reserve, and escalates if above threshold. Use when an adjuster needs to change the reserve amount."
inputParameters:
- name: claim_id
in: body
type: string
description: "The claim identifier."
- name: new_reserve_amount
in: body
type: number
description: "The proposed new reserve amount."
- name: adjuster_id
in: body
type: string
description: "The requesting adjuster's ID."
steps:
- name: check-authority
type: call
call: "claims-api.check-adjuster-authority"
with:
adjuster_id: "{{adjuster_id}}"
amount: "{{new_reserve_amount}}"
- name: update-reserve
type: call
call: "servicenow-claims.update-reserve"
with:
claim_id: "{{claim_id}}"
reserve_amount: "{{new_reserve_amount}}"
- name: notify-manager
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.claims_mgr_channel"
text: "Reserve adjustment on claim {{claim_id}}: new reserve ${{new_reserve_amount}}. Adjuster: {{adjuster_id}}. Authority status: {{check-authority.status}}"
consumes:
- type: http
namespace: claims-api
baseUri: "https://api.statefarm.com/claims/v2"
authentication:
type: bearer
token: "$secrets.claims_api_token"
resources:
- name: authority
path: "/authority/check"
operations:
- name: check-adjuster-authority
method: POST
- type: http
namespace: servicenow-claims
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: reserves
path: "/table/sn_claim_reserve/{{claim_id}}"
inputParameters:
- name: claim_id
in: path
operations:
- name: update-reserve
method: PATCH
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
When a total loss claim is settled, lists the salvage vehicle on the auction platform, updates the claim record in ServiceNow, and notifies the salvage team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Claims Salvage Auction Listing"
description: "When a total loss claim is settled, lists the salvage vehicle on the auction platform, updates the claim record in ServiceNow, and notifies the salvage team via Microsoft Teams."
tags:
- insurance
- claims
- auto
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: salvage-ops
port: 8080
tools:
- name: list-salvage-vehicle
description: "List a salvage vehicle for auction after total loss settlement. Creates auction listing, updates claim, and notifies salvage team. Use after total loss settlement is accepted."
inputParameters:
- name: claim_id
in: body
type: string
description: "The claim identifier."
- name: vin
in: body
type: string
description: "The vehicle VIN."
- name: salvage_value
in: body
type: number
description: "Estimated salvage value."
steps:
- name: create-listing
type: call
call: "auction-api.create-listing"
with:
vin: "{{vin}}"
claim_id: "{{claim_id}}"
starting_bid: "{{salvage_value}}"
- name: update-claim
type: call
call: "servicenow-claims.update-case"
with:
claim_id: "{{claim_id}}"
salvage_status: "listed"
auction_id: "{{create-listing.auction_id}}"
- name: notify-salvage-team
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.salvage_teams_channel"
text: "Salvage listed: VIN {{vin}} for claim {{claim_id}}. Auction ID: {{create-listing.auction_id}}. Starting bid: ${{salvage_value}}"
consumes:
- type: http
namespace: auction-api
baseUri: "https://api.statefarm.com/salvage/v1"
authentication:
type: bearer
token: "$secrets.salvage_api_token"
resources:
- name: listings
path: "/auctions"
operations:
- name: create-listing
method: POST
- type: http
namespace: servicenow-claims
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: cases
path: "/table/sn_customerservice_case/{{claim_id}}"
inputParameters:
- name: claim_id
in: path
operations:
- name: update-case
method: PATCH
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Retrieves the current status of an insurance claim from ServiceNow, returning claim state, assigned adjuster, and last activity date.
naftiko: "0.5"
info:
label: "Claims Status Lookup"
description: "Retrieves the current status of an insurance claim from ServiceNow, returning claim state, assigned adjuster, and last activity date."
tags:
- insurance
- claims
- servicenow
capability:
exposes:
- type: mcp
namespace: claims-ops
port: 8080
tools:
- name: get-claim-status
description: "Look up the current status of a State Farm insurance claim by claim number in ServiceNow. Returns claim state, assigned adjuster name, and last activity timestamp. Use when customers or agents inquire about claim progress."
inputParameters:
- name: claim_number
in: body
type: string
description: "The State Farm claim number to look up."
call: "servicenow-claims.get-case"
with:
claim_number: "{{claim_number}}"
outputParameters:
- name: state
type: string
mapping: "$.state"
- name: adjuster_name
type: string
mapping: "$.assigned_to.display_value"
- name: last_activity
type: string
mapping: "$.sys_updated_on"
consumes:
- type: http
namespace: servicenow-claims
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: cases
path: "/table/sn_customerservice_case/{{claim_number}}"
inputParameters:
- name: claim_number
in: path
operations:
- name: get-case
method: GET
Monitors subrogation recovery status in the claims system, updates recovery amounts in Snowflake, and generates a weekly summary report for the recovery team in Confluence.
naftiko: "0.5"
info:
label: "Claims Subrogation Recovery Tracker"
description: "Monitors subrogation recovery status in the claims system, updates recovery amounts in Snowflake, and generates a weekly summary report for the recovery team in Confluence."
tags:
- insurance
- claims
- subrogation
- snowflake
- confluence
capability:
exposes:
- type: mcp
namespace: subrogation-ops
port: 8080
tools:
- name: track-subrogation-recovery
description: "Pull subrogation recovery data for a date range, update the analytics warehouse, and publish a summary to Confluence. Use for weekly recovery reporting."
inputParameters:
- name: start_date
in: body
type: string
description: "Start date in ISO 8601 format."
- name: end_date
in: body
type: string
description: "End date in ISO 8601 format."
steps:
- name: get-recovery-data
type: call
call: "claims-api.get-subrogation-summary"
with:
start_date: "{{start_date}}"
end_date: "{{end_date}}"
- name: update-warehouse
type: call
call: "snowflake.run-query"
with:
query: "CALL CLAIMS_DB.PROCEDURES.UPDATE_SUBROGATION_SUMMARY('{{start_date}}', '{{end_date}}')"
- name: publish-report
type: call
call: "confluence.create-page"
with:
space_key: "CLAIMS"
title: "Subrogation Recovery Report {{start_date}} to {{end_date}}"
body: "Total recovered: ${{get-recovery-data.total_recovered}}. Cases closed: {{get-recovery-data.cases_closed}}."
consumes:
- type: http
namespace: claims-api
baseUri: "https://api.statefarm.com/claims/v2"
authentication:
type: bearer
token: "$secrets.claims_api_token"
resources:
- name: subrogation
path: "/subrogation/summary"
operations:
- name: get-subrogation-summary
method: GET
- type: http
namespace: snowflake
baseUri: "https://statefarm.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: confluence
baseUri: "https://statefarm.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: pages
path: "/content"
operations:
- name: create-page
method: POST
When a vehicle is declared a total loss, retrieves comparable vehicle values, calculates the settlement amount, updates the claim in ServiceNow, and notifies the policyholder with the offer.
naftiko: "0.5"
info:
label: "Claims Total Loss Vehicle Valuation"
description: "When a vehicle is declared a total loss, retrieves comparable vehicle values, calculates the settlement amount, updates the claim in ServiceNow, and notifies the policyholder with the offer."
tags:
- insurance
- claims
- auto
- servicenow
capability:
exposes:
- type: mcp
namespace: total-loss-ops
port: 8080
tools:
- name: calculate-total-loss-value
description: "Calculate total loss settlement for a vehicle. Gets comparable values, determines settlement, and updates the claim. Use when a vehicle is declared a total loss."
inputParameters:
- name: claim_id
in: body
type: string
description: "The claim identifier."
- name: vin
in: body
type: string
description: "The vehicle's VIN."
- name: mileage
in: body
type: integer
description: "Current vehicle mileage."
steps:
- name: get-vehicle-value
type: call
call: "valuation-api.get-market-value"
with:
vin: "{{vin}}"
mileage: "{{mileage}}"
- name: update-claim
type: call
call: "servicenow-claims.update-case"
with:
claim_id: "{{claim_id}}"
settlement_amount: "{{get-vehicle-value.fair_market_value}}"
valuation_method: "comparable_sales"
- name: send-offer
type: call
call: "notification-api.send-settlement-offer"
with:
claim_id: "{{claim_id}}"
offer_amount: "{{get-vehicle-value.fair_market_value}}"
consumes:
- type: http
namespace: valuation-api
baseUri: "https://api.statefarm.com/vehicles/v1"
authentication:
type: bearer
token: "$secrets.vehicle_api_token"
resources:
- name: valuations
path: "/valuations"
operations:
- name: get-market-value
method: POST
- type: http
namespace: servicenow-claims
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: cases
path: "/table/sn_customerservice_case/{{claim_id}}"
inputParameters:
- name: claim_id
in: path
operations:
- name: update-case
method: PATCH
- type: http
namespace: notification-api
baseUri: "https://api.statefarm.com/notifications/v1"
authentication:
type: bearer
token: "$secrets.notification_api_token"
resources:
- name: offers
path: "/settlement-offers"
operations:
- name: send-settlement-offer
method: POST
Reconciles vendor payments for claims services (body shops, medical providers) by comparing invoices against authorized amounts in the claims system, flagging discrepancies in ServiceNow.
naftiko: "0.5"
info:
label: "Claims Vendor Payment Reconciliation"
description: "Reconciles vendor payments for claims services (body shops, medical providers) by comparing invoices against authorized amounts in the claims system, flagging discrepancies in ServiceNow."
tags:
- insurance
- claims
- finance
- servicenow
capability:
exposes:
- type: mcp
namespace: vendor-reconcile
port: 8080
tools:
- name: reconcile-vendor-payments
description: "Reconcile vendor payments against claim authorizations. Identifies overpayments and discrepancies. Use for monthly vendor payment audits."
inputParameters:
- name: vendor_id
in: body
type: string
description: "The vendor identifier."
- name: period
in: body
type: string
description: "Reconciliation period in YYYY-MM format."
steps:
- name: get-invoices
type: call
call: "claims-api.get-vendor-invoices"
with:
vendor_id: "{{vendor_id}}"
period: "{{period}}"
- name: get-authorizations
type: call
call: "claims-api.get-vendor-authorizations"
with:
vendor_id: "{{vendor_id}}"
period: "{{period}}"
- name: flag-discrepancies
type: call
call: "servicenow.create-case"
with:
short_description: "Vendor payment reconciliation: {{vendor_id}} - {{period}}"
description: "Invoices: ${{get-invoices.total_amount}}. Authorizations: ${{get-authorizations.total_amount}}. Review required."
consumes:
- type: http
namespace: claims-api
baseUri: "https://api.statefarm.com/claims/v2"
authentication:
type: bearer
token: "$secrets.claims_api_token"
resources:
- name: vendor-invoices
path: "/vendors/{{vendor_id}}/invoices"
inputParameters:
- name: vendor_id
in: path
operations:
- name: get-vendor-invoices
method: GET
- name: vendor-authorizations
path: "/vendors/{{vendor_id}}/authorizations"
inputParameters:
- name: vendor_id
in: path
operations:
- name: get-vendor-authorizations
method: GET
- type: http
namespace: servicenow
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: cases
path: "/table/sn_customerservice_case"
operations:
- name: create-case
method: POST
Screens new policy applicants against AML watchlists, logs results in the compliance system, and escalates matches to the compliance team via ServiceNow and Microsoft Teams.
naftiko: "0.5"
info:
label: "Compliance Anti-Money Laundering Screening"
description: "Screens new policy applicants against AML watchlists, logs results in the compliance system, and escalates matches to the compliance team via ServiceNow and Microsoft Teams."
tags:
- insurance
- compliance
- fraud
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: aml-ops
port: 8080
tools:
- name: screen-applicant-aml
description: "Screen a policy applicant against AML and sanctions watchlists. Logs results and escalates matches for review. Use during new business intake."
inputParameters:
- name: applicant_name
in: body
type: string
description: "Full name of the applicant."
- name: application_id
in: body
type: string
description: "The policy application ID."
steps:
- name: run-screening
type: call
call: "aml-api.screen-individual"
with:
name: "{{applicant_name}}"
reference_id: "{{application_id}}"
- name: log-result
type: call
call: "servicenow.create-record"
with:
table: "u_aml_screening"
applicant_name: "{{applicant_name}}"
application_id: "{{application_id}}"
result: "{{run-screening.status}}"
match_count: "{{run-screening.match_count}}"
- name: alert-compliance
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.compliance_teams_channel"
text: "AML screening for {{applicant_name}} (App: {{application_id}}): {{run-screening.status}}. Matches: {{run-screening.match_count}}"
consumes:
- type: http
namespace: aml-api
baseUri: "https://api.statefarm.com/compliance/aml/v1"
authentication:
type: bearer
token: "$secrets.aml_api_token"
resources:
- name: screening
path: "/screen"
operations:
- name: screen-individual
method: POST
- type: http
namespace: servicenow
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: records
path: "/table/{{table}}"
inputParameters:
- name: table
in: path
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Processes a GDPR data subject access request by querying all systems containing the individual's data, compiling the report, and logging the request in the compliance system for audit.
naftiko: "0.5"
info:
label: "Compliance GDPR Data Subject Request"
description: "Processes a GDPR data subject access request by querying all systems containing the individual's data, compiling the report, and logging the request in the compliance system for audit."
tags:
- insurance
- compliance
- privacy
- servicenow
capability:
exposes:
- type: mcp
namespace: privacy-ops
port: 8080
tools:
- name: process-dsar
description: "Process a GDPR data subject access request. Queries relevant systems, compiles data, and logs the request. Use when a data subject request is received."
inputParameters:
- name: requestor_email
in: body
type: string
description: "The email of the data subject."
- name: request_type
in: body
type: string
description: "Type: access, deletion, portability."
steps:
- name: search-salesforce
type: call
call: "salesforce.search-customer"
with:
email: "{{requestor_email}}"
- name: search-claims
type: call
call: "claims-api.search-by-email"
with:
email: "{{requestor_email}}"
- name: log-request
type: call
call: "servicenow.create-record"
with:
table: "u_dsar_request"
requestor_email: "{{requestor_email}}"
request_type: "{{request_type}}"
sf_records: "{{search-salesforce.count}}"
claims_records: "{{search-claims.count}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://statefarm.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: search
path: "/search"
operations:
- name: search-customer
method: GET
- type: http
namespace: claims-api
baseUri: "https://api.statefarm.com/claims/v2"
authentication:
type: bearer
token: "$secrets.claims_api_token"
resources:
- name: search
path: "/claims/search"
operations:
- name: search-by-email
method: GET
- type: http
namespace: servicenow
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: records
path: "/table/{{table}}"
inputParameters:
- name: table
in: path
operations:
- name: create-record
method: POST
Monitors upcoming state regulatory filing deadlines in the compliance system, generates a summary report in Confluence, and alerts the compliance team via Microsoft Teams when filings are due within 30 days.
naftiko: "0.5"
info:
label: "Compliance Regulatory Filing Tracker"
description: "Monitors upcoming state regulatory filing deadlines in the compliance system, generates a summary report in Confluence, and alerts the compliance team via Microsoft Teams when filings are due within 30 days."
tags:
- insurance
- compliance
- confluence
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: compliance-ops
port: 8080
tools:
- name: check-filing-deadlines
description: "Check for upcoming regulatory filing deadlines within the specified number of days, create a Confluence summary page, and notify the compliance team. Use for monthly compliance reviews."
inputParameters:
- name: days_ahead
in: body
type: integer
description: "Number of days ahead to check for upcoming deadlines."
- name: state_code
in: body
type: string
description: "Two-letter state code to filter filings, or ALL for all states."
steps:
- name: get-upcoming-filings
type: call
call: "compliance-api.get-filings"
with:
days_ahead: "{{days_ahead}}"
state_code: "{{state_code}}"
- name: create-summary-page
type: call
call: "confluence.create-page"
with:
space_key: "COMPLIANCE"
title: "Regulatory Filing Deadlines - Next {{days_ahead}} Days"
body: "{{get-upcoming-filings.summary}}"
- name: notify-compliance
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.compliance_teams_channel"
text: "Regulatory filing report generated: {{get-upcoming-filings.count}} filings due in next {{days_ahead}} days. See Confluence: {{create-summary-page.url}}"
consumes:
- type: http
namespace: compliance-api
baseUri: "https://api.statefarm.com/compliance/v1"
authentication:
type: bearer
token: "$secrets.compliance_api_token"
resources:
- name: filings
path: "/filings/upcoming"
operations:
- name: get-filings
method: GET
- type: http
namespace: confluence
baseUri: "https://statefarm.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: pages
path: "/content"
operations:
- name: create-page
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Prepares for a state regulatory audit by gathering policy, claims, and complaint data from Snowflake, compiling an audit package in Confluence, and notifying the compliance team.
naftiko: "0.5"
info:
label: "Compliance State Audit Preparation"
description: "Prepares for a state regulatory audit by gathering policy, claims, and complaint data from Snowflake, compiling an audit package in Confluence, and notifying the compliance team."
tags:
- insurance
- compliance
- snowflake
- confluence
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: audit-prep
port: 8080
tools:
- name: prepare-state-audit
description: "Prepare materials for a state regulatory audit. Gathers data, creates audit package, and notifies compliance. Use when a state audit is announced."
inputParameters:
- name: state_code
in: body
type: string
description: "Two-letter state code being audited."
- name: audit_period_start
in: body
type: string
description: "Audit period start date in ISO 8601 format."
- name: audit_period_end
in: body
type: string
description: "Audit period end date in ISO 8601 format."
steps:
- name: gather-data
type: call
call: "snowflake.run-query"
with:
query: "CALL COMPLIANCE_DB.PROCEDURES.PREPARE_AUDIT_DATA('{{state_code}}', '{{audit_period_start}}', '{{audit_period_end}}')"
- name: create-audit-package
type: call
call: "confluence.create-page"
with:
space_key: "COMPLIANCE"
title: "State Audit Package: {{state_code}} ({{audit_period_start}} to {{audit_period_end}})"
body: "Policies: {{gather-data.policy_count}}. Claims: {{gather-data.claims_count}}. Complaints: {{gather-data.complaint_count}}"
- name: notify-compliance
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.compliance_teams_channel"
text: "Audit package prepared for {{state_code}}. {{gather-data.policy_count}} policies, {{gather-data.claims_count}} claims reviewed. Confluence: {{create-audit-package.url}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://statefarm.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: confluence
baseUri: "https://statefarm.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: pages
path: "/content"
operations:
- name: create-page
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
When a claims procedure document is updated in Confluence, detects the change, generates a summary of modifications, and broadcasts the update to claims staff via Microsoft Teams.
naftiko: "0.5"
info:
label: "Confluence Claims Procedure Update Notifier"
description: "When a claims procedure document is updated in Confluence, detects the change, generates a summary of modifications, and broadcasts the update to claims staff via Microsoft Teams."
tags:
- insurance
- claims
- confluence
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: procedure-notify
port: 8080
tools:
- name: notify-procedure-update
description: "Detect and notify claims staff about procedure updates in Confluence. Gets the latest version diff and posts to Teams. Use when claims procedures are modified."
inputParameters:
- name: page_id
in: body
type: string
description: "The Confluence page ID of the updated procedure."
steps:
- name: get-page-history
type: call
call: "confluence.get-page-history"
with:
page_id: "{{page_id}}"
- name: notify-claims-staff
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.claims_all_channel"
text: "Claims procedure updated: {{get-page-history.title}}. Version: {{get-page-history.version}}. Updated by: {{get-page-history.last_modifier}}. Please review."
consumes:
- type: http
namespace: confluence
baseUri: "https://statefarm.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: history
path: "/content/{{page_id}}/history"
inputParameters:
- name: page_id
in: path
operations:
- name: get-page-history
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
After a complex insurance claim is resolved in ServiceNow, publishes resolution notes and adjuster findings as a Confluence knowledge base article for future adjuster reference.
naftiko: "0.5"
info:
label: "Confluence Knowledge Base for Claims Resolution"
description: "After a complex insurance claim is resolved in ServiceNow, publishes resolution notes and adjuster findings as a Confluence knowledge base article for future adjuster reference."
tags:
- itsm
- knowledge-management
- confluence
- servicenow
- insurance
capability:
exposes:
- type: mcp
namespace: claims-knowledge
port: 8080
tools:
- name: publish-claims-resolution-article
description: "Given a resolved ServiceNow claim case number, retrieve resolution notes and adjuster findings, and create a Confluence knowledge base article in the Claims space. Use after complex claims are closed to build institutional adjuster knowledge."
inputParameters:
- name: case_number
in: body
type: string
description: "The ServiceNow claim case number (e.g., CS0012345)."
- name: confluence_space_key
in: body
type: string
description: "The Confluence space key for the claims knowledge base (e.g., CLAIMS)."
steps:
- name: get-case
type: call
call: "servicenow-kb.get-case"
with:
number: "{{case_number}}"
- name: create-kb-article
type: call
call: "confluence-kb.create-page"
with:
space_key: "{{confluence_space_key}}"
title: "Claim Resolution: {{get-case.short_description}} ({{case_number}})"
body: "Case: {{case_number}}\nLoss Type: {{get-case.category}}\nResolution: {{get-case.resolution_notes}}\nAdjuster Notes: {{get-case.work_notes}}"
consumes:
- type: http
namespace: servicenow-kb
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: cases
path: "/table/sn_customerservice_case"
inputParameters:
- name: number
in: query
operations:
- name: get-case
method: GET
- type: http
namespace: confluence-kb
baseUri: "https://statefarm.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: pages
path: "/content"
operations:
- name: create-page
method: POST
When a customer complaint is received, creates a case in ServiceNow, links it to the relevant policy in Salesforce, assigns a resolution specialist, and notifies the customer experience team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Customer Complaint Tracking Workflow"
description: "When a customer complaint is received, creates a case in ServiceNow, links it to the relevant policy in Salesforce, assigns a resolution specialist, and notifies the customer experience team via Microsoft Teams."
tags:
- insurance
- compliance
- servicenow
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: complaint-ops
port: 8080
tools:
- name: log-customer-complaint
description: "Log and track a customer complaint. Creates a ServiceNow case, links to the policy, and assigns a specialist. Use when a complaint is received through any channel."
inputParameters:
- name: policy_number
in: body
type: string
description: "The policyholder's policy number."
- name: complaint_category
in: body
type: string
description: "Category: claims, billing, service, underwriting."
- name: complaint_description
in: body
type: string
description: "Description of the complaint."
steps:
- name: create-case
type: call
call: "servicenow.create-case"
with:
short_description: "Customer complaint: {{complaint_category}} - Policy {{policy_number}}"
category: "complaint"
description: "{{complaint_description}}"
- name: link-to-policy
type: call
call: "salesforce.create-case-note"
with:
policy_number: "{{policy_number}}"
note: "Complaint logged: {{create-case.number}} - {{complaint_category}}"
- name: notify-cx-team
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.cx_teams_channel"
text: "New complaint for policy {{policy_number}} ({{complaint_category}}). Case: {{create-case.number}}. Please assign a specialist."
consumes:
- type: http
namespace: servicenow
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: cases
path: "/table/sn_customerservice_case"
operations:
- name: create-case
method: POST
- type: http
namespace: salesforce
baseUri: "https://statefarm.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: case-notes
path: "/sobjects/CaseNote__c"
operations:
- name: create-case-note
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Monitors Datadog for performance degradation on State Farm's claims processing application, creates a ServiceNow incident when thresholds are breached, and notifies the claims technology team in Microsoft Teams.
naftiko: "0.5"
info:
label: "Datadog Application Performance Monitor for Claims Systems"
description: "Monitors Datadog for performance degradation on State Farm's claims processing application, creates a ServiceNow incident when thresholds are breached, and notifies the claims technology team in Microsoft Teams."
tags:
- observability
- insurance
- datadog
- servicenow
- microsoft-teams
- monitoring
capability:
exposes:
- type: mcp
namespace: claims-monitoring
port: 8080
tools:
- name: handle-claims-system-alert
description: "Given a Datadog monitor ID and alert details for claims processing systems, open a ServiceNow incident and notify the claims technology team in Teams. Use when Datadog detects claims API latency or error rate spikes."
inputParameters:
- name: monitor_id
in: body
type: string
description: "The Datadog monitor ID that triggered the alert."
- name: alert_title
in: body
type: string
description: "The alert title from Datadog."
- name: severity
in: body
type: string
description: "Alert severity: critical, warning, or info."
steps:
- name: get-monitor
type: call
call: "datadog.get-monitor"
with:
monitor_id: "{{monitor_id}}"
- name: create-incident
type: call
call: "servicenow-dd.create-incident"
with:
short_description: "[Datadog] {{alert_title}}"
urgency: "{{severity}}"
description: "Monitor: {{get-monitor.name}}\nQuery: {{get-monitor.query}}\nState: {{get-monitor.overall_state}}"
- name: notify-claims-tech
type: call
call: "msteams-claims-tech.post-message"
with:
channel_id: "$secrets.claims_tech_teams_channel"
text: "Claims system alert: {{alert_title}} | Severity: {{severity}} | ServiceNow: {{create-incident.number}}"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: monitors
path: "/monitor/{{monitor_id}}"
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
- type: http
namespace: servicenow-dd
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams-claims-tech
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Monitors Datadog for claims API latency anomalies, creates a PagerDuty incident when P99 latency exceeds thresholds, and posts an alert to the engineering Teams channel.
naftiko: "0.5"
info:
label: "Datadog Claims API Latency Monitor"
description: "Monitors Datadog for claims API latency anomalies, creates a PagerDuty incident when P99 latency exceeds thresholds, and posts an alert to the engineering Teams channel."
tags:
- insurance
- claims
- datadog
- pagerduty
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: claims-monitoring
port: 8080
tools:
- name: check-claims-api-latency
description: "Check claims API P99 latency from Datadog metrics. Creates PagerDuty incident and Teams alert if threshold exceeded. Use for proactive performance monitoring."
inputParameters:
- name: service_name
in: body
type: string
description: "The Datadog service name to monitor."
- name: threshold_ms
in: body
type: integer
description: "P99 latency threshold in milliseconds."
steps:
- name: get-latency
type: call
call: "datadog.query-metrics"
with:
query: "p99:trace.http.request{service:{{service_name}}}.rollup(avg, 300)"
- name: create-incident
type: call
call: "pagerduty.create-incident"
with:
service_id: "$secrets.claims_eng_pagerduty"
title: "Claims API latency alert: {{service_name}} P99 > {{threshold_ms}}ms"
body: "Current P99: {{get-latency.value}}ms. Threshold: {{threshold_ms}}ms"
- name: notify-engineering
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.eng_teams_channel"
text: "Claims API latency alert: {{service_name}} P99 at {{get-latency.value}}ms (threshold: {{threshold_ms}}ms). PagerDuty: {{create-incident.incident_key}}"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
resources:
- name: metrics
path: "/query"
operations:
- name: query-metrics
method: GET
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: bearer
token: "$secrets.pagerduty_token"
resources:
- name: incidents
path: "/incidents"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
When a Datadog SLO breach is detected for State Farm's core insurance API services, opens a ServiceNow incident and triggers a PagerDuty page to the on-call platform engineer.
naftiko: "0.5"
info:
label: "Datadog SLO Breach to PagerDuty Escalation"
description: "When a Datadog SLO breach is detected for State Farm's core insurance API services, opens a ServiceNow incident and triggers a PagerDuty page to the on-call platform engineer."
tags:
- observability
- slo
- datadog
- pagerduty
- servicenow
capability:
exposes:
- type: mcp
namespace: slo-response
port: 8080
tools:
- name: handle-slo-breach
description: "Given a Datadog SLO ID, service name, and remaining error budget percentage, open a ServiceNow incident and trigger PagerDuty for the on-call engineer. Use when a State Farm insurance service API falls below its SLO threshold."
inputParameters:
- name: slo_id
in: body
type: string
description: "The Datadog SLO ID that breached its threshold."
- name: service_name
in: body
type: string
description: "The service name whose SLO was breached (e.g., claims-api, policy-api)."
- name: remaining_budget_pct
in: body
type: string
description: "The remaining error budget percentage at time of breach."
steps:
- name: get-slo
type: call
call: "datadog-slo.get-slo"
with:
slo_id: "{{slo_id}}"
- name: create-incident
type: call
call: "servicenow-slo.create-incident"
with:
short_description: "SLO breach: {{service_name}} {{remaining_budget_pct}}% error budget remaining"
category: "platform"
urgency: "critical"
- name: page-oncall
type: call
call: "pagerduty-slo.trigger-incident"
with:
service_id: "$secrets.pagerduty_service_id"
summary: "SLO breach for {{service_name}}: {{remaining_budget_pct}}% budget remaining"
severity: "critical"
consumes:
- type: http
namespace: datadog-slo
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: slos
path: "/slo/{{slo_id}}"
inputParameters:
- name: slo_id
in: path
operations:
- name: get-slo
method: GET
- type: http
namespace: servicenow-slo
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: pagerduty-slo
baseUri: "https://api.pagerduty.com"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.pagerduty_api_key"
placement: header
resources:
- name: incidents
path: "/incidents"
operations:
- name: trigger-incident
method: POST
When a new hire record is created in Workday, provisions a Microsoft 365 account via Graph API, opens a ServiceNow onboarding ticket, and sends a Teams welcome message to the new agent or employee.
naftiko: "0.5"
info:
label: "Employee Onboarding Orchestrator"
description: "When a new hire record is created in Workday, provisions a Microsoft 365 account via Graph API, opens a ServiceNow onboarding ticket, and sends a Teams welcome message to the new agent or employee."
tags:
- hr
- onboarding
- workday
- microsoft-365
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-onboarding
port: 8080
tools:
- name: trigger-onboarding
description: "Given a Workday worker ID and start date, orchestrate the full onboarding sequence: provision a Microsoft 365 account, open a ServiceNow ticket, and send a Teams welcome message. Use when a new hire is confirmed in Workday."
inputParameters:
- name: worker_id
in: body
type: string
description: "The Workday worker ID for the new hire."
- name: start_date
in: body
type: string
description: "The new hire's start date in ISO 8601 format (YYYY-MM-DD)."
- name: role_type
in: body
type: string
description: "Role type: agent, claims-adjuster, or corporate."
steps:
- name: get-worker
type: call
call: "workday.get-worker"
with:
worker_id: "{{worker_id}}"
- name: provision-account
type: call
call: "msgraph.create-user"
with:
displayName: "{{get-worker.firstName}} {{get-worker.lastName}}"
mail: "{{get-worker.email}}"
department: "{{get-worker.department}}"
- name: open-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "New hire onboarding: {{get-worker.firstName}} {{get-worker.lastName}} ({{role_type}})"
category: "hr_onboarding"
assignment_group: "IT_Onboarding"
- name: send-welcome
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.hr_teams_channel"
text: "Welcome {{get-worker.firstName}} {{get-worker.lastName}}! Starting {{start_date}} as {{role_type}}. ServiceNow: {{open-ticket.number}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: msgraph
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: users
path: "/users"
operations:
- name: create-user
method: POST
- type: http
namespace: servicenow
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Checks for duplicate or overlapping claims in Snowflake based on the claimant, loss date, and loss type, flags potential duplicates, and creates an investigation alert in ServiceNow.
naftiko: "0.5"
info:
label: "Fraud Claims Duplicate Detection"
description: "Checks for duplicate or overlapping claims in Snowflake based on the claimant, loss date, and loss type, flags potential duplicates, and creates an investigation alert in ServiceNow."
tags:
- insurance
- fraud
- claims
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: duplicate-detection
port: 8080
tools:
- name: detect-duplicate-claims
description: "Check for duplicate claims by claimant and loss details. Queries Snowflake and creates alerts for matches. Use during claims intake to prevent duplicate payments."
inputParameters:
- name: claimant_name
in: body
type: string
description: "Full name of the claimant."
- name: loss_date
in: body
type: string
description: "Date of loss in ISO 8601 format."
- name: loss_type
in: body
type: string
description: "Type of loss reported."
steps:
- name: search-duplicates
type: call
call: "snowflake.run-query"
with:
query: "SELECT claim_id, policy_number, status FROM CLAIMS_DB.PUBLIC.CLAIMS WHERE claimant_name = '{{claimant_name}}' AND loss_date BETWEEN DATEADD(day, -7, '{{loss_date}}') AND DATEADD(day, 7, '{{loss_date}}') AND loss_type = '{{loss_type}}'"
- name: create-alert
type: call
call: "servicenow.create-record"
with:
table: "u_fraud_alert"
alert_type: "duplicate_claim"
claimant: "{{claimant_name}}"
matches: "{{search-duplicates.row_count}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://statefarm.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: servicenow
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: records
path: "/table/{{table}}"
inputParameters:
- name: table
in: path
operations:
- name: create-record
method: POST
When the fraud scoring model flags a suspicious claim, creates a Special Investigations Unit case in ServiceNow, attaches the fraud indicators, and alerts the SIU team via PagerDuty.
naftiko: "0.5"
info:
label: "Fraud Detection Alert to SIU"
description: "When the fraud scoring model flags a suspicious claim, creates a Special Investigations Unit case in ServiceNow, attaches the fraud indicators, and alerts the SIU team via PagerDuty."
tags:
- insurance
- fraud
- servicenow
- pagerduty
capability:
exposes:
- type: mcp
namespace: fraud-ops
port: 8080
tools:
- name: escalate-fraud-alert
description: "Given a claim ID and fraud score, create an SIU investigation case in ServiceNow and trigger a PagerDuty alert for the fraud team. Use when the fraud model returns a score above the threshold."
inputParameters:
- name: claim_id
in: body
type: string
description: "The claim identifier flagged for fraud."
- name: fraud_score
in: body
type: number
description: "The fraud probability score from the detection model (0-100)."
- name: fraud_indicators
in: body
type: string
description: "Comma-separated list of fraud indicators detected."
steps:
- name: create-siu-case
type: call
call: "servicenow-siu.create-case"
with:
short_description: "Fraud alert: Claim {{claim_id}} (Score: {{fraud_score}})"
category: "fraud_investigation"
description: "Claim {{claim_id}} flagged with fraud score {{fraud_score}}. Indicators: {{fraud_indicators}}"
- name: alert-siu-team
type: call
call: "pagerduty.create-incident"
with:
service_id: "$secrets.siu_pagerduty_service"
title: "High-risk fraud alert: Claim {{claim_id}}"
body: "Fraud score: {{fraud_score}}. ServiceNow case: {{create-siu-case.number}}"
consumes:
- type: http
namespace: servicenow-siu
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: cases
path: "/table/sn_si_incident"
operations:
- name: create-case
method: POST
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: bearer
token: "$secrets.pagerduty_token"
resources:
- name: incidents
path: "/incidents"
operations:
- name: create-incident
method: POST
Runs graph analytics on claims data in Snowflake to detect potential fraud rings, creates investigation cases in ServiceNow for each identified ring, and alerts the SIU leadership via Microsoft Teams.
naftiko: "0.5"
info:
label: "Fraud Ring Detection Investigation"
description: "Runs graph analytics on claims data in Snowflake to detect potential fraud rings, creates investigation cases in ServiceNow for each identified ring, and alerts the SIU leadership via Microsoft Teams."
tags:
- insurance
- fraud
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: fraud-ring-ops
port: 8080
tools:
- name: detect-fraud-rings
description: "Run fraud ring detection analytics for a specified date range and create investigation cases for identified rings. Use during monthly fraud review cycles."
inputParameters:
- name: start_date
in: body
type: string
description: "Analysis start date in ISO 8601 format."
- name: end_date
in: body
type: string
description: "Analysis end date in ISO 8601 format."
steps:
- name: run-detection
type: call
call: "snowflake.run-query"
with:
query: "CALL FRAUD_DB.PROCEDURES.DETECT_FRAUD_RINGS('{{start_date}}', '{{end_date}}')"
- name: create-investigation
type: call
call: "servicenow.create-case"
with:
short_description: "Fraud ring investigation: {{start_date}} to {{end_date}}"
category: "fraud_ring"
description: "Rings detected: {{run-detection.ring_count}}. Total claims involved: {{run-detection.claims_count}}"
- name: alert-siu
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.siu_leadership_channel"
text: "Fraud ring detection complete. {{run-detection.ring_count}} potential rings identified involving {{run-detection.claims_count}} claims. Investigation: {{create-investigation.number}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://statefarm.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: servicenow
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: cases
path: "/table/sn_si_incident"
operations:
- name: create-case
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
When a GitHub Actions pipeline fails on a protected branch in State Farm's engineering repositories, creates a Jira bug and posts a failure alert to the engineering Microsoft Teams channel.
naftiko: "0.5"
info:
label: "GitHub Actions CI/CD Pipeline Failure Handler"
description: "When a GitHub Actions pipeline fails on a protected branch in State Farm's engineering repositories, creates a Jira bug and posts a failure alert to the engineering Microsoft Teams channel."
tags:
- devops
- cicd
- github
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: cicd-ops
port: 8080
tools:
- name: handle-pipeline-failure
description: "Given a failed GitHub Actions run ID, repository, and branch, open a Jira bug and post a Teams alert with full context. Use when CI/CD pipelines fail on protected branches for State Farm engineering projects."
inputParameters:
- name: run_id
in: body
type: string
description: "The GitHub Actions workflow run ID."
- name: repo
in: body
type: string
description: "The GitHub repository in owner/repo format."
- name: branch
in: body
type: string
description: "The branch where the failure occurred."
- name: commit_sha
in: body
type: string
description: "The commit SHA for the failed run."
steps:
- name: get-run
type: call
call: "github.get-workflow-run"
with:
repo: "{{repo}}"
run_id: "{{run_id}}"
- name: create-bug
type: call
call: "jira.create-issue"
with:
project_key: "ENG"
issuetype: "Bug"
summary: "[CI Failure] {{repo}} / {{branch}}"
description: "Run: {{run_id}}\nCommit: {{commit_sha}}\nConclusion: {{get-run.conclusion}}"
- name: post-alert
type: call
call: "msteams-cicd.post-message"
with:
channel_id: "$secrets.cicd_teams_channel"
text: "Pipeline failure: {{repo}} | Branch: {{branch}} | Jira: {{create-bug.key}}"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: workflow-runs
path: "/repos/{{repo}}/actions/runs/{{run_id}}"
inputParameters:
- name: repo
in: path
- name: run_id
in: path
operations:
- name: get-workflow-run
method: GET
- type: http
namespace: jira
baseUri: "https://statefarm.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams-cicd
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
When GitHub Dependabot detects a critical security vulnerability in a repository, creates a Jira ticket for the security team and sends an alert to the engineering Microsoft Teams channel.
naftiko: "0.5"
info:
label: "GitHub Security Advisory to Jira"
description: "When GitHub Dependabot detects a critical security vulnerability in a repository, creates a Jira ticket for the security team and sends an alert to the engineering Microsoft Teams channel."
tags:
- security
- github
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: security-ops
port: 8080
tools:
- name: process-security-advisory
description: "Process a GitHub security advisory. Creates a Jira ticket and notifies engineering. Use when Dependabot finds critical vulnerabilities."
inputParameters:
- name: repository
in: body
type: string
description: "The GitHub repository name."
- name: advisory_id
in: body
type: string
description: "The GitHub advisory identifier."
- name: severity
in: body
type: string
description: "Severity level: critical, high, medium, low."
steps:
- name: get-advisory
type: call
call: "github.get-advisory"
with:
owner: "statefarm"
repo: "{{repository}}"
advisory_id: "{{advisory_id}}"
- name: create-ticket
type: call
call: "jira.create-issue"
with:
project_key: "SEC"
issuetype: "Bug"
summary: "Security: {{severity}} vulnerability in {{repository}}"
description: "Advisory: {{advisory_id}}. Package: {{get-advisory.package_name}}. Fix: {{get-advisory.patched_version}}"
- name: notify-engineering
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.eng_security_channel"
text: "Security alert: {{severity}} vulnerability in {{repository}}. Package: {{get-advisory.package_name}}. Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: advisories
path: "/repos/{{owner}}/{{repo}}/dependabot/alerts/{{advisory_id}}"
inputParameters:
- name: owner
in: path
- name: repo
in: path
- name: advisory_id
in: path
operations:
- name: get-advisory
method: GET
- type: http
namespace: jira
baseUri: "https://statefarm.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Retrieves Dependabot vulnerability alerts for State Farm engineering repositories and creates Jira security tickets for high or critical severity findings.
naftiko: "0.5"
info:
label: "GitHub Security Vulnerability Scanner"
description: "Retrieves Dependabot vulnerability alerts for State Farm engineering repositories and creates Jira security tickets for high or critical severity findings."
tags:
- security
- devops
- github
- jira
capability:
exposes:
- type: mcp
namespace: security-scanning
port: 8080
tools:
- name: scan-repo-vulnerabilities
description: "Given a GitHub repository and severity threshold, retrieve Dependabot alerts and create Jira security tickets for findings at or above the threshold. Use for weekly security posture reviews of State Farm engineering repositories."
inputParameters:
- name: repo
in: body
type: string
description: "The GitHub repository in owner/repo format."
- name: severity_threshold
in: body
type: string
description: "Minimum severity to report: low, medium, high, or critical."
steps:
- name: get-alerts
type: call
call: "github-sec.list-dependabot-alerts"
with:
repo: "{{repo}}"
severity: "{{severity_threshold}}"
- name: create-sec-ticket
type: call
call: "jira-sec.create-issue"
with:
project_key: "SEC"
issuetype: "Bug"
summary: "Security vulnerability in {{repo}}: {{get-alerts.securityVulnerability.package.name}}"
description: "Severity: {{get-alerts.severity}}\nRepo: {{repo}}\nPackage: {{get-alerts.securityVulnerability.package.name}}"
consumes:
- type: http
namespace: github-sec
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: dependabot-alerts
path: "/repos/{{repo}}/dependabot/alerts"
inputParameters:
- name: repo
in: path
- name: severity
in: query
operations:
- name: list-dependabot-alerts
method: GET
- type: http
namespace: jira-sec
baseUri: "https://statefarm.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
When a new homeowner policy application requires a property inspection, identifies available inspectors in the area, schedules the inspection, creates a ServiceNow work order, and notifies the applicant.
naftiko: "0.5"
info:
label: "Homeowner Inspection Scheduling Workflow"
description: "When a new homeowner policy application requires a property inspection, identifies available inspectors in the area, schedules the inspection, creates a ServiceNow work order, and notifies the applicant."
tags:
- insurance
- underwriting
- servicenow
- scheduling
capability:
exposes:
- type: mcp
namespace: inspection-ops
port: 8080
tools:
- name: schedule-property-inspection
description: "Schedule a property inspection for a homeowner policy application. Finds available inspectors, creates a work order, and notifies the applicant. Use when underwriting requires a property inspection."
inputParameters:
- name: application_id
in: body
type: string
description: "The policy application ID."
- name: property_address
in: body
type: string
description: "Full property address for the inspection."
- name: zip_code
in: body
type: string
description: "Property ZIP code for inspector matching."
steps:
- name: find-inspector
type: call
call: "inspector-api.find-available"
with:
zip_code: "{{zip_code}}"
- name: create-work-order
type: call
call: "servicenow.create-work-order"
with:
short_description: "Property inspection: {{application_id}}"
location: "{{property_address}}"
assigned_to: "{{find-inspector.inspector_id}}"
description: "Homeowner policy inspection for application {{application_id}} at {{property_address}}"
- name: notify-applicant
type: call
call: "notification-api.send-email"
with:
template: "inspection-scheduled"
application_id: "{{application_id}}"
inspection_date: "{{find-inspector.next_available_date}}"
consumes:
- type: http
namespace: inspector-api
baseUri: "https://api.statefarm.com/inspections/v1"
authentication:
type: bearer
token: "$secrets.inspection_api_token"
resources:
- name: inspectors
path: "/inspectors/available"
operations:
- name: find-available
method: GET
- type: http
namespace: servicenow
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: work-orders
path: "/table/wm_order"
operations:
- name: create-work-order
method: POST
- type: http
namespace: notification-api
baseUri: "https://api.statefarm.com/notifications/v1"
authentication:
type: bearer
token: "$secrets.notification_api_token"
resources:
- name: emails
path: "/send"
operations:
- name: send-email
method: POST
When a new auto or homeowner insurance claim is submitted via the State Farm claims portal, creates a ServiceNow case for the claims adjuster team and sends a confirmation notification via Microsoft Teams.
naftiko: "0.5"
info:
label: "Insurance Claims Intake to ServiceNow"
description: "When a new auto or homeowner insurance claim is submitted via the State Farm claims portal, creates a ServiceNow case for the claims adjuster team and sends a confirmation notification via Microsoft Teams."
tags:
- insurance
- claims
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: claims-intake
port: 8080
tools:
- name: create-claims-case
description: "Given a claim submission payload (policy number, claimant name, loss type, and loss date), create a ServiceNow case for the claims adjuster team and notify the claims channel in Teams. Use when a new claim is submitted."
inputParameters:
- name: policy_number
in: body
type: string
description: "The policyholder's State Farm policy number."
- name: claimant_name
in: body
type: string
description: "Full name of the claimant."
- name: loss_type
in: body
type: string
description: "Type of loss: auto, homeowner, life, or health."
- name: loss_date
in: body
type: string
description: "Date of the loss in ISO 8601 format."
steps:
- name: create-case
type: call
call: "servicenow-claims.create-case"
with:
short_description: "New {{loss_type}} claim: Policy {{policy_number}}"
category: "insurance_claim"
description: "Claimant: {{claimant_name}}\nPolicy: {{policy_number}}\nLoss Type: {{loss_type}}\nLoss Date: {{loss_date}}"
- name: notify-claims-team
type: call
call: "msteams-claims.post-message"
with:
channel_id: "$secrets.claims_teams_channel"
text: "New {{loss_type}} claim filed. Policy: {{policy_number}} | Claimant: {{claimant_name}} | ServiceNow: {{create-case.number}}"
consumes:
- type: http
namespace: servicenow-claims
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: cases
path: "/table/sn_customerservice_case"
operations:
- name: create-case
method: POST
- type: http
namespace: msteams-claims
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Generates a weekly digest of the claims engineering team's Jira backlog including sprint progress, blockers, and upcoming deadlines, and posts the summary to Microsoft Teams.
naftiko: "0.5"
info:
label: "Jira Claims Engineering Backlog Digest"
description: "Generates a weekly digest of the claims engineering team's Jira backlog including sprint progress, blockers, and upcoming deadlines, and posts the summary to Microsoft Teams."
tags:
- engineering
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: eng-digest
port: 8080
tools:
- name: generate-backlog-digest
description: "Generate a Jira backlog digest for the claims engineering team. Summarizes sprint progress and posts to Teams. Use for weekly engineering standups."
inputParameters:
- name: board_id
in: body
type: string
description: "The Jira board ID for claims engineering."
steps:
- name: get-sprint-data
type: call
call: "jira.get-active-sprint"
with:
board_id: "{{board_id}}"
- name: get-blockers
type: call
call: "jira.search-issues"
with:
jql: "project = CLAIMS AND status = Blocked AND sprint in openSprints()"
- name: post-digest
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.claims_eng_channel"
text: "Claims Engineering Backlog Digest: Sprint {{get-sprint-data.sprint_name}}. Completed: {{get-sprint-data.done_count}}. In Progress: {{get-sprint-data.in_progress_count}}. Blockers: {{get-blockers.total}}"
consumes:
- type: http
namespace: jira
baseUri: "https://statefarm.atlassian.net/rest/agile/1.0"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: sprints
path: "/board/{{board_id}}/sprint"
inputParameters:
- name: board_id
in: path
operations:
- name: get-active-sprint
method: GET
- name: search
path: "/search"
operations:
- name: search-issues
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Retrieves completed sprint data from Jira for State Farm's engineering teams, calculates velocity, and publishes a sprint summary to the engineering Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Jira Sprint Velocity Report for Engineering"
description: "Retrieves completed sprint data from Jira for State Farm's engineering teams, calculates velocity, and publishes a sprint summary to the engineering Microsoft Teams channel."
tags:
- devops
- agile
- jira
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sprint-reporting
port: 8080
tools:
- name: publish-sprint-velocity
description: "Given a Jira board ID and sprint ID, retrieve completed issues and story points to calculate velocity. Post the sprint summary to the engineering Teams channel. Use after each State Farm engineering sprint closes."
inputParameters:
- name: board_id
in: body
type: string
description: "The Jira board ID (numeric)."
- name: sprint_id
in: body
type: string
description: "The completed Jira sprint ID."
steps:
- name: get-sprint
type: call
call: "jira-sprint.get-sprint"
with:
board_id: "{{board_id}}"
sprint_id: "{{sprint_id}}"
- name: get-sprint-issues
type: call
call: "jira-issues.search-issues"
with:
sprint_id: "{{sprint_id}}"
- name: post-velocity-report
type: call
call: "msteams-sprint.post-message"
with:
channel_id: "$secrets.engineering_teams_channel"
text: "Sprint {{get-sprint.name}} closed. Issues completed: {{get-sprint-issues.total}}. Sprint ID: {{sprint_id}}"
consumes:
- type: http
namespace: jira-sprint
baseUri: "https://statefarm.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: sprints
path: "/board/{{board_id}}/sprint/{{sprint_id}}"
inputParameters:
- name: board_id
in: path
- name: sprint_id
in: path
operations:
- name: get-sprint
method: GET
- type: http
namespace: jira-issues
baseUri: "https://statefarm.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/search"
inputParameters:
- name: sprint_id
in: query
operations:
- name: search-issues
method: GET
- type: http
namespace: msteams-sprint
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Publishes approved agent and corporate job requisitions from Workday Recruiting to LinkedIn Jobs and notifies the talent acquisition team in Microsoft Teams.
naftiko: "0.5"
info:
label: "LinkedIn Job Posting for State Farm Recruiting"
description: "Publishes approved agent and corporate job requisitions from Workday Recruiting to LinkedIn Jobs and notifies the talent acquisition team in Microsoft Teams."
tags:
- hr
- recruiting
- linkedin
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: talent-acquisition
port: 8080
tools:
- name: publish-job-to-linkedin
description: "Given a Workday job requisition ID and LinkedIn organization URN, retrieve the job details and publish the posting to LinkedIn. Notify the TA team in Teams when the posting is live. Use for approved agent and corporate role openings."
inputParameters:
- name: requisition_id
in: body
type: string
description: "The Workday job requisition ID."
- name: linkedin_org_id
in: body
type: string
description: "The LinkedIn organization URN for the State Farm entity posting the role."
steps:
- name: get-requisition
type: call
call: "workday-rec.get-job-requisition"
with:
requisition_id: "{{requisition_id}}"
- name: post-job
type: call
call: "linkedin-jobs.create-job-posting"
with:
organization_id: "{{linkedin_org_id}}"
title: "{{get-requisition.jobTitle}}"
description: "{{get-requisition.jobDescription}}"
location: "{{get-requisition.location}}"
- name: notify-ta
type: call
call: "msteams-ta.post-message"
with:
channel_id: "$secrets.recruiting_teams_channel"
text: "Job {{get-requisition.jobTitle}} posted to LinkedIn. Posting ID: {{post-job.postingId}}"
consumes:
- type: http
namespace: workday-rec
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: job-requisitions
path: "/jobRequisitions/{{requisition_id}}"
inputParameters:
- name: requisition_id
in: path
operations:
- name: get-job-requisition
method: GET
- type: http
namespace: linkedin-jobs
baseUri: "https://api.linkedin.com/v2"
authentication:
type: bearer
token: "$secrets.linkedin_token"
resources:
- name: job-postings
path: "/simpleJobPostings"
operations:
- name: create-job-posting
method: POST
- type: http
namespace: msteams-ta
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Fetches weekly campaign performance metrics from Marketo for State Farm's auto and home insurance product marketing programs and publishes a digest to the marketing team's Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Marketo Insurance Product Campaign Digest"
description: "Fetches weekly campaign performance metrics from Marketo for State Farm's auto and home insurance product marketing programs and publishes a digest to the marketing team's Microsoft Teams channel."
tags:
- marketing
- marketo
- reporting
- microsoft-teams
- insurance
capability:
exposes:
- type: mcp
namespace: marketing-reporting
port: 8080
tools:
- name: digest-insurance-campaign-performance
description: "Given a Marketo program ID and date range, retrieve email campaign performance metrics for State Farm insurance product marketing. Post the weekly digest to the marketing Teams channel. Use for weekly marketing performance reviews."
inputParameters:
- name: program_id
in: body
type: string
description: "The Marketo program ID for the insurance product campaign."
- name: start_date
in: body
type: string
description: "Report start date in ISO 8601 format."
- name: end_date
in: body
type: string
description: "Report end date in ISO 8601 format."
steps:
- name: get-campaign-stats
type: call
call: "marketo.get-program-stats"
with:
program_id: "{{program_id}}"
start_date: "{{start_date}}"
end_date: "{{end_date}}"
- name: post-digest
type: call
call: "msteams-mktg.post-message"
with:
channel_id: "$secrets.marketing_teams_channel"
text: "Campaign digest {{start_date}}-{{end_date}} | Program {{program_id}} | Opens: {{get-campaign-stats.opens}} | Clicks: {{get-campaign-stats.clicks}} | Leads: {{get-campaign-stats.newLeads}}"
consumes:
- type: http
namespace: marketo
baseUri: "https://statefarm.mktorest.com/rest/v1"
authentication:
type: bearer
token: "$secrets.marketo_token"
resources:
- name: program-stats
path: "/stats/usage/last7days.json"
inputParameters:
- name: program_id
in: query
operations:
- name: get-program-stats
method: GET
- type: http
namespace: msteams-mktg
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Triggers a targeted retention campaign in Marketo for policyholders identified as high churn risk by the analytics model, and logs the campaign execution in Salesforce.
naftiko: "0.5"
info:
label: "Marketo Policyholder Retention Campaign"
description: "Triggers a targeted retention campaign in Marketo for policyholders identified as high churn risk by the analytics model, and logs the campaign execution in Salesforce."
tags:
- insurance
- policy
- marketo
- salesforce
- analytics
capability:
exposes:
- type: mcp
namespace: retention-campaign
port: 8080
tools:
- name: launch-retention-campaign
description: "Launch a retention campaign for high-risk policyholders. Triggers Marketo campaign and logs in Salesforce. Use when churn prediction model identifies at-risk customers."
inputParameters:
- name: segment_name
in: body
type: string
description: "Name of the at-risk customer segment."
- name: campaign_id
in: body
type: string
description: "The Marketo campaign ID to trigger."
steps:
- name: trigger-campaign
type: call
call: "marketo.trigger-campaign"
with:
campaign_id: "{{campaign_id}}"
segment: "{{segment_name}}"
- name: log-campaign
type: call
call: "salesforce.create-campaign-log"
with:
campaign_name: "Retention: {{segment_name}}"
campaign_type: "retention"
marketo_campaign_id: "{{campaign_id}}"
status: "launched"
consumes:
- type: http
namespace: marketo
baseUri: "https://statefarm.mktorest.com/rest/v1"
authentication:
type: bearer
token: "$secrets.marketo_token"
resources:
- name: campaigns
path: "/campaigns/{{campaign_id}}/trigger.json"
inputParameters:
- name: campaign_id
in: path
operations:
- name: trigger-campaign
method: POST
- type: http
namespace: salesforce
baseUri: "https://statefarm.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: campaign-logs
path: "/sobjects/CampaignLog__c"
operations:
- name: create-campaign-log
method: POST
When underwriting approves a new policy application, creates the policy record in Salesforce, generates policy documents, sets up billing in the payment system, and sends a welcome package notification to the policyholder.
naftiko: "0.5"
info:
label: "New Policy Issuance Orchestrator"
description: "When underwriting approves a new policy application, creates the policy record in Salesforce, generates policy documents, sets up billing in the payment system, and sends a welcome package notification to the policyholder."
tags:
- insurance
- policy
- underwriting
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: policy-issuance
port: 8080
tools:
- name: issue-new-policy
description: "Issue a new insurance policy after underwriting approval. Creates the policy record, generates documents, establishes billing, and notifies the policyholder. Use when an application is approved."
inputParameters:
- name: application_id
in: body
type: string
description: "The approved application ID."
- name: product_type
in: body
type: string
description: "Product type: auto, homeowner, life, or umbrella."
- name: premium_amount
in: body
type: number
description: "Approved annual premium amount."
steps:
- name: create-policy
type: call
call: "salesforce.create-policy"
with:
application_id: "{{application_id}}"
product_type: "{{product_type}}"
premium: "{{premium_amount}}"
- name: generate-documents
type: call
call: "document-api.generate-policy-documents"
with:
policy_number: "{{create-policy.policy_number}}"
product_type: "{{product_type}}"
- name: setup-billing
type: call
call: "billing-api.create-billing-schedule"
with:
policy_number: "{{create-policy.policy_number}}"
annual_premium: "{{premium_amount}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://statefarm.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: policies
path: "/sobjects/Policy__c"
operations:
- name: create-policy
method: POST
- type: http
namespace: document-api
baseUri: "https://api.statefarm.com/documents/v1"
authentication:
type: bearer
token: "$secrets.document_api_token"
resources:
- name: generation
path: "/generate"
operations:
- name: generate-policy-documents
method: POST
- type: http
namespace: billing-api
baseUri: "https://api.statefarm.com/billing/v1"
authentication:
type: bearer
token: "$secrets.billing_api_token"
resources:
- name: schedules
path: "/billing-schedules"
operations:
- name: create-billing-schedule
method: POST
Assigns appropriate Okta application groups to new State Farm exclusive agents based on their license status and region from Workday, enabling access to the agent portal and policy management systems.
naftiko: "0.5"
info:
label: "Okta Agent Portal Access Provisioning"
description: "Assigns appropriate Okta application groups to new State Farm exclusive agents based on their license status and region from Workday, enabling access to the agent portal and policy management systems."
tags:
- identity
- security
- okta
- workday
- microsoft-teams
- insurance
capability:
exposes:
- type: mcp
namespace: agent-provisioning
port: 8080
tools:
- name: provision-agent-portal-access
description: "Given a Workday worker ID for a new agent, retrieve their license type and region, look up their Okta profile, and assign the appropriate agent portal access groups. Notify IT in Teams on completion. Use during agent onboarding."
inputParameters:
- name: worker_id
in: body
type: string
description: "The Workday worker ID for the new State Farm agent."
- name: okta_group_ids
in: body
type: string
description: "Comma-separated Okta group IDs to assign for agent portal access."
steps:
- name: get-worker
type: call
call: "workday-agent.get-worker"
with:
worker_id: "{{worker_id}}"
- name: find-okta-user
type: call
call: "okta-lookup.get-user"
with:
email: "{{get-worker.email}}"
- name: assign-agent-groups
type: call
call: "okta-groups.assign-user-to-group"
with:
user_id: "{{find-okta-user.id}}"
group_ids: "{{okta_group_ids}}"
- name: notify-it
type: call
call: "msteams-it.post-message"
with:
channel_id: "$secrets.it_teams_channel"
text: "Agent portal access provisioned for {{get-worker.email}}. Groups: {{okta_group_ids}}"
consumes:
- type: http
namespace: workday-agent
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: okta-lookup
baseUri: "https://statefarm.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: users
path: "/users"
inputParameters:
- name: email
in: query
operations:
- name: get-user
method: GET
- type: http
namespace: okta-groups
baseUri: "https://statefarm.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: group-members
path: "/groups/{{group_id}}/users/{{user_id}}"
inputParameters:
- name: group_id
in: path
- name: user_id
in: path
operations:
- name: assign-user-to-group
method: PUT
- type: http
namespace: msteams-it
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Pulls user access lists from Okta for claims-related applications, compares against authorized roles in Workday, and creates Jira tickets for any access discrepancies found.
naftiko: "0.5"
info:
label: "Okta Claims System Access Review"
description: "Pulls user access lists from Okta for claims-related applications, compares against authorized roles in Workday, and creates Jira tickets for any access discrepancies found."
tags:
- insurance
- claims
- okta
- workday
- jira
- compliance
capability:
exposes:
- type: mcp
namespace: access-review
port: 8080
tools:
- name: review-claims-access
description: "Review user access to claims systems by comparing Okta assignments against Workday roles. Creates tickets for discrepancies. Use for quarterly access certification."
inputParameters:
- name: application_name
in: body
type: string
description: "The Okta application name to review."
steps:
- name: get-okta-users
type: call
call: "okta.list-app-users"
with:
app_name: "{{application_name}}"
- name: get-authorized-roles
type: call
call: "workday.get-department-roster"
with:
department: "claims"
- name: create-discrepancy-ticket
type: call
call: "jira.create-issue"
with:
project_key: "SEC"
issuetype: "Task"
summary: "Access review: {{application_name}} discrepancies"
description: "Okta users: {{get-okta-users.count}}. Authorized: {{get-authorized-roles.count}}. Review required."
consumes:
- type: http
namespace: okta
baseUri: "https://statefarm.okta.com/api/v1"
authentication:
type: bearer
token: "$secrets.okta_api_token"
resources:
- name: app-users
path: "/apps/{{app_name}}/users"
inputParameters:
- name: app_name
in: path
operations:
- name: list-app-users
method: GET
- type: http
namespace: workday
baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/statefarm"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: roster
path: "/staffing/departmentRoster"
operations:
- name: get-department-roster
method: GET
- type: http
namespace: jira
baseUri: "https://statefarm.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
When Okta detects a suspicious login for a State Farm employee or agent, suspends the account, opens a ServiceNow security incident, and alerts the security operations team in Microsoft Teams.
naftiko: "0.5"
info:
label: "Okta Suspicious Login Security Response"
description: "When Okta detects a suspicious login for a State Farm employee or agent, suspends the account, opens a ServiceNow security incident, and alerts the security operations team in Microsoft Teams."
tags:
- security
- identity
- okta
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: security-response
port: 8080
tools:
- name: handle-suspicious-login
description: "Given an Okta user ID and suspicious event details, suspend the account, open a ServiceNow security incident, and notify the SOC team in Teams. Use when Okta ThreatInsight flags an anomalous login for a State Farm employee or agent."
inputParameters:
- name: okta_user_id
in: body
type: string
description: "The Okta user ID with the suspicious login."
- name: event_description
in: body
type: string
description: "Description of the suspicious event from Okta ThreatInsight."
steps:
- name: suspend-user
type: call
call: "okta-suspend.suspend-user"
with:
user_id: "{{okta_user_id}}"
- name: create-sec-incident
type: call
call: "servicenow-sec.create-incident"
with:
short_description: "Suspicious login: Okta user {{okta_user_id}}"
category: "security"
urgency: "high"
description: "{{event_description}}\nAccount suspended pending review."
- name: notify-soc
type: call
call: "msteams-soc.post-message"
with:
channel_id: "$secrets.security_teams_channel"
text: "Security alert: Okta account {{okta_user_id}} suspended. ServiceNow: {{create-sec-incident.number}}"
consumes:
- type: http
namespace: okta-suspend
baseUri: "https://statefarm.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: user-lifecycle
path: "/users/{{user_id}}/lifecycle/suspend"
inputParameters:
- name: user_id
in: path
operations:
- name: suspend-user
method: POST
- type: http
namespace: servicenow-sec
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams-soc
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Retrieves the current on-call schedule for the claims engineering team from PagerDuty, returning the primary and secondary on-call engineers.
naftiko: "0.5"
info:
label: "PagerDuty Claims On-Call Lookup"
description: "Retrieves the current on-call schedule for the claims engineering team from PagerDuty, returning the primary and secondary on-call engineers."
tags:
- engineering
- pagerduty
- claims
capability:
exposes:
- type: mcp
namespace: oncall-ops
port: 8080
tools:
- name: get-claims-oncall
description: "Look up who is currently on call for the claims engineering team. Returns primary and secondary on-call engineers. Use when escalation contacts are needed."
inputParameters:
- name: schedule_id
in: body
type: string
description: "The PagerDuty schedule ID for claims engineering."
call: "pagerduty.get-oncall"
with:
schedule_id: "{{schedule_id}}"
outputParameters:
- name: primary_oncall
type: string
mapping: "$.oncalls[0].user.name"
- name: primary_email
type: string
mapping: "$.oncalls[0].user.email"
- name: secondary_oncall
type: string
mapping: "$.oncalls[1].user.name"
consumes:
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: bearer
token: "$secrets.pagerduty_token"
resources:
- name: oncalls
path: "/oncalls"
operations:
- name: get-oncall
method: GET
Retrieves the current billing status for a policy including outstanding balance, next payment due date, and payment history from the billing system.
naftiko: "0.5"
info:
label: "Policy Billing Status Lookup"
description: "Retrieves the current billing status for a policy including outstanding balance, next payment due date, and payment history from the billing system."
tags:
- insurance
- policy
- billing
- finance
capability:
exposes:
- type: mcp
namespace: billing-ops
port: 8080
tools:
- name: get-billing-status
description: "Look up billing status for a policy by policy number. Returns outstanding balance, next due date, payment method, and last payment details. Use when agents need to discuss billing with customers."
inputParameters:
- name: policy_number
in: body
type: string
description: "The State Farm policy number."
call: "billing-api.get-status"
with:
policy_number: "{{policy_number}}"
outputParameters:
- name: outstanding_balance
type: number
mapping: "$.outstandingBalance"
- name: next_due_date
type: string
mapping: "$.nextDueDate"
- name: payment_method
type: string
mapping: "$.paymentMethod"
- name: last_payment_amount
type: number
mapping: "$.lastPayment.amount"
consumes:
- type: http
namespace: billing-api
baseUri: "https://api.statefarm.com/billing/v1"
authentication:
type: bearer
token: "$secrets.billing_api_token"
resources:
- name: status
path: "/policies/{{policy_number}}/billing-status"
inputParameters:
- name: policy_number
in: path
operations:
- name: get-status
method: GET
Processes a policy cancellation request by calculating the pro-rata refund, updating the policy status in Salesforce, scheduling the refund payment, and logging the cancellation in ServiceNow.
naftiko: "0.5"
info:
label: "Policy Cancellation Processing"
description: "Processes a policy cancellation request by calculating the pro-rata refund, updating the policy status in Salesforce, scheduling the refund payment, and logging the cancellation in ServiceNow."
tags:
- insurance
- policy
- salesforce
- servicenow
capability:
exposes:
- type: mcp
namespace: policy-cancel
port: 8080
tools:
- name: process-cancellation
description: "Process a policy cancellation. Calculates refund, updates status, schedules payment, and creates an audit record. Use when a policyholder or agent requests cancellation."
inputParameters:
- name: policy_number
in: body
type: string
description: "The policy number to cancel."
- name: cancellation_reason
in: body
type: string
description: "Reason for cancellation."
- name: effective_date
in: body
type: string
description: "Cancellation effective date in ISO 8601 format."
steps:
- name: calculate-refund
type: call
call: "billing-api.calculate-prorata-refund"
with:
policy_number: "{{policy_number}}"
effective_date: "{{effective_date}}"
- name: update-policy-status
type: call
call: "salesforce.cancel-policy"
with:
policy_number: "{{policy_number}}"
reason: "{{cancellation_reason}}"
effective_date: "{{effective_date}}"
- name: log-cancellation
type: call
call: "servicenow.create-case"
with:
short_description: "Policy cancellation: {{policy_number}}"
description: "Reason: {{cancellation_reason}}. Effective: {{effective_date}}. Refund: ${{calculate-refund.refund_amount}}"
consumes:
- type: http
namespace: billing-api
baseUri: "https://api.statefarm.com/billing/v1"
authentication:
type: bearer
token: "$secrets.billing_api_token"
resources:
- name: refunds
path: "/refunds/calculate"
operations:
- name: calculate-prorata-refund
method: POST
- type: http
namespace: salesforce
baseUri: "https://statefarm.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: policies
path: "/sobjects/Policy__c"
operations:
- name: cancel-policy
method: PATCH
- type: http
namespace: servicenow
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: cases
path: "/table/sn_customerservice_case"
operations:
- name: create-case
method: POST
Retrieves a policy document from the document management system by policy number and document type, returning the document URL and metadata.
naftiko: "0.5"
info:
label: "Policy Document Retrieval"
description: "Retrieves a policy document from the document management system by policy number and document type, returning the document URL and metadata."
tags:
- insurance
- policy
- document-management
capability:
exposes:
- type: mcp
namespace: document-ops
port: 8080
tools:
- name: get-policy-document
description: "Retrieve a policy document by policy number and document type (declaration, endorsement, certificate). Returns document URL and last modified date. Use when agents need to access policy documents."
inputParameters:
- name: policy_number
in: body
type: string
description: "The State Farm policy number."
- name: document_type
in: body
type: string
description: "Type of document: declaration, endorsement, or certificate."
call: "document-api.get-document"
with:
policy_number: "{{policy_number}}"
document_type: "{{document_type}}"
outputParameters:
- name: document_url
type: string
mapping: "$.documentUrl"
- name: last_modified
type: string
mapping: "$.lastModified"
- name: version
type: string
mapping: "$.version"
consumes:
- type: http
namespace: document-api
baseUri: "https://api.statefarm.com/documents/v1"
authentication:
type: bearer
token: "$secrets.document_api_token"
resources:
- name: documents
path: "/policies/{{policy_number}}/documents"
inputParameters:
- name: policy_number
in: path
operations:
- name: get-document
method: GET
Processes a policy endorsement request by validating the change, updating the policy in Salesforce, recalculating the premium, and generating an updated declarations page.
naftiko: "0.5"
info:
label: "Policy Endorsement Processing"
description: "Processes a policy endorsement request by validating the change, updating the policy in Salesforce, recalculating the premium, and generating an updated declarations page."
tags:
- insurance
- policy
- salesforce
- underwriting
capability:
exposes:
- type: mcp
namespace: endorsement-ops
port: 8080
tools:
- name: process-endorsement
description: "Process a policy endorsement. Validates the change, updates the policy, recalculates premium, and generates new documents. Use when a policyholder requests coverage changes."
inputParameters:
- name: policy_number
in: body
type: string
description: "The policy number to endorse."
- name: endorsement_type
in: body
type: string
description: "Type of endorsement: add-coverage, remove-coverage, change-limits, add-driver."
- name: effective_date
in: body
type: string
description: "Endorsement effective date in ISO 8601 format."
steps:
- name: validate-endorsement
type: call
call: "underwriting-engine.validate-endorsement"
with:
policy_number: "{{policy_number}}"
endorsement_type: "{{endorsement_type}}"
- name: update-policy
type: call
call: "salesforce.update-policy"
with:
policy_number: "{{policy_number}}"
endorsement_type: "{{endorsement_type}}"
effective_date: "{{effective_date}}"
- name: recalculate-premium
type: call
call: "rating-engine.recalculate"
with:
policy_number: "{{policy_number}}"
- name: generate-dec-page
type: call
call: "document-api.generate-declaration"
with:
policy_number: "{{policy_number}}"
consumes:
- type: http
namespace: underwriting-engine
baseUri: "https://api.statefarm.com/underwriting/v2"
authentication:
type: bearer
token: "$secrets.underwriting_api_token"
resources:
- name: endorsements
path: "/endorsements/validate"
operations:
- name: validate-endorsement
method: POST
- type: http
namespace: salesforce
baseUri: "https://statefarm.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: policies
path: "/sobjects/Policy__c"
operations:
- name: update-policy
method: PATCH
- type: http
namespace: rating-engine
baseUri: "https://api.statefarm.com/rating/v2"
authentication:
type: bearer
token: "$secrets.rating_engine_token"
resources:
- name: recalculation
path: "/recalculate"
operations:
- name: recalculate
method: POST
- type: http
namespace: document-api
baseUri: "https://api.statefarm.com/documents/v1"
authentication:
type: bearer
token: "$secrets.document_api_token"
resources:
- name: declarations
path: "/generate/declaration"
operations:
- name: generate-declaration
method: POST
Identifies policies at risk of lapsing due to non-payment from Salesforce, triggers outreach campaigns via Marketo, and assigns follow-up tasks to agents in Jira.
naftiko: "0.5"
info:
label: "Policy Lapse Prevention Outreach"
description: "Identifies policies at risk of lapsing due to non-payment from Salesforce, triggers outreach campaigns via Marketo, and assigns follow-up tasks to agents in Jira."
tags:
- insurance
- policy
- salesforce
- marketo
- jira
capability:
exposes:
- type: mcp
namespace: lapse-prevention
port: 8080
tools:
- name: run-lapse-prevention
description: "Identify at-risk policies and trigger retention outreach. Queries lapsing policies, sends campaigns, and creates agent tasks. Use for weekly retention runs."
inputParameters:
- name: days_until_lapse
in: body
type: integer
description: "Number of days until policy lapse to target."
steps:
- name: get-at-risk-policies
type: call
call: "salesforce.query-lapsing-policies"
with:
days_until_lapse: "{{days_until_lapse}}"
- name: trigger-campaign
type: call
call: "marketo.trigger-campaign"
with:
campaign_id: "$secrets.lapse_prevention_campaign_id"
lead_list: "{{get-at-risk-policies.customer_ids}}"
- name: create-agent-tasks
type: call
call: "jira.create-issue"
with:
project_key: "RETENTION"
issuetype: "Task"
summary: "Lapse prevention follow-up: {{get-at-risk-policies.count}} policies"
description: "{{get-at-risk-policies.count}} policies within {{days_until_lapse}} days of lapsing. Campaign triggered. Agent follow-up required."
consumes:
- type: http
namespace: salesforce
baseUri: "https://statefarm.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: queries
path: "/query"
operations:
- name: query-lapsing-policies
method: GET
- type: http
namespace: marketo
baseUri: "https://statefarm.mktorest.com/rest/v1"
authentication:
type: bearer
token: "$secrets.marketo_token"
resources:
- name: campaigns
path: "/campaigns/{{campaign_id}}/trigger.json"
inputParameters:
- name: campaign_id
in: path
operations:
- name: trigger-campaign
method: POST
- type: http
namespace: jira
baseUri: "https://statefarm.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Retrieves the current premium calculation breakdown for a given policy number from the actuarial rating engine, returning base rate, risk factors, and final premium.
naftiko: "0.5"
info:
label: "Policy Premium Calculation Lookup"
description: "Retrieves the current premium calculation breakdown for a given policy number from the actuarial rating engine, returning base rate, risk factors, and final premium."
tags:
- insurance
- policy
- actuarial
- premium
capability:
exposes:
- type: mcp
namespace: premium-ops
port: 8080
tools:
- name: get-premium-breakdown
description: "Look up premium calculation details for a State Farm policy by policy number. Returns base rate, applied risk factors, discounts, and final annual premium. Use when agents need to explain premium details to customers."
inputParameters:
- name: policy_number
in: body
type: string
description: "The State Farm policy number to look up."
call: "rating-engine.get-premium"
with:
policy_number: "{{policy_number}}"
outputParameters:
- name: base_rate
type: number
mapping: "$.baseRate"
- name: risk_factors
type: array
mapping: "$.riskFactors"
- name: discount_amount
type: number
mapping: "$.totalDiscount"
- name: final_premium
type: number
mapping: "$.finalAnnualPremium"
consumes:
- type: http
namespace: rating-engine
baseUri: "https://api.statefarm.com/rating/v2"
authentication:
type: bearer
token: "$secrets.rating_engine_token"
resources:
- name: premiums
path: "/policies/{{policy_number}}/premium"
inputParameters:
- name: policy_number
in: path
operations:
- name: get-premium
method: GET
Generates an insurance quote by collecting risk factors, running the rating engine, and creating a quote record in Salesforce for the agent to present to the prospect.
naftiko: "0.5"
info:
label: "Policy Quote Generation Workflow"
description: "Generates an insurance quote by collecting risk factors, running the rating engine, and creating a quote record in Salesforce for the agent to present to the prospect."
tags:
- insurance
- underwriting
- policy
- salesforce
capability:
exposes:
- type: mcp
namespace: quote-ops
port: 8080
tools:
- name: generate-quote
description: "Generate an insurance quote for a prospect. Runs rating, applies discounts, and creates a Salesforce quote record. Use when an agent requests a new quote."
inputParameters:
- name: product_type
in: body
type: string
description: "Product type: auto, homeowner, life, umbrella."
- name: applicant_data
in: body
type: string
description: "JSON string of applicant risk data."
steps:
- name: calculate-rate
type: call
call: "rating-engine.calculate-quote"
with:
product_type: "{{product_type}}"
risk_data: "{{applicant_data}}"
- name: create-quote
type: call
call: "salesforce.create-quote"
with:
product_type: "{{product_type}}"
quoted_premium: "{{calculate-rate.annual_premium}}"
coverage_options: "{{calculate-rate.coverage_options}}"
consumes:
- type: http
namespace: rating-engine
baseUri: "https://api.statefarm.com/rating/v2"
authentication:
type: bearer
token: "$secrets.rating_engine_token"
resources:
- name: quotes
path: "/quote"
operations:
- name: calculate-quote
method: POST
- type: http
namespace: salesforce
baseUri: "https://statefarm.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: quotes
path: "/sobjects/Quote__c"
operations:
- name: create-quote
method: POST
Processes a lapsed policy reinstatement request by verifying eligibility, calculating any back premium owed, reinstating the policy in Salesforce, and notifying the agent.
naftiko: "0.5"
info:
label: "Policy Reinstatement Workflow"
description: "Processes a lapsed policy reinstatement request by verifying eligibility, calculating any back premium owed, reinstating the policy in Salesforce, and notifying the agent."
tags:
- insurance
- policy
- salesforce
- billing
capability:
exposes:
- type: mcp
namespace: reinstatement-ops
port: 8080
tools:
- name: reinstate-policy
description: "Process a policy reinstatement. Checks eligibility, calculates back premium, reinstates in Salesforce, and notifies the agent. Use when a lapsed policyholder requests reinstatement."
inputParameters:
- name: policy_number
in: body
type: string
description: "The lapsed policy number."
steps:
- name: check-eligibility
type: call
call: "underwriting-engine.check-reinstatement-eligibility"
with:
policy_number: "{{policy_number}}"
- name: calculate-back-premium
type: call
call: "billing-api.calculate-back-premium"
with:
policy_number: "{{policy_number}}"
- name: reinstate-policy
type: call
call: "salesforce.reinstate-policy"
with:
policy_number: "{{policy_number}}"
back_premium: "{{calculate-back-premium.amount}}"
consumes:
- type: http
namespace: underwriting-engine
baseUri: "https://api.statefarm.com/underwriting/v2"
authentication:
type: bearer
token: "$secrets.underwriting_api_token"
resources:
- name: reinstatement
path: "/reinstatement/eligibility"
operations:
- name: check-reinstatement-eligibility
method: POST
- type: http
namespace: billing-api
baseUri: "https://api.statefarm.com/billing/v1"
authentication:
type: bearer
token: "$secrets.billing_api_token"
resources:
- name: back-premium
path: "/back-premium/calculate"
operations:
- name: calculate-back-premium
method: POST
- type: http
namespace: salesforce
baseUri: "https://statefarm.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: policies
path: "/sobjects/Policy__c"
operations:
- name: reinstate-policy
method: PATCH
When a policy approaches renewal, pulls claims history from Snowflake, recalculates risk in the underwriting engine, updates the renewal offer in Salesforce, and notifies the agent via Microsoft Teams.
naftiko: "0.5"
info:
label: "Policy Renewal Underwriting Review"
description: "When a policy approaches renewal, pulls claims history from Snowflake, recalculates risk in the underwriting engine, updates the renewal offer in Salesforce, and notifies the agent via Microsoft Teams."
tags:
- insurance
- underwriting
- policy
- snowflake
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: renewal-review
port: 8080
tools:
- name: process-renewal-review
description: "Given a policy number approaching renewal, pull claims history, recalculate risk, update the renewal offer, and notify the servicing agent. Use during the 60-day pre-renewal window."
inputParameters:
- name: policy_number
in: body
type: string
description: "The policy number up for renewal."
- name: agent_email
in: body
type: string
description: "Email of the servicing agent."
steps:
- name: get-claims-history
type: call
call: "snowflake.run-query"
with:
query: "SELECT * FROM CLAIMS_DB.PUBLIC.CLAIMS WHERE policy_number = '{{policy_number}}' AND claim_date >= DATEADD(year, -3, CURRENT_DATE())"
- name: recalculate-risk
type: call
call: "underwriting-engine.calculate-renewal-risk"
with:
policy_number: "{{policy_number}}"
claims_count: "{{get-claims-history.row_count}}"
- name: update-renewal-offer
type: call
call: "salesforce.update-renewal"
with:
policy_number: "{{policy_number}}"
new_premium: "{{recalculate-risk.recommended_premium}}"
risk_grade: "{{recalculate-risk.risk_grade}}"
- name: notify-agent
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.agents_teams_channel"
text: "Renewal review complete for {{policy_number}}. New risk grade: {{recalculate-risk.risk_grade}}. Recommended premium: ${{recalculate-risk.recommended_premium}}."
consumes:
- type: http
namespace: snowflake
baseUri: "https://statefarm.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: queries
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: underwriting-engine
baseUri: "https://api.statefarm.com/underwriting/v2"
authentication:
type: bearer
token: "$secrets.underwriting_api_token"
resources:
- name: renewal-risk
path: "/renewal-risk"
operations:
- name: calculate-renewal-risk
method: POST
- type: http
namespace: salesforce
baseUri: "https://statefarm.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: renewals
path: "/sobjects/Renewal__c"
operations:
- name: update-renewal
method: PATCH
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
When a policyholder requests an address change, validates the new address, updates the policy record in Salesforce, triggers a premium recalculation for homeowner policies, and sends confirmation via email.
naftiko: "0.5"
info:
label: "Policyholder Address Change Workflow"
description: "When a policyholder requests an address change, validates the new address, updates the policy record in Salesforce, triggers a premium recalculation for homeowner policies, and sends confirmation via email."
tags:
- insurance
- policy
- salesforce
- underwriting
capability:
exposes:
- type: mcp
namespace: policy-servicing
port: 8080
tools:
- name: process-address-change
description: "Process a policyholder address change request. Validates the address, updates Salesforce, recalculates premium if applicable, and sends confirmation. Use for address change service requests."
inputParameters:
- name: policy_number
in: body
type: string
description: "The policy number to update."
- name: new_address
in: body
type: string
description: "The new street address."
- name: new_city
in: body
type: string
description: "The new city."
- name: new_state
in: body
type: string
description: "The new two-letter state code."
- name: new_zip
in: body
type: string
description: "The new ZIP code."
steps:
- name: validate-address
type: call
call: "address-api.validate"
with:
street: "{{new_address}}"
city: "{{new_city}}"
state: "{{new_state}}"
zip: "{{new_zip}}"
- name: update-policy
type: call
call: "salesforce.update-policy-address"
with:
policy_number: "{{policy_number}}"
address: "{{validate-address.standardized_address}}"
- name: recalculate-premium
type: call
call: "rating-engine.recalculate"
with:
policy_number: "{{policy_number}}"
new_zip: "{{new_zip}}"
consumes:
- type: http
namespace: address-api
baseUri: "https://api.statefarm.com/address/v1"
authentication:
type: bearer
token: "$secrets.address_api_token"
resources:
- name: validation
path: "/validate"
operations:
- name: validate
method: POST
- type: http
namespace: salesforce
baseUri: "https://statefarm.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: policies
path: "/sobjects/Policy__c"
operations:
- name: update-policy-address
method: PATCH
- type: http
namespace: rating-engine
baseUri: "https://api.statefarm.com/rating/v2"
authentication:
type: bearer
token: "$secrets.rating_engine_token"
resources:
- name: recalculation
path: "/recalculate"
operations:
- name: recalculate
method: POST
Retrieves a policyholder's complete claims history from Snowflake, returning all claims with dates, types, amounts, and outcomes for use in underwriting and service interactions.
naftiko: "0.5"
info:
label: "Policyholder Claims History Lookup"
description: "Retrieves a policyholder's complete claims history from Snowflake, returning all claims with dates, types, amounts, and outcomes for use in underwriting and service interactions."
tags:
- insurance
- claims
- snowflake
capability:
exposes:
- type: mcp
namespace: claims-history
port: 8080
tools:
- name: get-claims-history
description: "Look up a policyholder's claims history by customer ID. Returns all historical claims with dates, types, and outcomes. Use during underwriting review or customer service."
inputParameters:
- name: customer_id
in: body
type: string
description: "The State Farm customer ID."
call: "snowflake.query-claims-history"
with:
customer_id: "{{customer_id}}"
outputParameters:
- name: total_claims
type: integer
mapping: "$.totalClaims"
- name: claims
type: array
mapping: "$.claims"
- name: total_paid
type: number
mapping: "$.totalPaid"
consumes:
- type: http
namespace: snowflake
baseUri: "https://statefarm.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: queries
path: "/statements"
operations:
- name: query-claims-history
method: POST
Retrieves the contact information on file for a policyholder including phone, email, and mailing address.
naftiko: "0.5"
info:
label: "Policyholder Contact Info Lookup"
description: "Retrieves the contact information on file for a policyholder including phone, email, and mailing address."
tags:
- insurance
- policyholder
- contact
capability:
exposes:
- type: mcp
namespace: sf-customers
port: 8080
tools:
- name: get-contact-info
description: "Given a customer ID, return phone, email, and mailing address. Use when verifying policyholder contact details."
inputParameters:
- name: customer_id
in: body
type: string
description: "The customer identifier."
call: "sf-customers.get-contact-info"
with:
customer_id: "{{customer_id}}"
outputParameters:
- name: phone
type: string
mapping: "$.phone"
- name: email
type: string
mapping: "$.email"
- name: address
type: string
mapping: "$.mailing_address"
consumes:
- namespace: sf-customers
type: http
baseUri: "https://api.statefarm.com/v1/customers"
authentication:
type: bearer
token: "$secrets.sf_customers_token"
resources:
- name: contact
path: "/customers/{customer_id}/contact"
inputParameters:
- name: customer_id
in: path
operations:
- name: get-contact-info
method: GET
Retrieves the coverage limits for each coverage type on a policyholder's active policy.
naftiko: "0.5"
info:
label: "Policyholder Coverage Limit Lookup"
description: "Retrieves the coverage limits for each coverage type on a policyholder's active policy."
tags:
- insurance
- policy
- coverage
capability:
exposes:
- type: mcp
namespace: sf-policies
port: 8080
tools:
- name: get-coverage-limits
description: "Given a policy ID, return coverage limits for all coverage types. Use when verifying what a policy covers."
inputParameters:
- name: policy_id
in: body
type: string
description: "The policy identifier."
call: "sf-policies.get-coverage-limits"
with:
policy_id: "{{policy_id}}"
outputParameters:
- name: coverages
type: array
mapping: "$.coverages"
- name: total_limit
type: number
mapping: "$.total_limit"
consumes:
- namespace: sf-policies
type: http
baseUri: "https://api.statefarm.com/v1/policies"
authentication:
type: bearer
token: "$secrets.sf_policies_token"
resources:
- name: coverage-limits
path: "/policies/{policy_id}/coverage-limits"
inputParameters:
- name: policy_id
in: path
operations:
- name: get-coverage-limits
method: GET
Retrieves a consolidated coverage summary for a policyholder across all active policies from Salesforce, returning policy types, coverage limits, deductibles, and total premium.
naftiko: "0.5"
info:
label: "Policyholder Coverage Summary Lookup"
description: "Retrieves a consolidated coverage summary for a policyholder across all active policies from Salesforce, returning policy types, coverage limits, deductibles, and total premium."
tags:
- insurance
- policy
- salesforce
capability:
exposes:
- type: mcp
namespace: coverage-ops
port: 8080
tools:
- name: get-coverage-summary
description: "Look up all active coverage for a policyholder by customer ID. Returns a summary of all policies with coverage limits, deductibles, and premiums. Use when agents need a holistic view of a customer's coverage."
inputParameters:
- name: customer_id
in: body
type: string
description: "The State Farm customer ID."
call: "salesforce.get-customer-policies"
with:
customer_id: "{{customer_id}}"
outputParameters:
- name: total_policies
type: integer
mapping: "$.totalSize"
- name: policies
type: array
mapping: "$.records"
- name: total_annual_premium
type: number
mapping: "$.totalAnnualPremium"
consumes:
- type: http
namespace: salesforce
baseUri: "https://statefarm.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: customer-policies
path: "/query/?q=SELECT+Id,Policy_Number__c,Product_Type__c,Coverage_Limit__c,Deductible__c,Annual_Premium__c+FROM+Policy__c+WHERE+Customer__c='{{customer_id}}'+AND+Status__c='Active'"
inputParameters:
- name: customer_id
in: path
operations:
- name: get-customer-policies
method: GET
Retrieves the deductible amounts for all coverage types on a policyholder's active policy.
naftiko: "0.5"
info:
label: "Policyholder Deductible Lookup"
description: "Retrieves the deductible amounts for all coverage types on a policyholder's active policy."
tags:
- insurance
- policy
- deductible
capability:
exposes:
- type: mcp
namespace: sf-policies
port: 8080
tools:
- name: get-deductible
description: "Given a policy ID, return deductible amounts for each coverage type. Use when a policyholder asks about their deductible."
inputParameters:
- name: policy_id
in: body
type: string
description: "The policy identifier."
call: "sf-policies.get-deductible"
with:
policy_id: "{{policy_id}}"
outputParameters:
- name: deductibles
type: array
mapping: "$.deductibles"
- name: policy_type
type: string
mapping: "$.policy_type"
consumes:
- namespace: sf-policies
type: http
baseUri: "https://api.statefarm.com/v1/policies"
authentication:
type: bearer
token: "$secrets.sf_policies_token"
resources:
- name: deductibles
path: "/policies/{policy_id}/deductibles"
inputParameters:
- name: policy_id
in: path
operations:
- name: get-deductible
method: GET
Generates a digital insurance ID card for a policyholder by retrieving policy and vehicle data from Salesforce and creating the card document via the document generation service.
naftiko: "0.5"
info:
label: "Policyholder Digital ID Card Generator"
description: "Generates a digital insurance ID card for a policyholder by retrieving policy and vehicle data from Salesforce and creating the card document via the document generation service."
tags:
- insurance
- policy
- salesforce
- document-management
capability:
exposes:
- type: mcp
namespace: id-card-ops
port: 8080
tools:
- name: generate-id-card
description: "Generate a digital insurance ID card for a policy. Retrieves policy data and creates the card. Use when a policyholder requests a new ID card."
inputParameters:
- name: policy_number
in: body
type: string
description: "The auto policy number."
steps:
- name: get-policy-data
type: call
call: "salesforce.get-policy"
with:
policy_number: "{{policy_number}}"
- name: generate-card
type: call
call: "document-api.generate-id-card"
with:
policy_number: "{{policy_number}}"
policyholder_name: "{{get-policy-data.PolicyHolder__r.Name}}"
vehicle_info: "{{get-policy-data.Vehicle_Description__c}}"
effective_date: "{{get-policy-data.Effective_Date__c}}"
expiration_date: "{{get-policy-data.Expiration_Date__c}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://statefarm.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: policies
path: "/sobjects/Policy__c/{{policy_number}}"
inputParameters:
- name: policy_number
in: path
operations:
- name: get-policy
method: GET
- type: http
namespace: document-api
baseUri: "https://api.statefarm.com/documents/v1"
authentication:
type: bearer
token: "$secrets.document_api_token"
resources:
- name: id-cards
path: "/generate/id-card"
operations:
- name: generate-id-card
method: POST
Checks a policyholder's eligibility for available premium discounts such as safe driver, multi-policy, and good student.
naftiko: "0.5"
info:
label: "Policyholder Discount Eligibility Check"
description: "Checks a policyholder's eligibility for available premium discounts such as safe driver, multi-policy, and good student."
tags:
- insurance
- policy
- discounts
capability:
exposes:
- type: mcp
namespace: sf-discounts
port: 8080
tools:
- name: check-discount-eligibility
description: "Given a policy ID, return eligible discounts and current discount percentage. Use when reviewing policyholder savings opportunities."
inputParameters:
- name: policy_id
in: body
type: string
description: "The policy identifier."
call: "sf-discounts.check-discount-eligibility"
with:
policy_id: "{{policy_id}}"
outputParameters:
- name: eligible_discounts
type: array
mapping: "$.eligible_discounts"
- name: current_discount_pct
type: number
mapping: "$.current_discount_pct"
consumes:
- namespace: sf-discounts
type: http
baseUri: "https://api.statefarm.com/v1/discounts"
authentication:
type: bearer
token: "$secrets.sf_discounts_token"
resources:
- name: eligibility
path: "/policies/{policy_id}/discount-eligibility"
inputParameters:
- name: policy_id
in: path
operations:
- name: check-discount-eligibility
method: GET
Returns the recent premium payment history for a policyholder's account.
naftiko: "0.5"
info:
label: "Policyholder Payment History Lookup"
description: "Returns the recent premium payment history for a policyholder's account."
tags:
- insurance
- policy
- payments
capability:
exposes:
- type: mcp
namespace: sf-billing
port: 8080
tools:
- name: get-payment-history
description: "Given an account ID, return recent premium payments. Use when reviewing policyholder billing history."
inputParameters:
- name: account_id
in: body
type: string
description: "The billing account ID."
call: "sf-billing.get-payment-history"
with:
account_id: "{{account_id}}"
outputParameters:
- name: payments
type: array
mapping: "$.payments"
- name: total_paid
type: number
mapping: "$.total_paid"
consumes:
- namespace: sf-billing
type: http
baseUri: "https://api.statefarm.com/v1/billing"
authentication:
type: bearer
token: "$secrets.sf_billing_token"
resources:
- name: payments
path: "/accounts/{account_id}/payments"
inputParameters:
- name: account_id
in: path
operations:
- name: get-payment-history
method: GET
Updates a policyholder's payment method in the billing system and confirms the change by sending a notification through the customer communications platform.
naftiko: "0.5"
info:
label: "Policyholder Payment Method Update"
description: "Updates a policyholder's payment method in the billing system and confirms the change by sending a notification through the customer communications platform."
tags:
- insurance
- policy
- billing
- finance
capability:
exposes:
- type: mcp
namespace: payment-ops
port: 8080
tools:
- name: update-payment-method
description: "Update the payment method for a policy. Validates new method and sends confirmation. Use when a policyholder requests a billing change."
inputParameters:
- name: policy_number
in: body
type: string
description: "The policy number."
- name: payment_method
in: body
type: string
description: "New payment method: eft, credit-card, check."
steps:
- name: update-billing
type: call
call: "billing-api.update-payment-method"
with:
policy_number: "{{policy_number}}"
method: "{{payment_method}}"
- name: send-confirmation
type: call
call: "notification-api.send-notification"
with:
policy_number: "{{policy_number}}"
template: "payment-method-updated"
method: "{{payment_method}}"
consumes:
- type: http
namespace: billing-api
baseUri: "https://api.statefarm.com/billing/v1"
authentication:
type: bearer
token: "$secrets.billing_api_token"
resources:
- name: payment-methods
path: "/policies/{{policy_number}}/payment-method"
inputParameters:
- name: policy_number
in: path
operations:
- name: update-payment-method
method: PUT
- type: http
namespace: notification-api
baseUri: "https://api.statefarm.com/notifications/v1"
authentication:
type: bearer
token: "$secrets.notification_api_token"
resources:
- name: notifications
path: "/send"
operations:
- name: send-notification
method: POST
Triggers a Power BI dataset refresh for the State Farm actuarial and loss ratio dashboard and notifies the actuarial team in Microsoft Teams when the refresh completes.
naftiko: "0.5"
info:
label: "Power BI Actuarial Dashboard Refresh"
description: "Triggers a Power BI dataset refresh for the State Farm actuarial and loss ratio dashboard and notifies the actuarial team in Microsoft Teams when the refresh completes."
tags:
- finance
- analytics
- power-bi
- microsoft-teams
- insurance
- reporting
capability:
exposes:
- type: mcp
namespace: actuarial-reporting
port: 8080
tools:
- name: refresh-actuarial-dashboard
description: "Given a Power BI workspace ID and dataset ID, trigger a dataset refresh for the State Farm actuarial dashboard and notify the actuarial team in Teams. Use at period close or before underwriting review meetings."
inputParameters:
- name: workspace_id
in: body
type: string
description: "The Power BI workspace ID containing the actuarial dataset."
- name: dataset_id
in: body
type: string
description: "The Power BI dataset ID to refresh."
steps:
- name: trigger-refresh
type: call
call: "powerbi.trigger-refresh"
with:
workspace_id: "{{workspace_id}}"
dataset_id: "{{dataset_id}}"
- name: notify-actuarial
type: call
call: "msteams-actuarial.post-message"
with:
channel_id: "$secrets.actuarial_teams_channel"
text: "Actuarial dashboard refresh triggered. Dataset: {{dataset_id}} in workspace {{workspace_id}}."
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: dataset-refreshes
path: "/groups/{{workspace_id}}/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: workspace_id
in: path
- name: dataset_id
in: path
operations:
- name: trigger-refresh
method: POST
- type: http
namespace: msteams-actuarial
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Checks the latest refresh status for a Power BI dataset used in insurance analytics.
naftiko: "0.5"
info:
label: "Power BI Report Refresh Status"
description: "Checks the latest refresh status for a Power BI dataset used in insurance analytics."
tags:
- power-bi
- analytics
- reporting
capability:
exposes:
- type: mcp
namespace: powerbi
port: 8080
tools:
- name: get-refresh-status
description: "Given a dataset ID, return the latest refresh status and completion time. Use when verifying dashboard data freshness."
inputParameters:
- name: dataset_id
in: body
type: string
description: "The Power BI dataset ID."
call: "powerbi.get-refresh-status"
with:
dataset_id: "{{dataset_id}}"
outputParameters:
- name: status
type: string
mapping: "$.value[0].status"
- name: end_time
type: string
mapping: "$.value[0].endTime"
consumes:
- namespace: powerbi
type: http
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: refreshes
path: "/datasets/{dataset_id}/refreshes"
inputParameters:
- name: dataset_id
in: path
operations:
- name: get-refresh-status
method: GET
Checks the status of a scheduled or completed property inspection for an underwriting review.
naftiko: "0.5"
info:
label: "Property Inspection Status Lookup"
description: "Checks the status of a scheduled or completed property inspection for an underwriting review."
tags:
- insurance
- property
- inspections
capability:
exposes:
- type: mcp
namespace: sf-inspections
port: 8080
tools:
- name: get-inspection-status
description: "Given an inspection ID, return the current status, inspector name, and scheduled date. Use when checking on a property inspection."
inputParameters:
- name: inspection_id
in: body
type: string
description: "The inspection identifier."
call: "sf-inspections.get-inspection-status"
with:
inspection_id: "{{inspection_id}}"
outputParameters:
- name: status
type: string
mapping: "$.status"
- name: inspector
type: string
mapping: "$.inspector_name"
- name: scheduled_date
type: string
mapping: "$.scheduled_date"
consumes:
- namespace: sf-inspections
type: http
baseUri: "https://api.statefarm.com/v1/inspections"
authentication:
type: bearer
token: "$secrets.sf_inspections_token"
resources:
- name: status
path: "/inspections/{inspection_id}/status"
inputParameters:
- name: inspection_id
in: path
operations:
- name: get-inspection-status
method: GET
Prepares and submits a rate filing to state regulators by compiling actuarial data from Snowflake, generating the filing document, and logging the submission in the compliance system.
naftiko: "0.5"
info:
label: "Regulatory Rate Filing Submission"
description: "Prepares and submits a rate filing to state regulators by compiling actuarial data from Snowflake, generating the filing document, and logging the submission in the compliance system."
tags:
- insurance
- compliance
- actuarial
- snowflake
capability:
exposes:
- type: mcp
namespace: rate-filing
port: 8080
tools:
- name: submit-rate-filing
description: "Prepare and submit a rate filing for a product and state. Compiles data, generates documents, and logs submission. Use when rate changes need regulatory approval."
inputParameters:
- name: product_type
in: body
type: string
description: "Product type: auto, homeowner, life."
- name: state_code
in: body
type: string
description: "Two-letter state code."
- name: rate_change_percentage
in: body
type: number
description: "The proposed overall rate change percentage."
steps:
- name: compile-data
type: call
call: "snowflake.run-query"
with:
query: "CALL ACTUARIAL_DB.PROCEDURES.COMPILE_RATE_FILING_DATA('{{product_type}}', '{{state_code}}')"
- name: generate-filing
type: call
call: "document-api.generate-rate-filing"
with:
product_type: "{{product_type}}"
state_code: "{{state_code}}"
rate_change: "{{rate_change_percentage}}"
- name: log-submission
type: call
call: "compliance-api.log-filing"
with:
product_type: "{{product_type}}"
state_code: "{{state_code}}"
filing_id: "{{generate-filing.filing_id}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://statefarm.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: document-api
baseUri: "https://api.statefarm.com/documents/v1"
authentication:
type: bearer
token: "$secrets.document_api_token"
resources:
- name: filings
path: "/generate/rate-filing"
operations:
- name: generate-rate-filing
method: POST
- type: http
namespace: compliance-api
baseUri: "https://api.statefarm.com/compliance/v1"
authentication:
type: bearer
token: "$secrets.compliance_api_token"
resources:
- name: filings
path: "/filings"
operations:
- name: log-filing
method: POST
Generates a reinsurance treaty compliance report by querying ceded premium and loss data from Snowflake, validating against treaty terms, and publishing the report to Confluence for review.
naftiko: "0.5"
info:
label: "Reinsurance Treaty Compliance Report"
description: "Generates a reinsurance treaty compliance report by querying ceded premium and loss data from Snowflake, validating against treaty terms, and publishing the report to Confluence for review."
tags:
- insurance
- actuarial
- compliance
- snowflake
- confluence
capability:
exposes:
- type: mcp
namespace: reinsurance-ops
port: 8080
tools:
- name: generate-treaty-compliance-report
description: "Generate a reinsurance treaty compliance report for a specified treaty and period. Queries loss and premium data, validates against terms, and publishes to Confluence. Use for quarterly treaty reviews."
inputParameters:
- name: treaty_id
in: body
type: string
description: "The reinsurance treaty identifier."
- name: reporting_period
in: body
type: string
description: "Reporting period in YYYY-Q format."
steps:
- name: query-treaty-data
type: call
call: "snowflake.run-query"
with:
query: "SELECT * FROM REINSURANCE_DB.PUBLIC.TREATY_SUMMARY WHERE treaty_id = '{{treaty_id}}' AND period = '{{reporting_period}}'"
- name: validate-compliance
type: call
call: "reinsurance-api.validate-treaty"
with:
treaty_id: "{{treaty_id}}"
ceded_premium: "{{query-treaty-data.ceded_premium}}"
ceded_losses: "{{query-treaty-data.ceded_losses}}"
- name: publish-report
type: call
call: "confluence.create-page"
with:
space_key: "REINSURANCE"
title: "Treaty {{treaty_id}} Compliance - {{reporting_period}}"
body: "Status: {{validate-compliance.status}}. Ceded premium: ${{query-treaty-data.ceded_premium}}. Ceded losses: ${{query-treaty-data.ceded_losses}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://statefarm.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: reinsurance-api
baseUri: "https://api.statefarm.com/reinsurance/v1"
authentication:
type: bearer
token: "$secrets.reinsurance_api_token"
resources:
- name: validation
path: "/treaties/validate"
operations:
- name: validate-treaty
method: POST
- type: http
namespace: confluence
baseUri: "https://statefarm.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: pages
path: "/content"
operations:
- name: create-page
method: POST
When a new business account is added to Salesforce for State Farm's commercial insurance arm, enriches the record with ZoomInfo firmographic data to support underwriting and commercial sales.
naftiko: "0.5"
info:
label: "Salesforce Account Enrichment with ZoomInfo"
description: "When a new business account is added to Salesforce for State Farm's commercial insurance arm, enriches the record with ZoomInfo firmographic data to support underwriting and commercial sales."
tags:
- sales
- crm
- salesforce
- zoominfo
- insurance
- commercial
capability:
exposes:
- type: mcp
namespace: account-enrichment
port: 8080
tools:
- name: enrich-commercial-account
description: "Given a Salesforce account ID for a commercial insurance prospect, look up the company in ZoomInfo and update the Salesforce record with employee count, industry, revenue, and SIC code. Use when new commercial accounts are added for underwriting qualification."
inputParameters:
- name: account_id
in: body
type: string
description: "The Salesforce account ID for the commercial prospect (18-character ID)."
steps:
- name: get-account
type: call
call: "salesforce-acct.get-account"
with:
account_id: "{{account_id}}"
- name: enrich-with-zoominfo
type: call
call: "zoominfo.search-company"
with:
company_name: "{{get-account.Name}}"
domain: "{{get-account.Website}}"
- name: update-account
type: call
call: "salesforce-acct-update.update-account"
with:
account_id: "{{account_id}}"
employee_count: "{{enrich-with-zoominfo.employeeCount}}"
industry: "{{enrich-with-zoominfo.industry}}"
revenue: "{{enrich-with-zoominfo.revenue}}"
consumes:
- type: http
namespace: salesforce-acct
baseUri: "https://statefarm.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{account_id}}"
inputParameters:
- name: account_id
in: path
operations:
- name: get-account
method: GET
- type: http
namespace: zoominfo
baseUri: "https://api.zoominfo.com/search"
authentication:
type: bearer
token: "$secrets.zoominfo_token"
resources:
- name: companies
path: "/company"
operations:
- name: search-company
method: POST
- type: http
namespace: salesforce-acct-update
baseUri: "https://statefarm.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{account_id}}"
inputParameters:
- name: account_id
in: path
operations:
- name: update-account
method: PATCH
Retrieves a summary of an agent's book of business from Salesforce, including total policies, premium volume, retention rate, and product mix breakdown.
naftiko: "0.5"
info:
label: "Salesforce Agent Book of Business Lookup"
description: "Retrieves a summary of an agent's book of business from Salesforce, including total policies, premium volume, retention rate, and product mix breakdown."
tags:
- insurance
- agent
- salesforce
- sales
capability:
exposes:
- type: mcp
namespace: book-ops
port: 8080
tools:
- name: get-book-of-business
description: "Look up an agent's book of business summary from Salesforce. Returns policy count, premium volume, and retention metrics. Use for agent performance reviews."
inputParameters:
- name: agent_id
in: body
type: string
description: "The State Farm agent identifier."
call: "salesforce.get-agent-book"
with:
agent_id: "{{agent_id}}"
outputParameters:
- name: total_policies
type: integer
mapping: "$.totalPolicies"
- name: total_premium
type: number
mapping: "$.totalPremium"
- name: retention_rate
type: number
mapping: "$.retentionRate"
- name: product_mix
type: object
mapping: "$.productMix"
consumes:
- type: http
namespace: salesforce
baseUri: "https://statefarm.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: agent-book
path: "/query/?q=SELECT+Product_Type__c,COUNT(Id),SUM(Annual_Premium__c)+FROM+Policy__c+WHERE+Agent__c='{{agent_id}}'+AND+Status__c='Active'+GROUP+BY+Product_Type__c"
inputParameters:
- name: agent_id
in: path
operations:
- name: get-agent-book
method: GET
Returns the current lead count and pipeline value for a State Farm agent from Salesforce.
naftiko: "0.5"
info:
label: "Salesforce Agent Lead Count Lookup"
description: "Returns the current lead count and pipeline value for a State Farm agent from Salesforce."
tags:
- salesforce
- agent
- sales
capability:
exposes:
- type: mcp
namespace: salesforce
port: 8080
tools:
- name: get-agent-leads
description: "Given an agent's Salesforce ID, return their lead count. Use when reviewing agent pipeline performance."
inputParameters:
- name: agent_sf_id
in: body
type: string
description: "The agent's Salesforce user ID."
call: "salesforce.get-agent-leads"
with:
agent_sf_id: "{{agent_sf_id}}"
outputParameters:
- name: lead_count
type: number
mapping: "$.totalSize"
- name: records
type: array
mapping: "$.records"
consumes:
- namespace: salesforce
type: http
baseUri: "https://statefarm.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: query
path: "/query"
operations:
- name: get-agent-leads
method: GET
Retrieves weekly sales and policy metrics for State Farm exclusive agents from Salesforce and posts a performance summary digest to the regional sales manager's Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Salesforce Agent Performance Dashboard Summary"
description: "Retrieves weekly sales and policy metrics for State Farm exclusive agents from Salesforce and posts a performance summary digest to the regional sales manager's Microsoft Teams channel."
tags:
- sales
- crm
- salesforce
- reporting
- microsoft-teams
- insurance
capability:
exposes:
- type: mcp
namespace: agent-performance
port: 8080
tools:
- name: digest-agent-performance
description: "Given a Salesforce agent ID and reporting week, retrieve new policies written, renewal rates, and open opportunity counts. Post a performance digest to the regional manager's Teams channel. Use for weekly agent performance reviews."
inputParameters:
- name: agent_id
in: body
type: string
description: "The Salesforce user ID for the State Farm exclusive agent."
- name: reporting_week
in: body
type: string
description: "The reporting week start date in ISO 8601 format."
steps:
- name: get-agent-metrics
type: call
call: "salesforce-perf.get-agent-metrics"
with:
agent_id: "{{agent_id}}"
reporting_week: "{{reporting_week}}"
- name: get-agent-profile
type: call
call: "salesforce-profile.get-user"
with:
user_id: "{{agent_id}}"
- name: post-performance-digest
type: call
call: "msteams-regional.post-message"
with:
channel_id: "$secrets.regional_manager_teams_channel"
text: "Agent performance week of {{reporting_week}} | Agent: {{get-agent-profile.Name}} | New Policies: {{get-agent-metrics.newPolicies}} | Open Opps: {{get-agent-metrics.openOpportunities}}"
consumes:
- type: http
namespace: salesforce-perf
baseUri: "https://statefarm.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: agent-metrics
path: "/query"
inputParameters:
- name: agent_id
in: query
- name: reporting_week
in: query
operations:
- name: get-agent-metrics
method: GET
- type: http
namespace: salesforce-profile
baseUri: "https://statefarm.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: users
path: "/sobjects/User/{{user_id}}"
inputParameters:
- name: user_id
in: path
operations:
- name: get-user
method: GET
- type: http
namespace: msteams-regional
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Tracks open insurance sales opportunities in Salesforce for the State Farm exclusive agent network, providing pipeline summaries by agent and region to sales leadership.
naftiko: "0.5"
info:
label: "Salesforce Agent Pipeline Opportunity Tracker"
description: "Tracks open insurance sales opportunities in Salesforce for the State Farm exclusive agent network, providing pipeline summaries by agent and region to sales leadership."
tags:
- sales
- crm
- salesforce
- reporting
- insurance
capability:
exposes:
- type: mcp
namespace: agent-pipeline
port: 8080
tools:
- name: get-agent-pipeline
description: "Given a Salesforce agent ID, retrieve all open opportunities in the agent's pipeline including product type, policy stage, and expected close date. Use for agent performance reviews and pipeline reporting."
inputParameters:
- name: agent_id
in: body
type: string
description: "The Salesforce user ID for the State Farm exclusive agent."
call: "salesforce.query-opportunities"
with:
agent_id: "{{agent_id}}"
outputParameters:
- name: total_opportunities
type: number
mapping: "$.totalSize"
- name: opportunities
type: array
mapping: "$.records"
consumes:
- type: http
namespace: salesforce
baseUri: "https://statefarm.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: opportunities
path: "/query"
inputParameters:
- name: agent_id
in: query
operations:
- name: query-opportunities
method: GET
Analyzes a customer's existing coverage in Salesforce, identifies cross-sell opportunities for missing product lines, and creates opportunities for the servicing agent to pursue.
naftiko: "0.5"
info:
label: "Salesforce Cross-Sell Opportunity Creator"
description: "Analyzes a customer's existing coverage in Salesforce, identifies cross-sell opportunities for missing product lines, and creates opportunities for the servicing agent to pursue."
tags:
- insurance
- policy
- salesforce
- sales
capability:
exposes:
- type: mcp
namespace: cross-sell
port: 8080
tools:
- name: identify-cross-sell
description: "Analyze a customer's coverage and create cross-sell opportunities. Checks existing policies and identifies gaps. Use during customer reviews or renewal conversations."
inputParameters:
- name: customer_id
in: body
type: string
description: "The Salesforce customer ID."
steps:
- name: get-existing-policies
type: call
call: "salesforce.get-customer-policies"
with:
customer_id: "{{customer_id}}"
- name: analyze-gaps
type: call
call: "analytics-api.identify-coverage-gaps"
with:
customer_id: "{{customer_id}}"
existing_products: "{{get-existing-policies.product_types}}"
- name: create-opportunity
type: call
call: "salesforce.create-opportunity"
with:
customer_id: "{{customer_id}}"
opportunity_name: "Cross-sell: {{analyze-gaps.recommended_product}}"
product_type: "{{analyze-gaps.recommended_product}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://statefarm.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: policies
path: "/query"
operations:
- name: get-customer-policies
method: GET
- name: opportunities
path: "/sobjects/Opportunity"
operations:
- name: create-opportunity
method: POST
- type: http
namespace: analytics-api
baseUri: "https://api.statefarm.com/analytics/v1"
authentication:
type: bearer
token: "$secrets.analytics_api_token"
resources:
- name: coverage-gaps
path: "/coverage-gaps"
operations:
- name: identify-coverage-gaps
method: POST
After a claim is closed in ServiceNow, looks up the policyholder in Salesforce and triggers an NPS satisfaction survey via Marketo email, then logs the survey sent event back to Salesforce.
naftiko: "0.5"
info:
label: "Salesforce Customer NPS Survey Trigger"
description: "After a claim is closed in ServiceNow, looks up the policyholder in Salesforce and triggers an NPS satisfaction survey via Marketo email, then logs the survey sent event back to Salesforce."
tags:
- customer-experience
- crm
- salesforce
- marketo
- servicenow
- insurance
capability:
exposes:
- type: mcp
namespace: nps-ops
port: 8080
tools:
- name: trigger-claim-nps-survey
description: "Given a closed ServiceNow claim case number, look up the policyholder in Salesforce and trigger an NPS satisfaction email via Marketo. Log the outreach back to the Salesforce customer record. Use 24 hours after a claim is resolved."
inputParameters:
- name: case_number
in: body
type: string
description: "The ServiceNow case number for the closed claim."
- name: marketo_program_id
in: body
type: string
description: "The Marketo program ID for the NPS survey campaign."
steps:
- name: get-case
type: call
call: "servicenow-nps.get-case"
with:
number: "{{case_number}}"
- name: get-policyholder
type: call
call: "salesforce-nps.get-contact"
with:
policy_number: "{{get-case.policy_number}}"
- name: trigger-marketo-email
type: call
call: "marketo.trigger-campaign"
with:
program_id: "{{marketo_program_id}}"
email: "{{get-policyholder.Email}}"
first_name: "{{get-policyholder.FirstName}}"
claim_number: "{{case_number}}"
- name: log-outreach
type: call
call: "salesforce-nps-log.create-task"
with:
who_id: "{{get-policyholder.Id}}"
subject: "NPS survey sent for claim {{case_number}}"
status: "Completed"
consumes:
- type: http
namespace: servicenow-nps
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: cases
path: "/table/sn_customerservice_case"
inputParameters:
- name: number
in: query
operations:
- name: get-case
method: GET
- type: http
namespace: salesforce-nps
baseUri: "https://statefarm.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: contacts
path: "/query"
inputParameters:
- name: policy_number
in: query
operations:
- name: get-contact
method: GET
- type: http
namespace: marketo
baseUri: "https://statefarm.mktorest.com/rest/v1"
authentication:
type: bearer
token: "$secrets.marketo_token"
resources:
- name: campaigns
path: "/campaigns/{{program_id}}/trigger.json"
inputParameters:
- name: program_id
in: path
operations:
- name: trigger-campaign
method: POST
- type: http
namespace: salesforce-nps-log
baseUri: "https://statefarm.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: tasks
path: "/sobjects/Task"
operations:
- name: create-task
method: POST
Queries Salesforce for policies with upcoming renewal dates within the next 30 days, and sends renewal reminder alerts to the assigned agent's Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Salesforce Customer Policy Renewal Alert"
description: "Queries Salesforce for policies with upcoming renewal dates within the next 30 days, and sends renewal reminder alerts to the assigned agent's Microsoft Teams channel."
tags:
- insurance
- crm
- salesforce
- microsoft-teams
- renewal
capability:
exposes:
- type: mcp
namespace: policy-renewals
port: 8080
tools:
- name: alert-upcoming-renewals
description: "Given a Salesforce region or agent ID, retrieve policies expiring within the next 30 days and post renewal alerts to the agent's Teams channel. Use for daily or weekly renewal pipeline management."
inputParameters:
- name: agent_id
in: body
type: string
description: "The Salesforce user ID for the agent to check renewals for."
- name: days_ahead
in: body
type: integer
description: "Number of days ahead to look for expiring policies (e.g., 30)."
steps:
- name: get-expiring-policies
type: call
call: "salesforce-renewal.query-expiring"
with:
agent_id: "{{agent_id}}"
days_ahead: "{{days_ahead}}"
- name: post-renewal-alert
type: call
call: "msteams-renewal.post-message"
with:
channel_id: "$secrets.agent_teams_channel"
text: "Renewal alert: {{get-expiring-policies.totalSize}} policies expiring in {{days_ahead}} days. Agent ID: {{agent_id}}"
consumes:
- type: http
namespace: salesforce-renewal
baseUri: "https://statefarm.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: policies
path: "/query"
inputParameters:
- name: agent_id
in: query
- name: days_ahead
in: query
operations:
- name: query-expiring
method: GET
- type: http
namespace: msteams-renewal
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Reconciles vendor invoices in SAP against purchase orders, identifies discrepancies, and creates ServiceNow tickets for the accounts payable team to resolve mismatches.
naftiko: "0.5"
info:
label: "SAP Invoice Reconciliation Workflow"
description: "Reconciles vendor invoices in SAP against purchase orders, identifies discrepancies, and creates ServiceNow tickets for the accounts payable team to resolve mismatches."
tags:
- finance
- sap
- servicenow
- procurement
capability:
exposes:
- type: mcp
namespace: invoice-ops
port: 8080
tools:
- name: reconcile-invoices
description: "Reconcile vendor invoices against purchase orders in SAP. Identifies mismatches and creates tickets. Use during monthly AP close."
inputParameters:
- name: vendor_id
in: body
type: string
description: "The SAP vendor identifier."
- name: period
in: body
type: string
description: "Billing period in YYYY-MM format."
steps:
- name: get-invoices
type: call
call: "sap.get-vendor-invoices"
with:
vendor_id: "{{vendor_id}}"
period: "{{period}}"
- name: get-purchase-orders
type: call
call: "sap.get-vendor-pos"
with:
vendor_id: "{{vendor_id}}"
period: "{{period}}"
- name: create-discrepancy-ticket
type: call
call: "servicenow.create-case"
with:
short_description: "Invoice reconciliation: Vendor {{vendor_id}} - {{period}}"
description: "Invoices: {{get-invoices.count}}. POs: {{get-purchase-orders.count}}. Review required."
consumes:
- type: http
namespace: sap
baseUri: "https://statefarm-sap.s4hana.cloud.sap/api/v1"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: invoices
path: "/invoices"
operations:
- name: get-vendor-invoices
method: GET
- name: purchase-orders
path: "/purchase-orders"
operations:
- name: get-vendor-pos
method: GET
- type: http
namespace: servicenow
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: cases
path: "/table/sn_customerservice_case"
operations:
- name: create-case
method: POST
Retrieves the current status and assigned team for a ServiceNow IT incident at State Farm.
naftiko: "0.5"
info:
label: "ServiceNow Incident Status Check"
description: "Retrieves the current status and assigned team for a ServiceNow IT incident at State Farm."
tags:
- servicenow
- it
- incident-management
capability:
exposes:
- type: mcp
namespace: servicenow
port: 8080
tools:
- name: get-incident-status
description: "Given an incident ID, return its state, assignee, and priority. Use when checking on IT incidents."
inputParameters:
- name: incident_id
in: body
type: string
description: "The ServiceNow incident ID."
call: "servicenow.get-incident-status"
with:
incident_id: "{{incident_id}}"
outputParameters:
- name: state
type: string
mapping: "$.state"
- name: assigned_to
type: string
mapping: "$.assigned_to.display_value"
- name: priority
type: string
mapping: "$.priority"
consumes:
- namespace: servicenow
type: http
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident/{incident_id}"
inputParameters:
- name: incident_id
in: path
operations:
- name: get-incident-status
method: GET
Creates a ServiceNow change request for planned changes to State Farm's policy administration or claims processing systems and notifies the CAB in Microsoft Teams.
naftiko: "0.5"
info:
label: "ServiceNow IT Change Request for Insurance Systems"
description: "Creates a ServiceNow change request for planned changes to State Farm's policy administration or claims processing systems and notifies the CAB in Microsoft Teams."
tags:
- itsm
- change-management
- servicenow
- microsoft-teams
- insurance
capability:
exposes:
- type: mcp
namespace: change-mgmt
port: 8080
tools:
- name: create-insurance-change-request
description: "Given a change summary, affected insurance system, risk level, and assignment group, create a ServiceNow change request and notify the Change Advisory Board in Teams. Use for planned changes to claims, policy, or agent systems."
inputParameters:
- name: short_description
in: body
type: string
description: "Brief description of the planned change."
- name: affected_system
in: body
type: string
description: "The insurance system affected (e.g., claims-processing, policy-admin, agent-portal)."
- name: risk
in: body
type: string
description: "Risk level: low, medium, or high."
- name: assignment_group
in: body
type: string
description: "The ServiceNow group responsible for the change."
steps:
- name: create-cr
type: call
call: "servicenow-cr.create-change"
with:
short_description: "{{short_description}} ({{affected_system}})"
risk: "{{risk}}"
assignment_group: "{{assignment_group}}"
- name: notify-cab
type: call
call: "msteams-cab.post-message"
with:
channel_id: "$secrets.cab_teams_channel"
text: "Change request {{create-cr.number}} submitted for {{affected_system}}. Risk: {{risk}}. {{short_description}}"
consumes:
- type: http
namespace: servicenow-cr
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: change-requests
path: "/table/change_request"
operations:
- name: create-change
method: POST
- type: http
namespace: msteams-cab
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Searches the ServiceNow knowledge base for articles matching a query, returning relevant articles for claims adjusters and customer service representatives.
naftiko: "0.5"
info:
label: "ServiceNow Knowledge Article Search"
description: "Searches the ServiceNow knowledge base for articles matching a query, returning relevant articles for claims adjusters and customer service representatives."
tags:
- insurance
- servicenow
- knowledge-management
capability:
exposes:
- type: mcp
namespace: kb-ops
port: 8080
tools:
- name: search-knowledge-base
description: "Search ServiceNow knowledge base for relevant articles. Returns matching articles with titles and summaries. Use when agents need procedural guidance."
inputParameters:
- name: query
in: body
type: string
description: "Search query text."
- name: category
in: body
type: string
description: "Article category: claims, policy, billing, underwriting."
call: "servicenow.search-articles"
with:
query: "{{query}}"
category: "{{category}}"
outputParameters:
- name: articles
type: array
mapping: "$.result"
- name: total_results
type: integer
mapping: "$.totalResults"
consumes:
- type: http
namespace: servicenow
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: knowledge
path: "/table/kb_knowledge"
operations:
- name: search-articles
method: GET
When a critical P1 ServiceNow incident is raised for State Farm's core insurance systems, triggers a PagerDuty alert for the on-call engineer and posts an alert to the IT operations Microsoft Teams channel.
naftiko: "0.5"
info:
label: "ServiceNow P1 Incident to PagerDuty Escalation"
description: "When a critical P1 ServiceNow incident is raised for State Farm's core insurance systems, triggers a PagerDuty alert for the on-call engineer and posts an alert to the IT operations Microsoft Teams channel."
tags:
- itsm
- incident-response
- servicenow
- pagerduty
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: incident-response
port: 8080
tools:
- name: escalate-p1-incident
description: "Given a ServiceNow P1 incident number and affected system, trigger a PagerDuty alert for the on-call team and notify the IT ops channel in Teams. Use when critical insurance processing systems are impacted."
inputParameters:
- name: incident_number
in: body
type: string
description: "The ServiceNow incident number (e.g., INC0012345)."
- name: affected_system
in: body
type: string
description: "The core system affected (e.g., claims-processing, policy-admin, agent-portal)."
steps:
- name: get-incident
type: call
call: "servicenow-p1.get-incident"
with:
number: "{{incident_number}}"
- name: trigger-pagerduty
type: call
call: "pagerduty.trigger-incident"
with:
service_id: "$secrets.pagerduty_service_id"
summary: "P1 Incident {{incident_number}}: {{affected_system}} impacted"
severity: "critical"
- name: notify-ops
type: call
call: "msteams-ops.post-message"
with:
channel_id: "$secrets.it_ops_teams_channel"
text: "P1 Incident {{incident_number}} | System: {{affected_system}} | PagerDuty triggered | Desc: {{get-incident.short_description}}"
consumes:
- type: http
namespace: servicenow-p1
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
inputParameters:
- name: number
in: query
operations:
- name: get-incident
method: GET
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.pagerduty_api_key"
placement: header
resources:
- name: incidents
path: "/incidents"
operations:
- name: trigger-incident
method: POST
- type: http
namespace: msteams-ops
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Runs data quality checks on claims data in Snowflake, identifies anomalies and missing fields, and creates Jira tickets for the data engineering team when quality thresholds are breached.
naftiko: "0.5"
info:
label: "Snowflake Claims Data Quality Monitor"
description: "Runs data quality checks on claims data in Snowflake, identifies anomalies and missing fields, and creates Jira tickets for the data engineering team when quality thresholds are breached."
tags:
- insurance
- claims
- data
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: data-quality
port: 8080
tools:
- name: check-claims-data-quality
description: "Run data quality checks on claims data for a given date range. Creates Jira tickets for identified issues. Use for daily data quality monitoring."
inputParameters:
- name: check_date
in: body
type: string
description: "The date to check data quality for in ISO 8601 format."
steps:
- name: run-quality-checks
type: call
call: "snowflake.run-query"
with:
query: "CALL CLAIMS_DB.PROCEDURES.RUN_DATA_QUALITY_CHECKS('{{check_date}}')"
- name: create-ticket
type: call
call: "jira.create-issue"
with:
project_key: "DATA"
issuetype: "Bug"
summary: "Claims data quality issues detected for {{check_date}}"
description: "Quality check results: {{run-quality-checks.summary}}. Failed checks: {{run-quality-checks.failed_count}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://statefarm.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: jira
baseUri: "https://statefarm.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Retrieves the calculated customer lifetime value score from the Snowflake analytics warehouse for a given customer, including retention probability and revenue projection.
naftiko: "0.5"
info:
label: "Snowflake Customer Lifetime Value Lookup"
description: "Retrieves the calculated customer lifetime value score from the Snowflake analytics warehouse for a given customer, including retention probability and revenue projection."
tags:
- insurance
- analytics
- snowflake
capability:
exposes:
- type: mcp
namespace: clv-ops
port: 8080
tools:
- name: get-customer-ltv
description: "Look up customer lifetime value from Snowflake analytics. Returns CLV score, retention probability, and projected revenue. Use for retention and cross-sell prioritization."
inputParameters:
- name: customer_id
in: body
type: string
description: "The State Farm customer ID."
call: "snowflake.query-clv"
with:
customer_id: "{{customer_id}}"
outputParameters:
- name: ltv_score
type: number
mapping: "$.ltvScore"
- name: retention_probability
type: number
mapping: "$.retentionProbability"
- name: projected_annual_revenue
type: number
mapping: "$.projectedAnnualRevenue"
consumes:
- type: http
namespace: snowflake
baseUri: "https://statefarm.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: queries
path: "/statements"
operations:
- name: query-clv
method: POST
Monitors Snowflake pipeline jobs for State Farm's actuarial and underwriting analytics, detects failures, and opens Jira tickets for the data engineering team.
naftiko: "0.5"
info:
label: "Snowflake Insurance Analytics Pipeline Health Check"
description: "Monitors Snowflake pipeline jobs for State Farm's actuarial and underwriting analytics, detects failures, and opens Jira tickets for the data engineering team."
tags:
- data
- analytics
- snowflake
- jira
- monitoring
- insurance
capability:
exposes:
- type: mcp
namespace: analytics-ops
port: 8080
tools:
- name: check-analytics-pipeline-health
description: "Check Snowflake task history for failed analytics pipeline tasks in the specified database over the last N hours. Create a Jira ticket if critical failures are detected. Use for monitoring actuarial and underwriting data pipelines."
inputParameters:
- name: database
in: body
type: string
description: "The Snowflake database to check (e.g., SF_ACTUARIAL_ANALYTICS)."
- name: lookback_hours
in: body
type: integer
description: "Number of hours to look back for task failures."
steps:
- name: get-task-failures
type: call
call: "snowflake.get-task-history"
with:
database: "{{database}}"
lookback_hours: "{{lookback_hours}}"
- name: create-ticket
type: call
call: "jira-data.create-issue"
with:
project_key: "DATA"
issuetype: "Bug"
summary: "Analytics pipeline failure in {{database}}"
description: "Snowflake task failures detected over last {{lookback_hours}} hours in {{database}}."
consumes:
- type: http
namespace: snowflake
baseUri: "https://statefarm.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: task-history
path: "/databases/{{database}}/schemas/INFORMATION_SCHEMA/task-history"
inputParameters:
- name: database
in: path
operations:
- name: get-task-history
method: GET
- type: http
namespace: jira-data
baseUri: "https://statefarm.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Generates an underwriting profitability report from Snowflake data by product line and state, calculating combined ratios and publishing results to Power BI.
naftiko: "0.5"
info:
label: "Snowflake Underwriting Profitability Report"
description: "Generates an underwriting profitability report from Snowflake data by product line and state, calculating combined ratios and publishing results to Power BI."
tags:
- insurance
- underwriting
- actuarial
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: uw-profitability
port: 8080
tools:
- name: generate-profitability-report
description: "Generate underwriting profitability report for a product line and period. Queries Snowflake and refreshes Power BI. Use for quarterly business reviews."
inputParameters:
- name: product_line
in: body
type: string
description: "Product line: personal-auto, homeowner, commercial."
- name: reporting_period
in: body
type: string
description: "Period in YYYY-Q format."
steps:
- name: query-profitability
type: call
call: "snowflake.run-query"
with:
query: "SELECT state, earned_premium, incurred_losses, expenses, combined_ratio FROM UNDERWRITING_DB.PUBLIC.PROFITABILITY WHERE product_line = '{{product_line}}' AND period = '{{reporting_period}}'"
- name: refresh-dashboard
type: call
call: "powerbi.refresh-dataset"
with:
group_id: "$secrets.powerbi_uw_group"
dataset_id: "$secrets.powerbi_profitability_dataset"
consumes:
- type: http
namespace: snowflake
baseUri: "https://statefarm.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/groups/{{group_id}}/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: group_id
in: path
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
Queries Splunk for recent security events matching a specific source or host pattern.
naftiko: "0.5"
info:
label: "Splunk Security Event Lookup"
description: "Queries Splunk for recent security events matching a specific source or host pattern."
tags:
- splunk
- security
- monitoring
capability:
exposes:
- type: mcp
namespace: splunk
port: 8080
tools:
- name: search-events
description: "Given a search query, return matching security events from Splunk. Use when investigating security incidents."
inputParameters:
- name: search_query
in: body
type: string
description: "The Splunk search query."
call: "splunk.search-events"
with:
search_query: "{{search_query}}"
outputParameters:
- name: events
type: array
mapping: "$.results"
- name: count
type: number
mapping: "$.results.length"
consumes:
- namespace: splunk
type: http
baseUri: "https://statefarm-splunk.com:8089/services"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: search
path: "/search/jobs"
operations:
- name: search-events
method: POST
Retrieves a policyholder's telematics driving score from the Drive Safe & Save program, returning overall score, mileage, braking events, and discount eligibility.
naftiko: "0.5"
info:
label: "Telematics Driving Score Lookup"
description: "Retrieves a policyholder's telematics driving score from the Drive Safe & Save program, returning overall score, mileage, braking events, and discount eligibility."
tags:
- insurance
- auto
- telematics
capability:
exposes:
- type: mcp
namespace: telematics-ops
port: 8080
tools:
- name: get-driving-score
description: "Look up the telematics driving score for a policyholder. Returns overall score, mileage driven, hard braking count, and discount percentage. Use when agents discuss Drive Safe & Save discounts."
inputParameters:
- name: policy_number
in: body
type: string
description: "The auto policy number enrolled in telematics."
call: "telematics-api.get-score"
with:
policy_number: "{{policy_number}}"
outputParameters:
- name: overall_score
type: number
mapping: "$.overallScore"
- name: miles_driven
type: number
mapping: "$.milesDriven"
- name: hard_braking_events
type: integer
mapping: "$.hardBrakingEvents"
- name: discount_percentage
type: number
mapping: "$.discountPercentage"
consumes:
- type: http
namespace: telematics-api
baseUri: "https://api.statefarm.com/telematics/v1"
authentication:
type: bearer
token: "$secrets.telematics_api_token"
resources:
- name: scores
path: "/policies/{{policy_number}}/score"
inputParameters:
- name: policy_number
in: path
operations:
- name: get-score
method: GET
Provisions cloud infrastructure for claims processing workloads via Terraform Cloud, validates the plan, and notifies the platform team via Microsoft Teams when provisioning completes.
naftiko: "0.5"
info:
label: "Terraform Claims Infrastructure Provisioning"
description: "Provisions cloud infrastructure for claims processing workloads via Terraform Cloud, validates the plan, and notifies the platform team via Microsoft Teams when provisioning completes."
tags:
- engineering
- terraform
- microsoft-azure
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: infra-ops
port: 8080
tools:
- name: provision-claims-infra
description: "Provision claims infrastructure via Terraform Cloud. Creates a run, monitors progress, and notifies the team. Use for new environment provisioning."
inputParameters:
- name: workspace_name
in: body
type: string
description: "The Terraform Cloud workspace name."
- name: environment
in: body
type: string
description: "Target environment: dev, staging, production."
steps:
- name: create-run
type: call
call: "terraform.create-run"
with:
workspace_name: "{{workspace_name}}"
message: "Claims infra provisioning for {{environment}}"
- name: notify-platform
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.platform_teams_channel"
text: "Terraform run created for {{workspace_name}} ({{environment}}). Run ID: {{create-run.run_id}}. Status: {{create-run.status}}"
consumes:
- type: http
namespace: terraform
baseUri: "https://app.terraform.io/api/v2"
authentication:
type: bearer
token: "$secrets.terraform_token"
resources:
- name: runs
path: "/runs"
operations:
- name: create-run
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Conducts a vendor risk assessment by pulling vendor data from SAP Ariba, running security scoring, and creating a risk assessment record in ServiceNow with findings.
naftiko: "0.5"
info:
label: "Third-Party Vendor Risk Assessment"
description: "Conducts a vendor risk assessment by pulling vendor data from SAP Ariba, running security scoring, and creating a risk assessment record in ServiceNow with findings."
tags:
- insurance
- compliance
- sap-ariba
- servicenow
capability:
exposes:
- type: mcp
namespace: vendor-risk
port: 8080
tools:
- name: assess-vendor-risk
description: "Run a risk assessment for a third-party vendor. Pulls vendor profile, scores risk, and creates an assessment record. Use during vendor onboarding or annual review."
inputParameters:
- name: vendor_id
in: body
type: string
description: "The SAP Ariba vendor identifier."
- name: assessment_type
in: body
type: string
description: "Type: initial, annual, or triggered."
steps:
- name: get-vendor-profile
type: call
call: "sap-ariba.get-vendor"
with:
vendor_id: "{{vendor_id}}"
- name: score-risk
type: call
call: "risk-scoring-api.score-vendor"
with:
vendor_name: "{{get-vendor-profile.name}}"
vendor_category: "{{get-vendor-profile.category}}"
assessment_type: "{{assessment_type}}"
- name: create-assessment
type: call
call: "servicenow.create-record"
with:
table: "u_vendor_risk_assessment"
vendor_id: "{{vendor_id}}"
risk_score: "{{score-risk.overall_score}}"
risk_level: "{{score-risk.risk_level}}"
consumes:
- type: http
namespace: sap-ariba
baseUri: "https://openapi.ariba.com/api/supplier-management/v1"
authentication:
type: bearer
token: "$secrets.sap_ariba_token"
resources:
- name: vendors
path: "/suppliers/{{vendor_id}}"
inputParameters:
- name: vendor_id
in: path
operations:
- name: get-vendor
method: GET
- type: http
namespace: risk-scoring-api
baseUri: "https://api.statefarm.com/risk/v1"
authentication:
type: bearer
token: "$secrets.risk_scoring_token"
resources:
- name: vendor-scoring
path: "/vendors/score"
operations:
- name: score-vendor
method: POST
- type: http
namespace: servicenow
baseUri: "https://statefarm.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: records
path: "/table/{{table}}"
inputParameters:
- name: table
in: path
operations:
- name: create-record
method: POST
Checks the current underwriting appetite for a specific product, state, and risk class, returning whether new business is being accepted and any restrictions in place.
naftiko: "0.5"
info:
label: "Underwriting Appetite Check Lookup"
description: "Checks the current underwriting appetite for a specific product, state, and risk class, returning whether new business is being accepted and any restrictions in place."
tags:
- insurance
- underwriting
- compliance
capability:
exposes:
- type: mcp
namespace: appetite-ops
port: 8080
tools:
- name: check-underwriting-appetite
description: "Check if a product, state, and risk class combination is within current underwriting appetite. Returns acceptance status and any restrictions. Use before quoting new business."
inputParameters:
- name: product_type
in: body
type: string
description: "Product type: auto, homeowner, life, umbrella."
- name: state_code
in: body
type: string
description: "Two-letter state code."
- name: risk_class
in: body
type: string
description: "Risk classification: preferred, standard, substandard."
call: "underwriting-api.check-appetite"
with:
product_type: "{{product_type}}"
state_code: "{{state_code}}"
risk_class: "{{risk_class}}"
outputParameters:
- name: is_accepting
type: boolean
mapping: "$.isAccepting"
- name: restrictions
type: array
mapping: "$.restrictions"
- name: effective_date
type: string
mapping: "$.effectiveDate"
consumes:
- type: http
namespace: underwriting-api
baseUri: "https://api.statefarm.com/underwriting/v2"
authentication:
type: bearer
token: "$secrets.underwriting_api_token"
resources:
- name: appetite
path: "/appetite"
operations:
- name: check-appetite
method: GET
Validates a policy application against current underwriting guidelines stored in Confluence, logs the compliance result, and flags exceptions for senior underwriter review in Jira.
naftiko: "0.5"
info:
label: "Underwriting Guideline Compliance Check"
description: "Validates a policy application against current underwriting guidelines stored in Confluence, logs the compliance result, and flags exceptions for senior underwriter review in Jira."
tags:
- insurance
- underwriting
- compliance
- confluence
- jira
capability:
exposes:
- type: mcp
namespace: uw-compliance
port: 8080
tools:
- name: check-uw-guidelines
description: "Validate a policy application against underwriting guidelines. Retrieves current guidelines, checks compliance, and creates a Jira ticket for any exceptions. Use during application review."
inputParameters:
- name: application_id
in: body
type: string
description: "The policy application ID to validate."
- name: product_type
in: body
type: string
description: "Product type being underwritten."
steps:
- name: get-guidelines
type: call
call: "confluence.get-page"
with:
space_key: "UNDERWRITING"
title: "Guidelines - {{product_type}}"
- name: run-compliance-check
type: call
call: "underwriting-engine.check-compliance"
with:
application_id: "{{application_id}}"
guidelines_version: "{{get-guidelines.version}}"
- name: create-exception-ticket
type: call
call: "jira.create-issue"
with:
project_key: "UW"
issuetype: "Task"
summary: "UW exception review: Application {{application_id}}"
description: "Application {{application_id}} requires senior review. Exceptions: {{run-compliance-check.exceptions}}"
consumes:
- type: http
namespace: confluence
baseUri: "https://statefarm.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: pages
path: "/content"
operations:
- name: get-page
method: GET
- type: http
namespace: underwriting-engine
baseUri: "https://api.statefarm.com/underwriting/v2"
authentication:
type: bearer
token: "$secrets.underwriting_api_token"
resources:
- name: compliance
path: "/compliance-check"
operations:
- name: check-compliance
method: POST
- type: http
namespace: jira
baseUri: "https://statefarm.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Runs a property hazard assessment for homeowner underwriting by checking flood zones, wildfire risk, and crime data for the property location, then logging results in the underwriting system.
naftiko: "0.5"
info:
label: "Underwriting Property Hazard Check"
description: "Runs a property hazard assessment for homeowner underwriting by checking flood zones, wildfire risk, and crime data for the property location, then logging results in the underwriting system."
tags:
- insurance
- underwriting
- homeowner
capability:
exposes:
- type: mcp
namespace: hazard-ops
port: 8080
tools:
- name: check-property-hazards
description: "Assess property hazards for underwriting. Checks flood, wildfire, and crime risk. Logs results for the underwriter. Use during homeowner application review."
inputParameters:
- name: application_id
in: body
type: string
description: "The policy application ID."
- name: address
in: body
type: string
description: "Full property address."
- name: zip_code
in: body
type: string
description: "Property ZIP code."
steps:
- name: check-flood-zone
type: call
call: "hazard-api.check-flood"
with:
address: "{{address}}"
zip_code: "{{zip_code}}"
- name: check-wildfire-risk
type: call
call: "hazard-api.check-wildfire"
with:
zip_code: "{{zip_code}}"
- name: log-results
type: call
call: "underwriting-engine.log-hazard-assessment"
with:
application_id: "{{application_id}}"
flood_zone: "{{check-flood-zone.zone}}"
wildfire_score: "{{check-wildfire-risk.risk_score}}"
consumes:
- type: http
namespace: hazard-api
baseUri: "https://api.statefarm.com/hazards/v1"
authentication:
type: bearer
token: "$secrets.hazard_api_token"
resources:
- name: flood
path: "/flood-zones"
operations:
- name: check-flood
method: GET
- name: wildfire
path: "/wildfire-risk"
operations:
- name: check-wildfire
method: GET
- type: http
namespace: underwriting-engine
baseUri: "https://api.statefarm.com/underwriting/v2"
authentication:
type: bearer
token: "$secrets.underwriting_api_token"
resources:
- name: hazards
path: "/hazard-assessments"
operations:
- name: log-hazard-assessment
method: POST
Retrieves the underwriting risk assessment score for a policy application from the risk scoring API, returning overall risk grade, component scores, and recommended action.
naftiko: "0.5"
info:
label: "Underwriting Risk Score Lookup"
description: "Retrieves the underwriting risk assessment score for a policy application from the risk scoring API, returning overall risk grade, component scores, and recommended action."
tags:
- insurance
- underwriting
- risk
capability:
exposes:
- type: mcp
namespace: underwriting-ops
port: 8080
tools:
- name: get-risk-score
description: "Look up the underwriting risk score for a policy application by application ID. Returns risk grade, individual component scores, and recommended underwriting action. Use during policy review."
inputParameters:
- name: application_id
in: body
type: string
description: "The policy application ID to score."
call: "risk-engine.get-score"
with:
application_id: "{{application_id}}"
outputParameters:
- name: risk_grade
type: string
mapping: "$.riskGrade"
- name: overall_score
type: number
mapping: "$.overallScore"
- name: recommended_action
type: string
mapping: "$.recommendedAction"
consumes:
- type: http
namespace: risk-engine
baseUri: "https://api.statefarm.com/underwriting/v2"
authentication:
type: bearer
token: "$secrets.underwriting_api_token"
resources:
- name: risk-scores
path: "/applications/{{application_id}}/risk-score"
inputParameters:
- name: application_id
in: path
operations:
- name: get-score
method: GET
Retrieves vehicle details from the VIN database for underwriting and claims processing.
naftiko: "0.5"
info:
label: "Vehicle VIN Lookup"
description: "Retrieves vehicle details from the VIN database for underwriting and claims processing."
tags:
- insurance
- auto
- vehicle
capability:
exposes:
- type: mcp
namespace: sf-vehicles
port: 8080
tools:
- name: get-vehicle-by-vin
description: "Given a VIN, return vehicle make, model, year, and valuation. Use when processing auto claims or new policy applications."
inputParameters:
- name: vin
in: body
type: string
description: "The vehicle identification number."
call: "sf-vehicles.get-vehicle-by-vin"
with:
vin: "{{vin}}"
outputParameters:
- name: make
type: string
mapping: "$.make"
- name: model
type: string
mapping: "$.model"
- name: year
type: number
mapping: "$.year"
- name: valuation
type: number
mapping: "$.valuation"
consumes:
- namespace: sf-vehicles
type: http
baseUri: "https://api.statefarm.com/v1/vehicles"
authentication:
type: bearer
token: "$secrets.sf_vehicles_token"
resources:
- name: vin
path: "/vin/{vin}"
inputParameters:
- name: vin
in: path
operations:
- name: get-vehicle-by-vin
method: GET
Retrieves active weather alerts for a geographic area from the National Weather Service integration.
naftiko: "0.5"
info:
label: "Weather Alert Lookup"
description: "Retrieves active weather alerts for a geographic area from the National Weather Service integration."
tags:
- insurance
- weather
- catastrophe
capability:
exposes:
- type: mcp
namespace: nws
port: 8080
tools:
- name: get-weather-alerts
description: "Given a state code, return active weather alerts. Use when assessing catastrophe exposure for a region."
inputParameters:
- name: state_code
in: body
type: string
description: "The two-letter state code."
call: "nws.get-weather-alerts"
with:
state_code: "{{state_code}}"
outputParameters:
- name: alerts
type: array
mapping: "$.features"
- name: count
type: number
mapping: "$.features.length"
consumes:
- namespace: nws
type: http
baseUri: "https://api.weather.gov"
authentication:
type: bearer
token: "$secrets.nws_token"
resources:
- name: alerts
path: "/alerts/active"
operations:
- name: get-weather-alerts
method: GET
When a severe weather event is forecasted, queries policy exposure data from Snowflake for the affected region, calculates potential losses, and generates an exposure report in Power BI.
naftiko: "0.5"
info:
label: "Weather Event Exposure Analysis"
description: "When a severe weather event is forecasted, queries policy exposure data from Snowflake for the affected region, calculates potential losses, and generates an exposure report in Power BI."
tags:
- insurance
- actuarial
- catastrophe
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: weather-exposure
port: 8080
tools:
- name: analyze-weather-exposure
description: "Analyze policy exposure for a forecasted weather event. Queries exposure data and generates a report. Use when severe weather is forecasted."
inputParameters:
- name: event_type
in: body
type: string
description: "Weather event type: hurricane, tornado, hail, flood."
- name: affected_zip_codes
in: body
type: string
description: "Comma-separated ZIP codes in the forecast area."
steps:
- name: query-exposure
type: call
call: "snowflake.run-query"
with:
query: "SELECT lob, COUNT(*) as policy_count, SUM(total_insured_value) as tiv FROM POLICY_DB.PUBLIC.ACTIVE_POLICIES WHERE zip_code IN ('{{affected_zip_codes}}') GROUP BY lob"
- name: refresh-exposure-dashboard
type: call
call: "powerbi.refresh-dataset"
with:
group_id: "$secrets.powerbi_cat_group"
dataset_id: "$secrets.powerbi_exposure_dataset"
consumes:
- type: http
namespace: snowflake
baseUri: "https://statefarm.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/groups/{{group_id}}/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: group_id
in: path
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
Retrieves employee benefits eligibility information from Workday, including current enrolled plans, eligible plans, and open enrollment status.
naftiko: "0.5"
info:
label: "Workday Benefits Eligibility Lookup"
description: "Retrieves employee benefits eligibility information from Workday, including current enrolled plans, eligible plans, and open enrollment status."
tags:
- hr
- workday
- benefits
capability:
exposes:
- type: mcp
namespace: benefits-ops
port: 8080
tools:
- name: get-benefits-eligibility
description: "Look up an employee's benefits eligibility in Workday. Returns current plans, eligible options, and enrollment status. Use when employees inquire about benefits."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday employee ID."
call: "workday.get-benefits"
with:
employee_id: "{{employee_id}}"
outputParameters:
- name: enrolled_plans
type: array
mapping: "$.enrolledPlans"
- name: eligible_plans
type: array
mapping: "$.eligiblePlans"
- name: enrollment_status
type: string
mapping: "$.enrollmentStatus"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/statefarm"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: benefits
path: "/benefits/eligibility/{{employee_id}}"
inputParameters:
- name: employee_id
in: path
operations:
- name: get-benefits
method: GET
Assigns mandatory compliance and insurance licensing training to State Farm employees and agents in Workday Learning based on their role and license requirements, then sends a Teams reminder with the training deadline.
naftiko: "0.5"
info:
label: "Workday Compliance Training Assignment"
description: "Assigns mandatory compliance and insurance licensing training to State Farm employees and agents in Workday Learning based on their role and license requirements, then sends a Teams reminder with the training deadline."
tags:
- hr
- learning
- workday
- compliance
- microsoft-teams
- insurance
capability:
exposes:
- type: mcp
namespace: compliance-training
port: 8080
tools:
- name: assign-compliance-training
description: "Given a Workday worker ID, course ID, and due date, assign mandatory compliance training in Workday Learning and send a Teams reminder to the employee. Use for regulatory compliance, insurance licensing, and annual training rollouts."
inputParameters:
- name: worker_id
in: body
type: string
description: "The Workday worker ID for the employee or agent."
- name: course_id
in: body
type: string
description: "The Workday Learning course ID to assign."
- name: due_date
in: body
type: string
description: "The training completion deadline in ISO 8601 format."
steps:
- name: get-worker
type: call
call: "workday-lms.get-worker"
with:
worker_id: "{{worker_id}}"
- name: assign-course
type: call
call: "workday-lms-assign.assign-learning"
with:
worker_id: "{{worker_id}}"
course_id: "{{course_id}}"
due_date: "{{due_date}}"
- name: notify-worker
type: call
call: "msteams-training.post-message"
with:
channel_id: "$secrets.hr_teams_channel"
text: "Compliance training assigned to {{get-worker.firstName}} {{get-worker.lastName}}: Course {{course_id}} due by {{due_date}}."
consumes:
- type: http
namespace: workday-lms
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: workday-lms-assign
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: learning-assignments
path: "/learningEnrollments"
operations:
- name: assign-learning
method: POST
- type: http
namespace: msteams-training
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
When an employee or agent termination is processed in Workday, disables their Microsoft 365 account, suspends Okta SSO access, and notifies HR and IT via Microsoft Teams.
naftiko: "0.5"
info:
label: "Workday Employee Offboarding Orchestrator"
description: "When an employee or agent termination is processed in Workday, disables their Microsoft 365 account, suspends Okta SSO access, and notifies HR and IT via Microsoft Teams."
tags:
- hr
- offboarding
- workday
- okta
- microsoft-365
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: trigger-offboarding
description: "Given a Workday worker ID and termination date, disable the Microsoft 365 account, suspend Okta access, and notify HR and IT in Teams. Use when an agent or employee termination is confirmed in Workday."
inputParameters:
- name: worker_id
in: body
type: string
description: "The Workday worker ID for the departing employee or agent."
- name: termination_date
in: body
type: string
description: "The effective termination date in ISO 8601 format."
steps:
- name: get-worker
type: call
call: "workday-offboard.get-worker"
with:
worker_id: "{{worker_id}}"
- name: disable-m365
type: call
call: "msgraph-offboard.disable-user"
with:
user_id: "{{get-worker.email}}"
- name: suspend-okta
type: call
call: "okta-offboard.suspend-user"
with:
email: "{{get-worker.email}}"
- name: notify-hr-it
type: call
call: "msteams-offboard.post-message"
with:
channel_id: "$secrets.hr_teams_channel"
text: "Offboarding complete for {{get-worker.firstName}} {{get-worker.lastName}}. M365 and Okta access revoked as of {{termination_date}}."
consumes:
- type: http
namespace: workday-offboard
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: msgraph-offboard
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: users
path: "/users/{{user_id}}"
inputParameters:
- name: user_id
in: path
operations:
- name: disable-user
method: PATCH
- type: http
namespace: okta-offboard
baseUri: "https://statefarm.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: user-lifecycle
path: "/users/{{user_id}}/lifecycle/suspend"
inputParameters:
- name: user_id
in: path
operations:
- name: suspend-user
method: POST
- type: http
namespace: msteams-offboard
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Retrieves current headcount by department and cost center from Workday and publishes a structured snapshot to the finance team's Microsoft Teams channel for workforce planning and budget review.
naftiko: "0.5"
info:
label: "Workday Headcount Snapshot for Finance"
description: "Retrieves current headcount by department and cost center from Workday and publishes a structured snapshot to the finance team's Microsoft Teams channel for workforce planning and budget review."
tags:
- hr
- finance
- workday
- reporting
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-analytics
port: 8080
tools:
- name: get-headcount-snapshot
description: "Return current headcount grouped by department and cost center from Workday and post the summary to the finance Teams channel. Use for quarterly workforce planning, budget reviews, and headcount reporting to leadership."
inputParameters:
- name: company_code
in: body
type: string
description: "The Workday company code to filter headcount by (e.g., State Farm Mutual)."
steps:
- name: get-headcount
type: call
call: "workday-hc.get-workers"
with:
company_code: "{{company_code}}"
- name: post-snapshot
type: call
call: "msteams-hc.post-message"
with:
channel_id: "$secrets.finance_teams_channel"
text: "Headcount snapshot for {{company_code}}: {{get-headcount.totalCount}} active employees across {{get-headcount.departmentCount}} departments."
consumes:
- type: http
namespace: workday-hc
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers"
inputParameters:
- name: company_code
in: query
operations:
- name: get-workers
method: GET
- type: http
namespace: msteams-hc
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
At payroll period close, retrieves headcount and total compensation data from Workday and publishes a period close summary to the finance team's Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Workday Payroll Period Close Report"
description: "At payroll period close, retrieves headcount and total compensation data from Workday and publishes a period close summary to the finance team's Microsoft Teams channel."
tags:
- hr
- finance
- payroll
- workday
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: payroll-close
port: 8080
tools:
- name: publish-payroll-period-report
description: "Given a Workday payroll period ID and company code, retrieve period headcount and total compensation and post a close summary to the finance Teams channel. Use at the end of each State Farm payroll period."
inputParameters:
- name: period_id
in: body
type: string
description: "The Workday payroll period ID."
- name: company_code
in: body
type: string
description: "The Workday company code (e.g., State Farm Mutual)."
steps:
- name: get-payroll-data
type: call
call: "workday-payroll.get-payroll-results"
with:
period_id: "{{period_id}}"
company_code: "{{company_code}}"
- name: post-close-summary
type: call
call: "msteams-finance.post-message"
with:
channel_id: "$secrets.finance_teams_channel"
text: "Payroll period {{period_id}} closed for {{company_code}}. Headcount: {{get-payroll-data.headcount}}. Total compensation: {{get-payroll-data.totalCompensation}}"
consumes:
- type: http
namespace: workday-payroll
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: payroll-results
path: "/payrollResults"
inputParameters:
- name: period_id
in: query
- name: company_code
in: query
operations:
- name: get-payroll-results
method: GET
- type: http
namespace: msteams-finance
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Retrieves an employee's current time off balances from Workday, including vacation, sick, and personal days available.
naftiko: "0.5"
info:
label: "Workday Time Off Balance Lookup"
description: "Retrieves an employee's current time off balances from Workday, including vacation, sick, and personal days available."
tags:
- hr
- workday
capability:
exposes:
- type: mcp
namespace: time-off-ops
port: 8080
tools:
- name: get-time-off-balance
description: "Look up current time off balances for an employee in Workday. Returns vacation, sick, and personal day balances. Use when employees inquire about available time off."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday employee ID."
call: "workday.get-time-off-balance"
with:
employee_id: "{{employee_id}}"
outputParameters:
- name: vacation_hours
type: number
mapping: "$.vacationBalance"
- name: sick_hours
type: number
mapping: "$.sickBalance"
- name: personal_hours
type: number
mapping: "$.personalBalance"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/statefarm"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: time-off
path: "/timeOff/balances/{{employee_id}}"
inputParameters:
- name: employee_id
in: path
operations:
- name: get-time-off-balance
method: GET
Enriches a prospect record in Salesforce with firmographic and contact data from ZoomInfo, improving lead quality for commercial insurance agents.
naftiko: "0.5"
info:
label: "ZoomInfo Prospect Enrichment"
description: "Enriches a prospect record in Salesforce with firmographic and contact data from ZoomInfo, improving lead quality for commercial insurance agents."
tags:
- insurance
- sales
- zoominfo
- salesforce
capability:
exposes:
- type: mcp
namespace: enrichment-ops
port: 8080
tools:
- name: enrich-prospect
description: "Enrich a Salesforce prospect with ZoomInfo data. Pulls company and contact info and updates the lead record. Use for commercial insurance lead enrichment."
inputParameters:
- name: lead_id
in: body
type: string
description: "The Salesforce lead ID."
- name: company_name
in: body
type: string
description: "Company name to search in ZoomInfo."
steps:
- name: get-company-data
type: call
call: "zoominfo.search-company"
with:
company_name: "{{company_name}}"
- name: update-lead
type: call
call: "salesforce.update-lead"
with:
lead_id: "{{lead_id}}"
industry: "{{get-company-data.industry}}"
employee_count: "{{get-company-data.employeeCount}}"
revenue: "{{get-company-data.revenue}}"
consumes:
- type: http
namespace: zoominfo
baseUri: "https://api.zoominfo.com"
authentication:
type: bearer
token: "$secrets.zoominfo_token"
resources:
- name: companies
path: "/search/company"
operations:
- name: search-company
method: POST
- type: http
namespace: salesforce
baseUri: "https://statefarm.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: leads
path: "/sobjects/Lead/{{lead_id}}"
inputParameters:
- name: lead_id
in: path
operations:
- name: update-lead
method: PATCH