Allstate Capabilities

Naftiko 0.5 capability definitions for Allstate - 100 capabilities showing integration workflows and service orchestrations.

Sort
Expand

Validates actuarial models in Snowflake, deploys to production scoring engine, monitors performance in Grafana, and notifies actuarial.

naftiko: "0.5"
info:
  label: "Actuarial Model Deployment Orchestrator"
  description: "Validates actuarial models in Snowflake, deploys to production scoring engine, monitors performance in Grafana, and notifies actuarial."
  tags:
    - actuarial
    - snowflake
    - grafana
    - servicenow
    - slack
capability:
  exposes:
    - type: mcp
      namespace: actuarial
      port: 8080
      tools:
        - name: actuarial_model_deployment_orchestrator
          description: "Orchestrate actuarial model deployment orchestrator workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-snowflake
              type: call
              call: "snowflake.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-grafana
              type: call
              call: "grafana.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-servicenow
              type: call
              call: "servicenow.create-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: notify-slack
              type: call
              call: "slack.notify-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: grafana
      baseUri: "https://allstate-grafana.com/api"
      authentication:
        type: bearer
        token: "$secrets.grafana_api_key" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: grafana-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST

Deploys an actuarial pricing model by promoting the model in Azure ML, validating via Postman API tests, and publishing the deployment record in Confluence.

naftiko: "0.5"
info:
  label: "Actuarial Model Deployment Pipeline"
  description: "Deploys an actuarial pricing model by promoting the model in Azure ML, validating via Postman API tests, and publishing the deployment record in Confluence."
  tags:
    - actuarial
    - model-deployment
    - azure-machine-learning
    - postman
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: model-deployment
      port: 8080
      tools:
        - name: deploy-actuarial-model
          description: "Deploy an actuarial model through the full pipeline with validation and documentation."
          inputParameters:
            - name: model_name
              in: body
              type: string
              description: "Name of the actuarial model to deploy."
            - name: model_version
              in: body
              type: string
              description: "Model version tag."
          steps:
            - name: deploy-model
              type: call
              call: "azureml.deploy-model"
              with:
                model_name: "{{model_name}}"
                version: "{{model_version}}"
            - name: run-validation
              type: call
              call: "postman.create-run"
              with:
                collection: "actuarial-model-tests"
                environment: "production"
            - name: document-deployment
              type: call
              call: "confluence.create-page"
              with:
                space_key: "ACTUARIAL"
                title: "{{model_name}} v{{model_version}} Deployment"
                body: "Model {{model_name}} version {{model_version}} deployed. Endpoint: {{deploy-model.endpoint_url}}. Validation: {{run-validation.status}}."
  consumes:
    - type: http
      namespace: azureml
      baseUri: "https://allstate-actuarial-ml.eastus2.inference.ml.azure.com"
      authentication:
        type: bearer
        token: "$secrets.azureml_actuarial_token"
      resources:
        - name: deployments
          path: "/deployments"
          operations:
            - name: deploy-model
              method: POST
    - type: http
      namespace: postman
      baseUri: "https://api.getpostman.com"
      authentication:
        type: apiKey
        key: "$secrets.postman_api_key"
      resources:
        - name: collection-runs
          path: "/collections/{{collection}}/runs"
          inputParameters:
            - name: collection
              in: path
          operations:
            - name: create-run
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://allstate.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST

# --- SIMPLE CAPABILITIES (call:) 36-50 ---

Collects agency metrics from Salesforce, aggregates in Snowflake, refreshes Power BI dashboards, and notifies distribution management.

naftiko: "0.5"
info:
  label: "Agency Performance Dashboard Pipeline"
  description: "Collects agency metrics from Salesforce, aggregates in Snowflake, refreshes Power BI dashboards, and notifies distribution management."
  tags:
    - distribution
    - salesforce
    - snowflake
    - powerbi
    - slack
capability:
  exposes:
    - type: mcp
      namespace: distribution
      port: 8080
      tools:
        - name: agency_performance_dashboard_pipeline
          description: "Orchestrate agency performance dashboard pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-salesforce
              type: call
              call: "salesforce.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-snowflake
              type: call
              call: "snowflake.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: notify-servicenow
              type: call
              call: "servicenow.notify-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce-op
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST

Calculates agent commissions from policy data in Snowflake, validates against contracts, processes payments, and notifies agents.

naftiko: "0.5"
info:
  label: "Agent Commission Calculation Pipeline"
  description: "Calculates agent commissions from policy data in Snowflake, validates against contracts, processes payments, and notifies agents."
  tags:
    - commissions
    - snowflake
    - salesforce
    - servicenow
    - slack
capability:
  exposes:
    - type: mcp
      namespace: commissions
      port: 8080
      tools:
        - name: agent_commission_calculation_pipeline
          description: "Orchestrate agent commission calculation pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-snowflake
              type: call
              call: "snowflake.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-salesforce
              type: call
              call: "salesforce.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-servicenow
              type: call
              call: "servicenow.create-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: notify-slack
              type: call
              call: "slack.notify-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST

Pulls agent commission data from Oracle E-Business Suite by agent ID. Returns total commissions, policy count, and performance tier for the current quarter.

naftiko: "0.5"
info:
  label: "Agent Commission Report"
  description: "Pulls agent commission data from Oracle E-Business Suite by agent ID. Returns total commissions, policy count, and performance tier for the current quarter."
  tags:
    - agent-management
    - commissions
    - oracle-e-business-suite
capability:
  exposes:
    - type: mcp
      namespace: agent-finance
      port: 8080
      tools:
        - name: get-agent-commissions
          description: "Look up quarterly commission data for an Allstate agent from Oracle EBS. Returns total earned, policy count, and tier."
          inputParameters:
            - name: agent_id
              in: body
              type: string
              description: "The Allstate agent identifier."
            - name: quarter
              in: body
              type: string
              description: "Fiscal quarter, e.g. 'Q1-2026'."
          call: "oracle.get-commissions"
          with:
            agent_id: "{{agent_id}}"
            quarter: "{{quarter}}"
          outputParameters:
            - name: total_commissions
              type: string
              mapping: "$.commissions.total_amount"
            - name: policy_count
              type: string
              mapping: "$.commissions.policies_sold"
            - name: performance_tier
              type: string
              mapping: "$.commissions.tier"
  consumes:
    - type: http
      namespace: oracle
      baseUri: "https://allstate-ebs.oracle.com/webservices/rest/v1"
      authentication:
        type: basic
        username: "$secrets.oracle_user"
        password: "$secrets.oracle_password"
      resources:
        - name: commissions
          path: "/commissions?agent_id={{agent_id}}&quarter={{quarter}}"
          inputParameters:
            - name: agent_id
              in: query
            - name: quarter
              in: query
          operations:
            - name: get-commissions
              method: GET

Monitors agent licenses and appointments, validates against state requirements, creates renewal tasks, and notifies compliance.

naftiko: "0.5"
info:
  label: "Agent Licensing Compliance Pipeline"
  description: "Monitors agent licenses and appointments, validates against state requirements, creates renewal tasks, and notifies compliance."
  tags:
    - licensing
    - snowflake
    - servicenow
    - salesforce
    - slack
capability:
  exposes:
    - type: mcp
      namespace: licensing
      port: 8080
      tools:
        - name: agent_licensing_compliance_pipeline
          description: "Orchestrate agent licensing compliance pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-snowflake
              type: call
              call: "snowflake.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-servicenow
              type: call
              call: "servicenow.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-salesforce
              type: call
              call: "salesforce.create-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: notify-slack
              type: call
              call: "slack.notify-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST

Compiles an agent performance review by pulling sales data from Microsoft Dynamics 365, commission data from Oracle, and generating a summary report in Confluence.

naftiko: "0.5"
info:
  label: "Agent Performance Review Compiler"
  description: "Compiles an agent performance review by pulling sales data from Microsoft Dynamics 365, commission data from Oracle, and generating a summary report in Confluence."
  tags:
    - agent-management
    - performance-metrics
    - microsoft-dynamics-365
    - oracle
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: agent-reviews
      port: 8080
      tools:
        - name: compile-agent-review
          description: "Compile a comprehensive performance review for an insurance agent from multiple data sources."
          inputParameters:
            - name: agent_id
              in: body
              type: string
              description: "The agent identifier."
            - name: review_period
              in: body
              type: string
              description: "Review period, e.g. 'Q1-2026'."
          steps:
            - name: get-sales-data
              type: call
              call: "dynamics.get-performance"
              with:
                agent_id: "{{agent_id}}"
                period: "{{review_period}}"
            - name: get-commissions
              type: call
              call: "oracle.get-commissions"
              with:
                agent_id: "{{agent_id}}"
                quarter: "{{review_period}}"
            - name: publish-review
              type: call
              call: "confluence.create-page"
              with:
                space_key: "AGENT_REVIEWS"
                title: "Agent {{agent_id}} Review - {{review_period}}"
                body: "Policies Sold: {{get-sales-data.value[0].policies_sold}}. CSAT: {{get-sales-data.value[0].csat_score}}. Total Commissions: ${{get-commissions.commissions.total_amount}}. Tier: {{get-commissions.commissions.tier}}."
  consumes:
    - type: http
      namespace: dynamics
      baseUri: "https://allstate.crm.dynamics.com/api/data/v9.2"
      authentication:
        type: bearer
        token: "$secrets.dynamics_token"
      resources:
        - name: agent-metrics
          path: "/agent_performances?$filter=agentid eq '{{agent_id}}' and period eq '{{period}}'"
          inputParameters:
            - name: agent_id
              in: query
            - name: period
              in: query
          operations:
            - name: get-performance
              method: GET
    - type: http
      namespace: oracle
      baseUri: "https://allstate-ebs.oracle.com/webservices/rest/v1"
      authentication:
        type: basic
        username: "$secrets.oracle_user"
        password: "$secrets.oracle_password"
      resources:
        - name: commissions
          path: "/commissions?agent_id={{agent_id}}&quarter={{quarter}}"
          inputParameters:
            - name: agent_id
              in: query
            - name: quarter
              in: query
          operations:
            - name: get-commissions
              method: GET
    - type: http
      namespace: confluence
      baseUri: "https://allstate.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST

Retrieves a vehicle damage repair estimate from Audatex by claim reference number. Used by auto claims adjusters to obtain standardized repair cost estimates.

naftiko: "0.5"
info:
  label: "Audatex Vehicle Damage Estimate"
  description: "Retrieves a vehicle damage repair estimate from Audatex by claim reference number. Used by auto claims adjusters to obtain standardized repair cost estimates."
  tags:
    - claims-processing
    - vehicle-repairs
    - audatex
capability:
  exposes:
    - type: mcp
      namespace: auto-claims
      port: 8080
      tools:
        - name: get-damage-estimate
          description: "Look up a vehicle damage estimate in Audatex by claim reference. Returns estimated repair cost, parts list, and labor hours."
          inputParameters:
            - name: claim_reference
              in: body
              type: string
              description: "The Audatex claim reference number."
          call: "audatex.get-estimate"
          with:
            claim_reference: "{{claim_reference}}"
          outputParameters:
            - name: total_cost
              type: string
              mapping: "$.estimate.totalCost"
            - name: parts_count
              type: string
              mapping: "$.estimate.partsCount"
            - name: labor_hours
              type: string
              mapping: "$.estimate.laborHours"
  consumes:
    - type: http
      namespace: audatex
      baseUri: "https://api.audatex.com/v2"
      authentication:
        type: bearer
        token: "$secrets.audatex_api_key"
      resources:
        - name: estimates
          path: "/estimates/{{claim_reference}}"
          inputParameters:
            - name: claim_reference
              in: path
          operations:
            - name: get-estimate
              method: GET

Receives claim photos, runs AI damage assessment, retrieves vehicle data, creates estimate in ServiceNow, and notifies adjuster.

naftiko: "0.5"
info:
  label: "Auto Claims Damage Assessment Pipeline"
  description: "Receives claim photos, runs AI damage assessment, retrieves vehicle data, creates estimate in ServiceNow, and notifies adjuster."
  tags:
    - claims
    - ai
    - servicenow
    - salesforce
    - slack
capability:
  exposes:
    - type: mcp
      namespace: claims
      port: 8080
      tools:
        - name: auto_claims_damage_assessment_pipeline
          description: "Orchestrate auto claims damage assessment pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-servicenow
              type: call
              call: "servicenow.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-salesforce
              type: call
              call: "salesforce.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST

During a catastrophe event, triages incoming claims by geocoding addresses via Google Maps, scoring severity with Azure ML, prioritizing in ServiceNow, and alerting the CAT team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Catastrophe Claims Triage"
  description: "During a catastrophe event, triages incoming claims by geocoding addresses via Google Maps, scoring severity with Azure ML, prioritizing in ServiceNow, and alerting the CAT team via Microsoft Teams."
  tags:
    - catastrophe
    - claims-processing
    - google-maps
    - azure-machine-learning
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: cat-claims
      port: 8080
      tools:
        - name: triage-cat-claim
          description: "Triage a catastrophe claim by geocoding, scoring severity, and routing to the appropriate response team."
          inputParameters:
            - name: claim_number
              in: body
              type: string
              description: "The claim incident number."
            - name: property_address
              in: body
              type: string
              description: "The property address for geocoding."
            - name: event_id
              in: body
              type: string
              description: "The catastrophe event identifier."
          steps:
            - name: geocode-address
              type: call
              call: "googlemaps.geocode"
              with:
                address: "{{property_address}}"
            - name: score-severity
              type: call
              call: "azureml.score-cat"
              with:
                lat: "{{geocode-address.results[0].geometry.location.lat}}"
                lng: "{{geocode-address.results[0].geometry.location.lng}}"
                event_id: "{{event_id}}"
            - name: update-claim
              type: call
              call: "servicenow.update-incident"
              with:
                number: "{{claim_number}}"
                priority: "{{score-severity.priority}}"
                assignment_group: "CAT_Response_{{score-severity.severity_tier}}"
            - name: alert-cat-team
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "cat-response-{{event_id}}"
                text: "CAT Claim {{claim_number}} triaged. Severity: {{score-severity.severity_tier}}. Location: {{geocode-address.results[0].formatted_address}}."
  consumes:
    - type: http
      namespace: googlemaps
      baseUri: "https://maps.googleapis.com/maps/api"
      authentication:
        type: apiKey
        key: "$secrets.google_maps_key"
      resources:
        - name: geocode
          path: "/geocode/json?address={{address}}"
          inputParameters:
            - name: address
              in: query
          operations:
            - name: geocode
              method: GET
    - type: http
      namespace: azureml
      baseUri: "https://allstate-cat-ml.eastus2.inference.ml.azure.com"
      authentication:
        type: bearer
        token: "$secrets.azureml_cat_token"
      resources:
        - name: cat-scoring
          path: "/score"
          operations:
            - name: score-cat
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incident-update
          path: "/table/incident/{{number}}"
          inputParameters:
            - name: number
              in: path
          operations:
            - name: update-incident
              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/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Detects weather events, identifies affected policyholders in Snowflake, mobilizes adjusters, creates ServiceNow war room, and notifies leadership.

naftiko: "0.5"
info:
  label: "Catastrophe Event Response Pipeline"
  description: "Detects weather events, identifies affected policyholders in Snowflake, mobilizes adjusters, creates ServiceNow war room, and notifies leadership."
  tags:
    - catastrophe
    - snowflake
    - servicenow
    - salesforce
    - slack
capability:
  exposes:
    - type: mcp
      namespace: catastrophe
      port: 8080
      tools:
        - name: catastrophe_event_response_pipeline
          description: "Orchestrate catastrophe event response pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-snowflake
              type: call
              call: "snowflake.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-servicenow
              type: call
              call: "servicenow.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-salesforce
              type: call
              call: "salesforce.create-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: notify-slack
              type: call
              call: "slack.notify-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST

Orchestrates a claims service deployment by triggering GitHub Actions, scanning the Docker image in JFrog Artifactory, and notifying the team in Microsoft Teams on completion.

naftiko: "0.5"
info:
  label: "CI/CD Deployment Pipeline"
  description: "Orchestrates a claims service deployment by triggering GitHub Actions, scanning the Docker image in JFrog Artifactory, and notifying the team in Microsoft Teams on completion."
  tags:
    - ci-cd
    - deployments
    - github-actions
    - jfrog-artifactory
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: deployment-pipeline
      port: 8080
      tools:
        - name: deploy-service
          description: "Deploy a claims microservice through the full CI/CD pipeline with security scanning and notification."
          inputParameters:
            - name: repo
              in: body
              type: string
              description: "GitHub repository in org/repo format."
            - name: branch
              in: body
              type: string
              description: "Branch to deploy."
            - name: image_tag
              in: body
              type: string
              description: "Docker image tag to scan."
          steps:
            - name: trigger-build
              type: call
              call: "github.dispatch-workflow"
              with:
                repo: "{{repo}}"
                workflow_id: "deploy.yml"
                ref: "{{branch}}"
            - name: scan-image
              type: call
              call: "artifactory.scan-artifact"
              with:
                image: "allstate-docker/{{repo}}:{{image_tag}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "platform-engineering"
                text: "Deployment triggered for {{repo}}@{{branch}}. Image scan: {{scan-image.summary.critical}} critical, {{scan-image.summary.high}} high vulnerabilities."
  consumes:
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: workflow-dispatches
          path: "/repos/{{repo}}/actions/workflows/{{workflow_id}}/dispatches"
          inputParameters:
            - name: repo
              in: path
            - name: workflow_id
              in: path
          operations:
            - name: dispatch-workflow
              method: POST
    - type: http
      namespace: artifactory
      baseUri: "https://allstate.jfrog.io/xray/api/v2"
      authentication:
        type: bearer
        token: "$secrets.artifactory_token"
      resources:
        - name: scans
          path: "/summary/artifact"
          operations:
            - name: scan-artifact
              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/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Processes a claim denial appeal by retrieving the original claim from ServiceNow, pulling the policy terms from Salesforce, generating an appeal review summary via OpenAI, and updating the claim status.

naftiko: "0.5"
info:
  label: "Claim Denial Appeal Processor"
  description: "Processes a claim denial appeal by retrieving the original claim from ServiceNow, pulling the policy terms from Salesforce, generating an appeal review summary via OpenAI, and updating the claim status."
  tags:
    - claims-processing
    - appeals
    - servicenow
    - salesforce
    - openai
capability:
  exposes:
    - type: mcp
      namespace: claim-appeals
      port: 8080
      tools:
        - name: process-appeal
          description: "Process a claim denial appeal by reviewing original claim details, policy terms, and generating a recommendation."
          inputParameters:
            - name: claim_number
              in: body
              type: string
              description: "The denied claim number."
            - name: appeal_reason
              in: body
              type: string
              description: "Policyholder's stated reason for appeal."
          steps:
            - name: get-claim
              type: call
              call: "servicenow.get-incident"
              with:
                number: "{{claim_number}}"
            - name: get-policy-terms
              type: call
              call: "salesforce.get-policy-terms"
              with:
                policy_number: "{{get-claim.result.correlation_id}}"
            - name: generate-review
              type: call
              call: "openai.create-completion"
              with:
                model: "gpt-4o"
                prompt: "Review this insurance claim denial appeal. Claim: {{get-claim.result.description}}. Denial reason: {{get-claim.result.close_notes}}. Appeal reason: {{appeal_reason}}. Policy terms: {{get-policy-terms.records[0].Terms__c}}. Provide a recommendation."
            - name: update-claim
              type: call
              call: "servicenow.update-incident"
              with:
                sys_id: "{{get-claim.result.sys_id}}"
                work_notes: "Appeal review: {{generate-review.choices[0].text}}"
                state: "under_review"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.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
        - name: incident-update
          path: "/table/incident/{{sys_id}}"
          inputParameters:
            - name: sys_id
              in: path
          operations:
            - name: update-incident
              method: PATCH
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: policy-terms
          path: "/query/?q=SELECT+Id,Terms__c,Coverage_Details__c+FROM+Policy__c+WHERE+Policy_Number__c='{{policy_number}}'"
          inputParameters:
            - name: policy_number
              in: query
          operations:
            - name: get-policy-terms
              method: GET
    - type: http
      namespace: openai
      baseUri: "https://api.openai.com/v1"
      authentication:
        type: bearer
        token: "$secrets.openai_api_key"
      resources:
        - name: completions
          path: "/chat/completions"
          operations:
            - name: create-completion
              method: POST

Retrieves claim photos from Amazon S3, runs them through OpenAI vision for damage classification, logs the assessment in Elasticsearch, and updates the claim in ServiceNow.

naftiko: "0.5"
info:
  label: "Claim Photo AI Assessment"
  description: "Retrieves claim photos from Amazon S3, runs them through OpenAI vision for damage classification, logs the assessment in Elasticsearch, and updates the claim in ServiceNow."
  tags:
    - claims-processing
    - ai
    - amazon-s3
    - openai
    - elasticsearch
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: claims-ai
      port: 8080
      tools:
        - name: assess-claim-photos
          description: "Run AI damage assessment on claim photos from S3 and update the claim record."
          inputParameters:
            - name: claim_number
              in: body
              type: string
              description: "The claim number."
            - name: photo_keys
              in: body
              type: string
              description: "Comma-separated S3 object keys for claim photos."
          steps:
            - name: get-photos
              type: call
              call: "s3.get-object"
              with:
                bucket: "allstate-claims-evidence"
                key: "{{photo_keys}}"
            - name: analyze-photos
              type: call
              call: "openai.create-completion"
              with:
                model: "gpt-4o"
                prompt: "Analyze these vehicle damage photos and classify severity as minor, moderate, severe, or total loss. Provide estimated repair cost range."
            - name: index-assessment
              type: call
              call: "elasticsearch.index-document"
              with:
                index: "claim-assessments"
                body: "{\"claim_number\":\"{{claim_number}}\",\"assessment\":\"{{analyze-photos.choices[0].text}}\"}"
            - name: update-claim
              type: call
              call: "servicenow.update-incident"
              with:
                number: "{{claim_number}}"
                work_notes: "AI Assessment: {{analyze-photos.choices[0].text}}"
  consumes:
    - type: http
      namespace: s3
      baseUri: "https://s3.amazonaws.com"
      authentication:
        type: bearer
        token: "$secrets.aws_session_token"
      resources:
        - name: objects
          path: "/{{bucket}}/{{key}}"
          inputParameters:
            - name: bucket
              in: path
            - name: key
              in: path
          operations:
            - name: get-object
              method: GET
    - type: http
      namespace: openai
      baseUri: "https://api.openai.com/v1"
      authentication:
        type: bearer
        token: "$secrets.openai_api_key"
      resources:
        - name: completions
          path: "/chat/completions"
          operations:
            - name: create-completion
              method: POST
    - type: http
      namespace: elasticsearch
      baseUri: "https://allstate-es.es.eastus2.azure.elastic-cloud.com"
      authentication:
        type: basic
        username: "$secrets.es_user"
        password: "$secrets.es_password"
      resources:
        - name: documents
          path: "/{{index}}/_doc"
          inputParameters:
            - name: index
              in: path
          operations:
            - name: index-document
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incident-update
          path: "/table/incident/{{number}}"
          inputParameters:
            - name: number
              in: path
          operations:
            - name: update-incident
              method: PATCH

Orchestrates claim settlement by retrieving the claim from ServiceNow, pulling the Audatex damage estimate, processing payment through Mastercard, and updating the claim status.

naftiko: "0.5"
info:
  label: "Claim Settlement Workflow"
  description: "Orchestrates claim settlement by retrieving the claim from ServiceNow, pulling the Audatex damage estimate, processing payment through Mastercard, and updating the claim status."
  tags:
    - claims-processing
    - settlements
    - servicenow
    - audatex
    - mastercard
capability:
  exposes:
    - type: mcp
      namespace: claim-settlement
      port: 8080
      tools:
        - name: settle-claim
          description: "Given a claim number, pull the estimate, issue payment, and close the claim."
          inputParameters:
            - name: claim_number
              in: body
              type: string
              description: "The ServiceNow claim incident number."
            - name: payment_method
              in: body
              type: string
              description: "Payment method: 'direct_deposit' or 'check'."
          steps:
            - name: get-claim
              type: call
              call: "servicenow.get-incident"
              with:
                number: "{{claim_number}}"
            - name: get-estimate
              type: call
              call: "audatex.get-estimate"
              with:
                claim_reference: "{{get-claim.result.correlation_id}}"
            - name: process-payment
              type: call
              call: "mastercard.initiate-payment"
              with:
                amount: "{{get-estimate.estimate.totalCost}}"
                recipient_id: "{{get-claim.result.caller_id}}"
                method: "{{payment_method}}"
            - name: close-claim
              type: call
              call: "servicenow.update-incident"
              with:
                sys_id: "{{get-claim.result.sys_id}}"
                state: "resolved"
                close_notes: "Settlement paid: ${{get-estimate.estimate.totalCost}} via {{payment_method}}. Payment ref: {{process-payment.reference_id}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.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
        - name: incident-update
          path: "/table/incident/{{sys_id}}"
          inputParameters:
            - name: sys_id
              in: path
          operations:
            - name: update-incident
              method: PATCH
    - type: http
      namespace: audatex
      baseUri: "https://api.audatex.com/v2"
      authentication:
        type: bearer
        token: "$secrets.audatex_api_key"
      resources:
        - name: estimates
          path: "/estimates/{{claim_reference}}"
          inputParameters:
            - name: claim_reference
              in: path
          operations:
            - name: get-estimate
              method: GET
    - type: http
      namespace: mastercard
      baseUri: "https://api.mastercard.com/disbursements/v1"
      authentication:
        type: bearer
        token: "$secrets.mastercard_api_key"
      resources:
        - name: payments
          path: "/payments"
          operations:
            - name: initiate-payment
              method: POST

Monitors adjuster caseloads in ServiceNow, optimizes assignments in Snowflake, rebalances workload, and notifies claims managers.

naftiko: "0.5"
info:
  label: "Claims Adjuster Workload Balancer"
  description: "Monitors adjuster caseloads in ServiceNow, optimizes assignments in Snowflake, rebalances workload, and notifies claims managers."
  tags:
    - claims
    - servicenow
    - snowflake
    - powerbi
    - slack
capability:
  exposes:
    - type: mcp
      namespace: claims
      port: 8080
      tools:
        - name: claims_adjuster_workload_balancer
          description: "Orchestrate claims adjuster workload balancer workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-servicenow
              type: call
              call: "servicenow.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-snowflake
              type: call
              call: "snowflake.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST

Triggers the claims analytics ETL pipeline by refreshing the Power BI dataset, executing a Teradata warehouse query, and publishing results to a Tableau dashboard.

naftiko: "0.5"
info:
  label: "Claims Analytics ETL Trigger"
  description: "Triggers the claims analytics ETL pipeline by refreshing the Power BI dataset, executing a Teradata warehouse query, and publishing results to a Tableau dashboard."
  tags:
    - analytics
    - data-pipeline
    - power-bi
    - teradata
    - tableau
capability:
  exposes:
    - type: mcp
      namespace: claims-etl
      port: 8080
      tools:
        - name: trigger-claims-etl
          description: "Trigger the full claims analytics ETL pipeline across Power BI, Teradata, and Tableau."
          inputParameters:
            - name: dataset_id
              in: body
              type: string
              description: "Power BI dataset ID."
            - name: report_date
              in: body
              type: string
              description: "Report date in YYYY-MM-DD format."
          steps:
            - name: refresh-dataset
              type: call
              call: "powerbi.refresh-dataset"
              with:
                dataset_id: "{{dataset_id}}"
            - name: run-warehouse-query
              type: call
              call: "teradata.execute-query"
              with:
                query: "CALL claims_analytics.refresh_daily_summary('{{report_date}}')"
            - name: refresh-tableau
              type: call
              call: "tableau.refresh-extract"
              with:
                datasource_id: "claims-daily-summary"
  consumes:
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: refresh-dataset
              method: POST
    - type: http
      namespace: teradata
      baseUri: "https://allstate-td.corp.allstate.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.teradata_user"
        password: "$secrets.teradata_password"
      resources:
        - name: queries
          path: "/queries"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: tableau
      baseUri: "https://allstate-tableau.online.tableau.com/api/3.21"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: datasources
          path: "/sites/default/datasources/{{datasource_id}}/refresh"
          inputParameters:
            - name: datasource_id
              in: path
          operations:
            - name: refresh-extract
              method: POST

Generates a claims compliance audit trail by pulling claim history from ServiceNow, retrieving payment records from Oracle, checking document completeness in Box, and publishing the audit report in Confluence.

naftiko: "0.5"
info:
  label: "Claims Compliance Audit Trail"
  description: "Generates a claims compliance audit trail by pulling claim history from ServiceNow, retrieving payment records from Oracle, checking document completeness in Box, and publishing the audit report in Confluence."
  tags:
    - compliance
    - audit
    - servicenow
    - oracle
    - box
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: claims-audit
      port: 8080
      tools:
        - name: generate-audit-trail
          description: "Generate a compliance audit trail for a claim across ServiceNow, Oracle, Box, and Confluence."
          inputParameters:
            - name: claim_number
              in: body
              type: string
              description: "The claim number to audit."
          steps:
            - name: get-claim-history
              type: call
              call: "servicenow.get-incident-history"
              with:
                number: "{{claim_number}}"
            - name: get-payments
              type: call
              call: "oracle.get-claim-payments"
              with:
                claim_number: "{{claim_number}}"
            - name: check-documents
              type: call
              call: "box.list-folder"
              with:
                folder_id: "claims_{{claim_number}}"
            - name: publish-audit
              type: call
              call: "confluence.create-page"
              with:
                space_key: "AUDIT"
                title: "Claim {{claim_number}} Audit Trail"
                body: "History entries: {{get-claim-history.result.count}}. Payments: {{get-payments.total_payments}}. Documents: {{check-documents.total_count}}."
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incident-history
          path: "/table/sys_history_line?sysparm_query=set.id={{number}}"
          inputParameters:
            - name: number
              in: query
          operations:
            - name: get-incident-history
              method: GET
    - type: http
      namespace: oracle
      baseUri: "https://allstate-ebs.oracle.com/webservices/rest/v1"
      authentication:
        type: basic
        username: "$secrets.oracle_user"
        password: "$secrets.oracle_password"
      resources:
        - name: payments
          path: "/payments?claim_number={{claim_number}}"
          inputParameters:
            - name: claim_number
              in: query
          operations:
            - name: get-claim-payments
              method: GET
    - type: http
      namespace: box
      baseUri: "https://api.box.com/2.0"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: folders
          path: "/folders/{{folder_id}}/items"
          inputParameters:
            - name: folder_id
              in: path
          operations:
            - name: list-folder
              method: GET
    - type: http
      namespace: confluence
      baseUri: "https://allstate.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST

Captures FNOL data, validates coverage in Snowflake, creates claim file in ServiceNow, assigns adjuster, and notifies policyholder.

naftiko: "0.5"
info:
  label: "Claims First Notice of Loss Pipeline"
  description: "Captures FNOL data, validates coverage in Snowflake, creates claim file in ServiceNow, assigns adjuster, and notifies policyholder."
  tags:
    - claims
    - snowflake
    - servicenow
    - salesforce
    - slack
capability:
  exposes:
    - type: mcp
      namespace: claims
      port: 8080
      tools:
        - name: claims_first_notice_of_loss_pipeline
          description: "Orchestrate claims first notice of loss pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-snowflake
              type: call
              call: "snowflake.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-servicenow
              type: call
              call: "servicenow.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-salesforce
              type: call
              call: "salesforce.create-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: notify-slack
              type: call
              call: "slack.notify-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST

When a new auto claim is filed, creates a ServiceNow incident, stores uploaded photos in Amazon S3, triggers an OpenAI vision analysis for damage assessment, and notifies the assigned adjuster via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Claims Intake Orchestrator"
  description: "When a new auto claim is filed, creates a ServiceNow incident, stores uploaded photos in Amazon S3, triggers an OpenAI vision analysis for damage assessment, and notifies the assigned adjuster via Microsoft Teams."
  tags:
    - claims-processing
    - auto-insurance
    - servicenow
    - amazon-s3
    - openai
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: claims-intake
      port: 8080
      tools:
        - name: initiate-auto-claim
          description: "Given a policy number, incident date, and description, orchestrate the full auto claim intake across ServiceNow, S3, OpenAI, and Microsoft Teams."
          inputParameters:
            - name: policy_number
              in: body
              type: string
              description: "The Allstate auto policy number."
            - name: incident_date
              in: body
              type: string
              description: "Date of the incident in YYYY-MM-DD format."
            - name: description
              in: body
              type: string
              description: "Free-text description of the incident."
            - name: photo_urls
              in: body
              type: string
              description: "Comma-separated list of uploaded photo URLs for damage evidence."
          steps:
            - name: create-claim-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Auto claim: Policy {{policy_number}} - {{incident_date}}"
                category: "auto_claims"
                assigned_group: "Claims_Adjusters"
                description: "{{description}}"
            - name: store-photos
              type: call
              call: "s3.put-object"
              with:
                bucket: "allstate-claims-evidence"
                key: "claims/{{create-claim-ticket.number}}/photos"
                body: "{{photo_urls}}"
            - name: analyze-damage
              type: call
              call: "openai.create-completion"
              with:
                model: "gpt-4o"
                prompt: "Analyze vehicle damage from these photos and estimate severity: {{photo_urls}}"
            - name: notify-adjuster
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "claims-adjusters"
                text: "New auto claim {{create-claim-ticket.number}} for policy {{policy_number}}. AI damage assessment: {{analyze-damage.choices[0].text}}. Photos: {{store-photos.url}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.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: s3
      baseUri: "https://s3.amazonaws.com"
      authentication:
        type: bearer
        token: "$secrets.aws_session_token"
      resources:
        - name: objects
          path: "/{{bucket}}/{{key}}"
          inputParameters:
            - name: bucket
              in: path
            - name: key
              in: path
          operations:
            - name: put-object
              method: PUT
    - type: http
      namespace: openai
      baseUri: "https://api.openai.com/v1"
      authentication:
        type: bearer
        token: "$secrets.openai_api_key"
      resources:
        - name: completions
          path: "/chat/completions"
          operations:
            - name: create-completion
              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/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Tracks litigated claims in ServiceNow, calculates reserves in Snowflake, assigns counsel in Salesforce, and notifies legal team.

naftiko: "0.5"
info:
  label: "Claims Litigation Management Pipeline"
  description: "Tracks litigated claims in ServiceNow, calculates reserves in Snowflake, assigns counsel in Salesforce, and notifies legal team."
  tags:
    - litigation
    - servicenow
    - snowflake
    - salesforce
    - slack
capability:
  exposes:
    - type: mcp
      namespace: litigation
      port: 8080
      tools:
        - name: claims_litigation_management_pipeline
          description: "Orchestrate claims litigation management pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-servicenow
              type: call
              call: "servicenow.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-snowflake
              type: call
              call: "snowflake.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-salesforce
              type: call
              call: "salesforce.create-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: notify-slack
              type: call
              call: "slack.notify-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST

Processes approved claim payments, validates against reserves in Snowflake, issues payments, updates ServiceNow, and notifies claimants.

naftiko: "0.5"
info:
  label: "Claims Payment Processing Pipeline"
  description: "Processes approved claim payments, validates against reserves in Snowflake, issues payments, updates ServiceNow, and notifies claimants."
  tags:
    - claims
    - snowflake
    - servicenow
    - salesforce
    - slack
capability:
  exposes:
    - type: mcp
      namespace: claims
      port: 8080
      tools:
        - name: claims_payment_processing_pipeline
          description: "Orchestrate claims payment processing pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-snowflake
              type: call
              call: "snowflake.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-servicenow
              type: call
              call: "servicenow.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-salesforce
              type: call
              call: "salesforce.create-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: notify-slack
              type: call
              call: "slack.notify-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST

Analyzes claims reserves in Snowflake, runs adequacy models, identifies under-reserved claims, creates reviews, and notifies actuarial.

naftiko: "0.5"
info:
  label: "Claims Reserve Adequacy Pipeline"
  description: "Analyzes claims reserves in Snowflake, runs adequacy models, identifies under-reserved claims, creates reviews, and notifies actuarial."
  tags:
    - actuarial
    - snowflake
    - servicenow
    - powerbi
    - slack
capability:
  exposes:
    - type: mcp
      namespace: actuarial
      port: 8080
      tools:
        - name: claims_reserve_adequacy_pipeline
          description: "Orchestrate claims reserve adequacy pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-snowflake
              type: call
              call: "snowflake.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-servicenow
              type: call
              call: "servicenow.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST

Monitors claims processing SLAs by querying ServiceNow for aging claims, checking SLA thresholds in Datadog, and auto-escalating breached claims with notification to management via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Claims SLA Monitor and Escalator"
  description: "Monitors claims processing SLAs by querying ServiceNow for aging claims, checking SLA thresholds in Datadog, and auto-escalating breached claims with notification to management via Microsoft Teams."
  tags:
    - claims-processing
    - sla-management
    - servicenow
    - datadog
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: claims-sla
      port: 8080
      tools:
        - name: monitor-claims-sla
          description: "Check for SLA breaches on open claims and auto-escalate with management notification."
          inputParameters:
            - name: sla_hours
              in: body
              type: string
              description: "SLA threshold in hours."
            - name: claim_type
              in: body
              type: string
              description: "Claim type to monitor: auto, home, commercial."
          steps:
            - name: get-aging-claims
              type: call
              call: "servicenow.query-incidents"
              with:
                query: "category={{claim_type}}^state=in_progress^sys_created_onRELATIVEGT@hour@ago@{{sla_hours}}"
            - name: check-metrics
              type: call
              call: "datadog.query-metrics"
              with:
                query: "avg:claims.processing.age{claim_type:{{claim_type}}}"
                from: "last_1h"
            - name: escalate-breached
              type: call
              call: "servicenow.bulk-update"
              with:
                incidents: "{{get-aging-claims.result}}"
                priority: "1"
                assignment_group: "Claims_Management"
            - name: notify-management
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "claims-leadership"
                text: "SLA BREACH: {{get-aging-claims.result.count}} {{claim_type}} claims exceeded {{sla_hours}}h SLA. Average age: {{check-metrics.series[0].pointlist[-1][1]}}h. Claims escalated to management."
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident?sysparm_query={{query}}"
          inputParameters:
            - name: query
              in: query
          operations:
            - name: query-incidents
              method: GET
        - name: bulk-update
          path: "/table/incident"
          operations:
            - name: bulk-update
              method: PATCH
    - 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: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Monitors regulatory compliance across operations in Snowflake, generates compliance reports, creates findings in Jira, and notifies compliance.

naftiko: "0.5"
info:
  label: "Compliance Monitoring Automation"
  description: "Monitors regulatory compliance across operations in Snowflake, generates compliance reports, creates findings in Jira, and notifies compliance."
  tags:
    - compliance
    - snowflake
    - jira
    - powerbi
    - slack
capability:
  exposes:
    - type: mcp
      namespace: compliance
      port: 8080
      tools:
        - name: compliance_monitoring_automation
          description: "Orchestrate compliance monitoring automation workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-snowflake
              type: call
              call: "snowflake.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-jira
              type: call
              call: "jira.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: notify-servicenow
              type: call
              call: "servicenow.notify-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://allstate.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: jira-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST

Searches the Allstate claims knowledge base in Confluence for articles matching a query. Used by adjusters and customer service agents to find claim handling procedures.

naftiko: "0.5"
info:
  label: "Confluence Knowledge Base Search"
  description: "Searches the Allstate claims knowledge base in Confluence for articles matching a query. Used by adjusters and customer service agents to find claim handling procedures."
  tags:
    - knowledge-management
    - customer-service
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: knowledge-base
      port: 8080
      tools:
        - name: search-knowledge-base
          description: "Search Confluence for claims handling articles. Returns titles, excerpts, and links."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "Search query for knowledge base articles."
            - name: space_key
              in: body
              type: string
              description: "Confluence space key, e.g. 'CLAIMS', 'UNDERWRITING'."
          call: "confluence.search"
          with:
            cql: "space={{space_key}} AND text~\"{{query}}\""
          outputParameters:
            - name: results
              type: string
              mapping: "$.results"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://allstate.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_token"
      resources:
        - name: search
          path: "/search?cql={{cql}}"
          inputParameters:
            - name: cql
              in: query
          operations:
            - name: search
              method: GET

Retrieves Confluence page content for Allstate knowledge base.

naftiko: "0.5"
info:
  label: "Confluence Page Retrieval"
  description: "Retrieves Confluence page content for Allstate knowledge base."
  tags:
    - collaboration
    - confluence
    - documentation
capability:
  exposes:
    - type: mcp
      namespace: knowledge
      port: 8080
      tools:
        - name: get-page
          description: "Get page at Allstate."
          inputParameters:
            - name: page_id
              in: body
              type: string
              description: "The page_id to look up." 
          call: "confluence.get-page_id"
          with:
            page_id: "{{page_id}}"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://allstate.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: confluence_page_retrieval
              method: GET

Logs a customer contact center interaction by creating a Salesforce case, attaching the call recording from Amazon S3, and routing follow-up actions to ServiceNow.

naftiko: "0.5"
info:
  label: "Contact Center Interaction Logger"
  description: "Logs a customer contact center interaction by creating a Salesforce case, attaching the call recording from Amazon S3, and routing follow-up actions to ServiceNow."
  tags:
    - customer-service
    - contact-center
    - salesforce
    - amazon-s3
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: contact-center
      port: 8080
      tools:
        - name: log-interaction
          description: "Log a contact center interaction across Salesforce, S3, and ServiceNow."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "Salesforce customer contact ID."
            - name: interaction_type
              in: body
              type: string
              description: "Type: call, chat, email."
            - name: summary
              in: body
              type: string
              description: "Interaction summary."
            - name: recording_key
              in: body
              type: string
              description: "S3 key for call recording."
          steps:
            - name: create-case
              type: call
              call: "salesforce.create-case"
              with:
                contact_id: "{{customer_id}}"
                subject: "{{interaction_type}} interaction"
                description: "{{summary}}"
            - name: attach-recording
              type: call
              call: "s3.get-presigned-url"
              with:
                bucket: "allstate-call-recordings"
                key: "{{recording_key}}"
            - name: create-followup
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Follow-up: {{interaction_type}} with customer {{customer_id}}"
                description: "Case: {{create-case.id}}. Recording: {{attach-recording.url}}. Summary: {{summary}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case"
          operations:
            - name: create-case
              method: POST
    - type: http
      namespace: s3
      baseUri: "https://s3.amazonaws.com"
      authentication:
        type: bearer
        token: "$secrets.aws_session_token"
      resources:
        - name: presigned
          path: "/{{bucket}}/{{key}}?X-Amz-Expires=3600"
          inputParameters:
            - name: bucket
              in: path
            - name: key
              in: path
          operations:
            - name: get-presigned-url
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/sc_task"
          operations:
            - name: create-task
              method: POST

Identifies cross-sell opportunities from customer data in Snowflake, creates leads in Salesforce, prioritizes by propensity, and notifies agents.

naftiko: "0.5"
info:
  label: "Cross-Sell Opportunity Pipeline"
  description: "Identifies cross-sell opportunities from customer data in Snowflake, creates leads in Salesforce, prioritizes by propensity, and notifies agents."
  tags:
    - sales
    - snowflake
    - salesforce
    - powerbi
    - slack
capability:
  exposes:
    - type: mcp
      namespace: sales
      port: 8080
      tools:
        - name: cross_sell_opportunity_pipeline
          description: "Orchestrate cross-sell opportunity pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-snowflake
              type: call
              call: "snowflake.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-salesforce
              type: call
              call: "salesforce.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: notify-servicenow
              type: call
              call: "servicenow.notify-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST

Aggregates customer data from Salesforce CRM, Workday HR records, and ServiceNow interaction history into a unified view. Used by agents to prepare for customer calls.

naftiko: "0.5"
info:
  label: "Customer 360 Aggregator"
  description: "Aggregates customer data from Salesforce CRM, Workday HR records, and ServiceNow interaction history into a unified view. Used by agents to prepare for customer calls."
  tags:
    - customer-service
    - salesforce
    - workday
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: customer-360
      port: 8080
      tools:
        - name: build-customer-profile
          description: "Given a customer email, pull CRM data from Salesforce, employment info from Workday, and service history from ServiceNow to build a unified customer profile."
          inputParameters:
            - name: customer_email
              in: body
              type: string
              description: "The customer email address to look up across all systems."
          steps:
            - name: get-crm-record
              type: call
              call: "salesforce.get-contact"
              with:
                email: "{{customer_email}}"
            - name: get-policies
              type: call
              call: "salesforce.get-policies-by-contact"
              with:
                contact_id: "{{get-crm-record.records[0].Id}}"
            - name: get-service-history
              type: call
              call: "servicenow.list-incidents"
              with:
                caller_email: "{{customer_email}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: contacts
          path: "/query/?q=SELECT+Id,Name,Email,Phone+FROM+Contact+WHERE+Email='{{email}}'"
          inputParameters:
            - name: email
              in: query
          operations:
            - name: get-contact
              method: GET
        - name: policies
          path: "/query/?q=SELECT+Id,Policy_Number__c,Coverage_Type__c,Status__c+FROM+Policy__c+WHERE+Contact__c='{{contact_id}}'"
          inputParameters:
            - name: contact_id
              in: query
          operations:
            - name: get-policies-by-contact
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident?sysparm_query=caller_id.email={{caller_email}}"
          inputParameters:
            - name: caller_email
              in: query
          operations:
            - name: list-incidents
              method: GET

Aggregates complaints from multiple channels, analyzes trends in Snowflake, creates action items in Jira, and notifies customer experience.

naftiko: "0.5"
info:
  label: "Customer Complaint Trends Pipeline"
  description: "Aggregates complaints from multiple channels, analyzes trends in Snowflake, creates action items in Jira, and notifies customer experience."
  tags:
    - customer-experience
    - snowflake
    - jira
    - powerbi
    - slack
capability:
  exposes:
    - type: mcp
      namespace: customer-experience
      port: 8080
      tools:
        - name: customer_complaint_trends_pipeline
          description: "Orchestrate customer complaint trends pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-snowflake
              type: call
              call: "snowflake.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-jira
              type: call
              call: "jira.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: notify-servicenow
              type: call
              call: "servicenow.notify-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://allstate.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: jira-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST

Runs churn models in Snowflake, identifies at-risk customers, triggers retention actions in Salesforce, and notifies agents.

naftiko: "0.5"
info:
  label: "Customer Retention Prediction Pipeline"
  description: "Runs churn models in Snowflake, identifies at-risk customers, triggers retention actions in Salesforce, and notifies agents."
  tags:
    - retention
    - snowflake
    - salesforce
    - powerbi
    - slack
capability:
  exposes:
    - type: mcp
      namespace: retention
      port: 8080
      tools:
        - name: customer_retention_prediction_pipeline
          description: "Orchestrate customer retention prediction pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-snowflake
              type: call
              call: "snowflake.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-salesforce
              type: call
              call: "salesforce.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: notify-servicenow
              type: call
              call: "servicenow.notify-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST

Detects threats in Splunk SIEM, enriches with Datadog data, creates incidents in ServiceNow, blocks threats, and notifies SecOps.

naftiko: "0.5"
info:
  label: "Cybersecurity Incident Response Pipeline"
  description: "Detects threats in Splunk SIEM, enriches with Datadog data, creates incidents in ServiceNow, blocks threats, and notifies SecOps."
  tags:
    - security
    - splunk
    - datadog
    - servicenow
    - slack
capability:
  exposes:
    - type: mcp
      namespace: security
      port: 8080
      tools:
        - name: cybersecurity_incident_response_pipeline
          description: "Orchestrate cybersecurity incident response pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-splunk
              type: call
              call: "splunk.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-datadog
              type: call
              call: "datadog.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-servicenow
              type: call
              call: "servicenow.create-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: notify-slack
              type: call
              call: "slack.notify-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: splunk
      baseUri: "https://allstate-splunk.com/services"
      authentication:
        type: bearer
        token: "$secrets.splunk_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: splunk-op
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
        header: "DD-API-KEY" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: datadog-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST

Retrieves current health metrics for the claims processing API from Datadog monitoring, including latency percentiles, error rates, and throughput.

naftiko: "0.5"
info:
  label: "Datadog Claims API Health Check"
  description: "Retrieves current health metrics for the claims processing API from Datadog monitoring, including latency percentiles, error rates, and throughput."
  tags:
    - monitoring
    - claims-processing
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: api-monitoring
      port: 8080
      tools:
        - name: get-claims-api-health
          description: "Fetch real-time health metrics for the claims API from Datadog. Returns p95 latency and error rate."
          inputParameters:
            - name: time_range
              in: body
              type: string
              description: "Time range to query, e.g. 'last_1h', 'last_24h'."
          call: "datadog.query-metrics"
          with:
            query: "avg:trace.http.request.duration.by.service{service:claims-api}"
            from: "{{time_range}}"
          outputParameters:
            - name: p95_latency_ms
              type: string
              mapping: "$.series[0].pointlist[-1][1]"
            - name: error_rate
              type: string
              mapping: "$.series[1].pointlist[-1][1]"
  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

Retrieves Datadog monitor status for Allstate infrastructure.

naftiko: "0.5"
info:
  label: "Datadog Monitor Status"
  description: "Retrieves Datadog monitor status for Allstate infrastructure."
  tags:
    - monitoring
    - datadog
    - alerting
capability:
  exposes:
    - type: mcp
      namespace: observability
      port: 8080
      tools:
        - name: get-monitor
          description: "Check monitor at Allstate."
          inputParameters:
            - name: monitor_id
              in: body
              type: string
              description: "The monitor_id to look up." 
          call: "datadog.get-monitor_id"
          with:
            monitor_id: "{{monitor_id}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
        header: "DD-API-KEY" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: datadog_monitor_status
              method: GET

Monitors quote funnel metrics in Snowflake, identifies drop-off points, runs A/B tests, creates optimization tasks, and notifies digital team.

naftiko: "0.5"
info:
  label: "Digital Quote Funnel Optimizer"
  description: "Monitors quote funnel metrics in Snowflake, identifies drop-off points, runs A/B tests, creates optimization tasks, and notifies digital team."
  tags:
    - digital
    - snowflake
    - datadog
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: digital
      port: 8080
      tools:
        - name: digital_quote_funnel_optimizer
          description: "Orchestrate digital quote funnel optimizer workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-snowflake
              type: call
              call: "snowflake.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-datadog
              type: call
              call: "datadog.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-jira
              type: call
              call: "jira.create-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: notify-slack
              type: call
              call: "slack.notify-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
        header: "DD-API-KEY" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: datadog-op
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://allstate.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: jira-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST

Searches the claims data index in Elasticsearch by policy number, date range, or claim type. Used by analysts and adjusters for claims research.

naftiko: "0.5"
info:
  label: "Elasticsearch Claims Search"
  description: "Searches the claims data index in Elasticsearch by policy number, date range, or claim type. Used by analysts and adjusters for claims research."
  tags:
    - search
    - claims-processing
    - elasticsearch
capability:
  exposes:
    - type: mcp
      namespace: claims-search
      port: 8080
      tools:
        - name: search-claims
          description: "Search the Elasticsearch claims index. Returns matching claim documents with scores."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "Elasticsearch query string."
            - name: index
              in: body
              type: string
              description: "Index name, default 'claims-2026'."
          call: "elasticsearch.search"
          with:
            index: "{{index}}"
            q: "{{query}}"
          outputParameters:
            - name: total_hits
              type: string
              mapping: "$.hits.total.value"
            - name: results
              type: string
              mapping: "$.hits.hits"
  consumes:
    - type: http
      namespace: elasticsearch
      baseUri: "https://allstate-es.es.eastus2.azure.elastic-cloud.com"
      authentication:
        type: basic
        username: "$secrets.es_user"
        password: "$secrets.es_password"
      resources:
        - name: search
          path: "/{{index}}/_search"
          inputParameters:
            - name: index
              in: path
          operations:
            - name: search
              method: GET

Searches Elasticsearch indexes for Allstate.

naftiko: "0.5"
info:
  label: "Elasticsearch Log Query"
  description: "Searches Elasticsearch indexes for Allstate."
  tags:
    - data
    - elasticsearch
    - search
capability:
  exposes:
    - type: mcp
      namespace: search
      port: 8080
      tools:
        - name: search-logs
          description: "Search ES logs at Allstate."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "The query to look up." 
          call: "elasticsearch.get-query"
          with:
            query: "{{query}}"
  consumes:
    - type: http
      namespace: elasticsearch
      baseUri: "https://allstate-es.com:9200"
      authentication:
        type: bearer
        token: "$secrets.elasticsearch_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: elasticsearch_log_query
              method: GET

Analyzes benefits utilization from Workday, models optimization scenarios in Snowflake, generates recommendations, and notifies HR.

naftiko: "0.5"
info:
  label: "Employee Benefits Optimization Pipeline"
  description: "Analyzes benefits utilization from Workday, models optimization scenarios in Snowflake, generates recommendations, and notifies HR."
  tags:
    - hr
    - workday
    - snowflake
    - powerbi
    - slack
capability:
  exposes:
    - type: mcp
      namespace: hr
      port: 8080
      tools:
        - name: employee_benefits_optimization_pipeline
          description: "Orchestrate employee benefits optimization pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-workday
              type: call
              call: "workday.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-snowflake
              type: call
              call: "snowflake.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: notify-servicenow
              type: call
              call: "servicenow.notify-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/allstate"
      authentication:
        type: bearer
        token: "$secrets.workday_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: workday-op
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST

On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint document folder, and sends a Microsoft Teams welcome message to the new employee.

naftiko: "0.5"
info:
  label: "Employee Onboarding Orchestrator"
  description: "On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint document folder, and sends a Microsoft Teams welcome message to the new employee."
  tags:
    - hr
    - onboarding
    - workday
    - servicenow
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: hr-onboarding
      port: 8080
      tools:
        - name: trigger-onboarding
          description: "Given a Workday employee ID and start date, orchestrate the full onboarding sequence across ServiceNow, SharePoint, and Microsoft Teams."
          inputParameters:
            - name: workday_employee_id
              in: body
              type: string
              description: "The Workday worker ID for the new hire."
            - name: start_date
              in: body
              type: string
              description: "The employee start date in YYYY-MM-DD format."
            - name: department
              in: body
              type: string
              description: "Department the new hire is joining."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{workday_employee_id}}"
            - name: open-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "New hire onboarding: {{get-employee.full_name}}"
                category: "hr_onboarding"
                assigned_group: "IT_Onboarding"
            - name: provision-folder
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "hr_onboarding_site"
                folder_path: "OnboardingDocs/{{get-employee.full_name}}_{{start_date}}"
            - name: send-welcome
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "{{department}}-general"
                text: "Welcome to Allstate, {{get-employee.first_name}}! Your IT ticket is {{open-ticket.number}}. Documents: {{provision-folder.url}}"
  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: servicenow
      baseUri: "https://allstate.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: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{folder_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: create-folder
              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/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Processes an adjuster expense by submitting to SAP Concur, validating against Oracle budget, and sending approval notification via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Expense Reimbursement Pipeline"
  description: "Processes an adjuster expense by submitting to SAP Concur, validating against Oracle budget, and sending approval notification via Microsoft Teams."
  tags:
    - expense-management
    - claims-processing
    - sap-concur
    - oracle
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: expense-pipeline
      port: 8080
      tools:
        - name: process-adjuster-expense
          description: "Submit and validate an adjuster expense through SAP Concur and Oracle, then notify via Teams."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "Employee ID of the adjuster."
            - name: amount
              in: body
              type: string
              description: "Expense amount in USD."
            - name: claim_number
              in: body
              type: string
              description: "Related claim number."
          steps:
            - name: submit-expense
              type: call
              call: "concur.create-report"
              with:
                employee_id: "{{employee_id}}"
                report_name: "Claim {{claim_number}} Expense"
                total_amount: "{{amount}}"
            - name: validate-budget
              type: call
              call: "oracle.check-budget"
              with:
                cost_center: "claims_operations"
                amount: "{{amount}}"
            - name: notify-approver
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "claims-management"
                text: "Expense submitted: ${{amount}} for claim {{claim_number}} by {{employee_id}}. Budget status: {{validate-budget.status}}. Concur report: {{submit-expense.ID}}."
  consumes:
    - type: http
      namespace: concur
      baseUri: "https://us.api.concursolutions.com/api/v3.0"
      authentication:
        type: bearer
        token: "$secrets.concur_token"
      resources:
        - name: expense-reports
          path: "/expense/reports"
          operations:
            - name: create-report
              method: POST
    - type: http
      namespace: oracle
      baseUri: "https://allstate-ebs.oracle.com/webservices/rest/v1"
      authentication:
        type: basic
        username: "$secrets.oracle_user"
        password: "$secrets.oracle_password"
      resources:
        - name: budget
          path: "/budget/check"
          operations:
            - name: check-budget
              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/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

When a claim is flagged, pulls claim details from ServiceNow, runs predictive fraud scoring via Azure Machine Learning, logs results in Splunk, and escalates suspicious claims to the SIU team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Fraud Detection Pipeline"
  description: "When a claim is flagged, pulls claim details from ServiceNow, runs predictive fraud scoring via Azure Machine Learning, logs results in Splunk, and escalates suspicious claims to the SIU team in Microsoft Teams."
  tags:
    - fraud-detection
    - claims-processing
    - servicenow
    - azure-machine-learning
    - splunk
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: fraud-detection
      port: 8080
      tools:
        - name: evaluate-claim-fraud
          description: "Given a claim number, evaluate fraud risk by pulling claim details, running ML scoring, logging results, and escalating if risk exceeds threshold."
          inputParameters:
            - name: claim_number
              in: body
              type: string
              description: "The ServiceNow claim incident number."
            - name: risk_threshold
              in: body
              type: string
              description: "Fraud score threshold (0-100) above which to escalate."
          steps:
            - name: get-claim
              type: call
              call: "servicenow.get-incident"
              with:
                number: "{{claim_number}}"
            - name: score-fraud
              type: call
              call: "azureml.score"
              with:
                model_name: "claims-fraud-detector-v3"
                input_data: "{{get-claim.result}}"
            - name: log-score
              type: call
              call: "splunk.create-event"
              with:
                index: "fraud_scores"
                event: "claim={{claim_number}} score={{score-fraud.prediction}} model=claims-fraud-detector-v3"
            - name: escalate-siu
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "siu-investigations"
                text: "FRAUD ALERT: Claim {{claim_number}} scored {{score-fraud.prediction}}/100. Policyholder: {{get-claim.result.caller_id}}. Review required."
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.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: azureml
      baseUri: "https://allstate-fraud-ml.eastus2.inference.ml.azure.com"
      authentication:
        type: bearer
        token: "$secrets.azureml_token"
      resources:
        - name: scoring
          path: "/score"
          operations:
            - name: score
              method: POST
    - type: http
      namespace: splunk
      baseUri: "https://allstate-splunk.splunkcloud.com:8089/services"
      authentication:
        type: bearer
        token: "$secrets.splunk_token"
      resources:
        - name: events
          path: "/receivers/simple"
          operations:
            - name: create-event
              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/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Runs network analysis on claims data in Snowflake, identifies fraud rings, creates SIU investigation cases in ServiceNow, and notifies fraud team.

naftiko: "0.5"
info:
  label: "Fraud Ring Detection Pipeline"
  description: "Runs network analysis on claims data in Snowflake, identifies fraud rings, creates SIU investigation cases in ServiceNow, and notifies fraud team."
  tags:
    - fraud
    - snowflake
    - servicenow
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: fraud
      port: 8080
      tools:
        - name: fraud_ring_detection_pipeline
          description: "Orchestrate fraud ring detection pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-snowflake
              type: call
              call: "snowflake.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-servicenow
              type: call
              call: "servicenow.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-jira
              type: call
              call: "jira.create-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: notify-slack
              type: call
              call: "slack.notify-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://allstate.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: jira-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST

Retrieves GitHub repository metadata for Allstate.

naftiko: "0.5"
info:
  label: "GitHub Repository Lookup"
  description: "Retrieves GitHub repository metadata for Allstate."
  tags:
    - devops
    - github
    - source-control
capability:
  exposes:
    - type: mcp
      namespace: engineering
      port: 8080
      tools:
        - name: get-repo
          description: "Look up repo at Allstate."
          inputParameters:
            - name: repo_name
              in: body
              type: string
              description: "The repo_name to look up." 
          call: "github.get-repo_name"
          with:
            repo_name: "{{repo_name}}"
  consumes:
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: github_repository_lookup
              method: GET

Queries Grafana dashboard data for Allstate monitoring.

naftiko: "0.5"
info:
  label: "Grafana Dashboard Query"
  description: "Queries Grafana dashboard data for Allstate monitoring."
  tags:
    - monitoring
    - grafana
    - dashboards
capability:
  exposes:
    - type: mcp
      namespace: monitoring
      port: 8080
      tools:
        - name: get-dashboard
          description: "Query dashboard at Allstate."
          inputParameters:
            - name: dashboard_uid
              in: body
              type: string
              description: "The dashboard_uid to look up." 
          call: "grafana.get-dashboard_uid"
          with:
            dashboard_uid: "{{dashboard_uid}}"
  consumes:
    - type: http
      namespace: grafana
      baseUri: "https://allstate-grafana.com/api"
      authentication:
        type: bearer
        token: "$secrets.grafana_api_key" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: grafana_dashboard_query
              method: GET

Retrieves a secret from Hashicorp Vault for use in claims processing pipelines. Used by DevOps teams to securely access API keys and credentials.

naftiko: "0.5"
info:
  label: "Hashicorp Vault Secret Retrieval"
  description: "Retrieves a secret from Hashicorp Vault for use in claims processing pipelines. Used by DevOps teams to securely access API keys and credentials."
  tags:
    - security
    - secrets-management
    - hashicorp-vault
capability:
  exposes:
    - type: mcp
      namespace: secrets
      port: 8080
      tools:
        - name: get-secret
          description: "Retrieve a secret from Hashicorp Vault by path. Returns the secret data."
          inputParameters:
            - name: secret_path
              in: body
              type: string
              description: "Vault secret path, e.g. 'claims/api-keys/audatex'."
            - name: mount
              in: body
              type: string
              description: "Vault secrets engine mount, default 'kv'."
          call: "vault.read-secret"
          with:
            path: "{{secret_path}}"
            mount: "{{mount}}"
  consumes:
    - type: http
      namespace: vault
      baseUri: "https://vault.corp.allstate.com/v1"
      authentication:
        type: bearer
        token: "$secrets.vault_token"
      resources:
        - name: secrets
          path: "/{{mount}}/data/{{path}}"
          inputParameters:
            - name: mount
              in: path
            - name: path
              in: path
          operations:
            - name: read-secret
              method: GET

Schedules a property inspection by looking up the policy in Salesforce, creating an inspection task in ServiceNow, geocoding the property address via Google Maps, and notifying the inspector via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Homeowner Inspection Orchestrator"
  description: "Schedules a property inspection by looking up the policy in Salesforce, creating an inspection task in ServiceNow, geocoding the property address via Google Maps, and notifying the inspector via Microsoft Teams."
  tags:
    - inspections
    - home-insurance
    - salesforce
    - servicenow
    - google-maps
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: property-inspections
      port: 8080
      tools:
        - name: schedule-inspection
          description: "Schedule a homeowner property inspection by orchestrating across Salesforce, ServiceNow, Google Maps, and Teams."
          inputParameters:
            - name: policy_number
              in: body
              type: string
              description: "The homeowner policy number."
            - name: inspection_type
              in: body
              type: string
              description: "Type of inspection: initial, renewal, or claim."
            - name: preferred_date
              in: body
              type: string
              description: "Preferred inspection date in YYYY-MM-DD format."
          steps:
            - name: get-policy
              type: call
              call: "salesforce.get-policy"
              with:
                policy_number: "{{policy_number}}"
            - name: geocode-property
              type: call
              call: "googlemaps.geocode"
              with:
                address: "{{get-policy.records[0].Property_Address__c}}"
            - name: create-inspection
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Property inspection: {{policy_number}} - {{inspection_type}}"
                assignment_group: "Field_Inspectors"
                scheduled_date: "{{preferred_date}}"
            - name: notify-inspector
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "field-inspectors"
                text: "New {{inspection_type}} inspection for {{preferred_date}}. Policy: {{policy_number}}. Address: {{geocode-property.results[0].formatted_address}}. Task: {{create-inspection.number}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: policy-query
          path: "/query/?q=SELECT+Id,Policy_Number__c,Property_Address__c+FROM+Policy__c+WHERE+Policy_Number__c='{{policy_number}}'"
          inputParameters:
            - name: policy_number
              in: query
          operations:
            - name: get-policy
              method: GET
    - type: http
      namespace: googlemaps
      baseUri: "https://maps.googleapis.com/maps/api"
      authentication:
        type: apiKey
        key: "$secrets.google_maps_key"
      resources:
        - name: geocode
          path: "/geocode/json?address={{address}}"
          inputParameters:
            - name: address
              in: query
          operations:
            - name: geocode
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/sc_task"
          operations:
            - name: create-task
              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/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Orchestrates a security incident response by creating a Splunk search, opening a ServiceNow security incident, blocking suspicious IPs via Palo Alto, and alerting the SOC team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Incident Response Orchestrator"
  description: "Orchestrates a security incident response by creating a Splunk search, opening a ServiceNow security incident, blocking suspicious IPs via Palo Alto, and alerting the SOC team in Microsoft Teams."
  tags:
    - security
    - incident-response
    - splunk
    - servicenow
    - palo-alto-networks
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: incident-response
      port: 8080
      tools:
        - name: respond-to-incident
          description: "Orchestrate a security incident response across Splunk, ServiceNow, Palo Alto, and Teams."
          inputParameters:
            - name: suspicious_ip
              in: body
              type: string
              description: "The suspicious source IP address."
            - name: incident_description
              in: body
              type: string
              description: "Description of the security incident."
            - name: severity
              in: body
              type: string
              description: "Severity: critical, high, medium, low."
          steps:
            - name: search-activity
              type: call
              call: "splunk.search"
              with:
                search: "search src_ip={{suspicious_ip}} earliest=-24h"
            - name: create-sec-incident
              type: call
              call: "servicenow.create-security-incident"
              with:
                short_description: "Security incident: {{incident_description}}"
                severity: "{{severity}}"
                source_ip: "{{suspicious_ip}}"
            - name: block-ip
              type: call
              call: "paloalto.block-ip"
              with:
                ip: "{{suspicious_ip}}"
                rule_name: "auto-block-{{create-sec-incident.number}}"
            - name: alert-soc
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "soc-alerts"
                text: "SECURITY INCIDENT: {{incident_description}}. Severity: {{severity}}. IP {{suspicious_ip}} blocked. Incident: {{create-sec-incident.number}}."
  consumes:
    - type: http
      namespace: splunk
      baseUri: "https://allstate-splunk.splunkcloud.com:8089/services"
      authentication:
        type: bearer
        token: "$secrets.splunk_token"
      resources:
        - name: search-jobs
          path: "/search/jobs"
          operations:
            - name: search
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: security-incidents
          path: "/table/sn_si_incident"
          operations:
            - name: create-security-incident
              method: POST
    - type: http
      namespace: paloalto
      baseUri: "https://allstate-fw.paloaltonetworks.com/restapi/v10.2"
      authentication:
        type: apiKey
        key: "$secrets.paloalto_api_key"
      resources:
        - name: security-rules
          path: "/Policies/SecurityRules"
          operations:
            - name: block-ip
              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/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Detects infrastructure drift by running a Terraform plan, comparing with Datadog monitored state, and creating an Azure DevOps work item for remediation.

naftiko: "0.5"
info:
  label: "Infrastructure Drift Detection"
  description: "Detects infrastructure drift by running a Terraform plan, comparing with Datadog monitored state, and creating an Azure DevOps work item for remediation."
  tags:
    - infrastructure
    - compliance
    - terraform
    - datadog
    - azure-devops
capability:
  exposes:
    - type: mcp
      namespace: infra-compliance
      port: 8080
      tools:
        - name: detect-drift
          description: "Run drift detection across Terraform, Datadog, and create a remediation ticket in Azure DevOps."
          inputParameters:
            - name: workspace_id
              in: body
              type: string
              description: "Terraform Cloud workspace ID."
            - name: environment
              in: body
              type: string
              description: "Environment: dev, staging, production."
          steps:
            - name: run-plan
              type: call
              call: "terraform.create-run"
              with:
                workspace_id: "{{workspace_id}}"
                message: "Drift detection for {{environment}}"
            - name: check-monitoring
              type: call
              call: "datadog.query-metrics"
              with:
                query: "avg:system.cpu.idle{env:{{environment}}}"
                from: "last_1h"
            - name: create-ticket
              type: call
              call: "azuredevops.create-work-item"
              with:
                project: "InfraOps"
                type: "Bug"
                title: "Infrastructure drift detected in {{environment}}"
                description: "Terraform plan status: {{run-plan.data.attributes.status}}. Monitoring check: {{check-monitoring.series[0].pointlist[-1][1]}}."
  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: 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: azuredevops
      baseUri: "https://dev.azure.com/allstate"
      authentication:
        type: basic
        username: ""
        password: "$secrets.azuredevops_pat"
      resources:
        - name: work-items
          path: "/{{project}}/_apis/wit/workitems/${{type}}?api-version=7.0"
          inputParameters:
            - name: project
              in: path
            - name: type
              in: path
          operations:
            - name: create-work-item
              method: POST

Configures new product in Salesforce, sets up rating algorithms in Snowflake, creates marketing materials, and notifies distribution.

naftiko: "0.5"
info:
  label: "Insurance Product Launch Pipeline"
  description: "Configures new product in Salesforce, sets up rating algorithms in Snowflake, creates marketing materials, and notifies distribution."
  tags:
    - product-launch
    - salesforce
    - snowflake
    - servicenow
    - slack
capability:
  exposes:
    - type: mcp
      namespace: product-launch
      port: 8080
      tools:
        - name: insurance_product_launch_pipeline
          description: "Orchestrate insurance product launch pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-salesforce
              type: call
              call: "salesforce.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-snowflake
              type: call
              call: "snowflake.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-servicenow
              type: call
              call: "servicenow.create-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: notify-slack
              type: call
              call: "slack.notify-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce-op
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST

Initiates DR test, validates system failover, checks data integrity in Snowflake, generates test report, and notifies IT leadership.

naftiko: "0.5"
info:
  label: "IT Disaster Recovery Test Pipeline"
  description: "Initiates DR test, validates system failover, checks data integrity in Snowflake, generates test report, and notifies IT leadership."
  tags:
    - disaster-recovery
    - snowflake
    - servicenow
    - datadog
    - slack
capability:
  exposes:
    - type: mcp
      namespace: disaster-recovery
      port: 8080
      tools:
        - name: it_disaster_recovery_test_pipeline
          description: "Orchestrate it disaster recovery test pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-snowflake
              type: call
              call: "snowflake.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-servicenow
              type: call
              call: "servicenow.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-datadog
              type: call
              call: "datadog.create-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: notify-slack
              type: call
              call: "slack.notify-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
        header: "DD-API-KEY" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: datadog-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST

Retrieves Jira issue status for Allstate engineering teams.

naftiko: "0.5"
info:
  label: "Jira Issue Status"
  description: "Retrieves Jira issue status for Allstate engineering teams."
  tags:
    - devops
    - jira
    - project-management
capability:
  exposes:
    - type: mcp
      namespace: engineering
      port: 8080
      tools:
        - name: get-issue
          description: "Look up Jira issue at Allstate."
          inputParameters:
            - name: issue_key
              in: body
              type: string
              description: "The issue_key to look up." 
          call: "jira.get-issue_key"
          with:
            issue_key: "{{issue_key}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://allstate.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: jira_issue_status
              method: GET

Replays claim events from Apache Kafka, indexes them in Elasticsearch for audit, and logs the replay summary in Splunk for compliance tracking.

naftiko: "0.5"
info:
  label: "Kafka Event Replay and Audit"
  description: "Replays claim events from Apache Kafka, indexes them in Elasticsearch for audit, and logs the replay summary in Splunk for compliance tracking."
  tags:
    - audit
    - compliance
    - apache-kafka
    - elasticsearch
    - splunk
capability:
  exposes:
    - type: mcp
      namespace: event-audit
      port: 8080
      tools:
        - name: replay-and-audit-events
          description: "Replay claim events from Kafka, index in Elasticsearch, and log in Splunk for audit compliance."
          inputParameters:
            - name: topic
              in: body
              type: string
              description: "Kafka topic to replay from."
            - name: start_offset
              in: body
              type: string
              description: "Starting offset for replay."
            - name: end_offset
              in: body
              type: string
              description: "Ending offset for replay."
          steps:
            - name: consume-events
              type: call
              call: "kafka.consume"
              with:
                topic: "{{topic}}"
                offset_start: "{{start_offset}}"
                offset_end: "{{end_offset}}"
            - name: index-for-audit
              type: call
              call: "elasticsearch.bulk-index"
              with:
                index: "claims-audit-{{topic}}"
                body: "{{consume-events.records}}"
            - name: log-replay
              type: call
              call: "splunk.create-event"
              with:
                index: "audit_trail"
                event: "topic={{topic}} start={{start_offset}} end={{end_offset}} records={{consume-events.count}}"
  consumes:
    - type: http
      namespace: kafka
      baseUri: "https://allstate-kafka-rest.corp.allstate.com/v3"
      authentication:
        type: basic
        username: "$secrets.kafka_user"
        password: "$secrets.kafka_password"
      resources:
        - name: records
          path: "/clusters/allstate-prod/topics/{{topic}}/records"
          inputParameters:
            - name: topic
              in: path
          operations:
            - name: consume
              method: GET
    - type: http
      namespace: elasticsearch
      baseUri: "https://allstate-es.es.eastus2.azure.elastic-cloud.com"
      authentication:
        type: basic
        username: "$secrets.es_user"
        password: "$secrets.es_password"
      resources:
        - name: bulk
          path: "/{{index}}/_bulk"
          inputParameters:
            - name: index
              in: path
          operations:
            - name: bulk-index
              method: POST
    - type: http
      namespace: splunk
      baseUri: "https://allstate-splunk.splunkcloud.com:8089/services"
      authentication:
        type: bearer
        token: "$secrets.splunk_token"
      resources:
        - name: events
          path: "/receivers/simple"
          operations:
            - name: create-event
              method: POST

Calculates loss ratios by line of business in Snowflake, identifies deteriorating segments, creates action plans, and notifies management.

naftiko: "0.5"
info:
  label: "Loss Ratio Monitoring Pipeline"
  description: "Calculates loss ratios by line of business in Snowflake, identifies deteriorating segments, creates action plans, and notifies management."
  tags:
    - actuarial
    - snowflake
    - powerbi
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: actuarial
      port: 8080
      tools:
        - name: loss_ratio_monitoring_pipeline
          description: "Orchestrate loss ratio monitoring pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-snowflake
              type: call
              call: "snowflake.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-jira
              type: call
              call: "jira.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: notify-servicenow
              type: call
              call: "servicenow.notify-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://allstate.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: jira-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST

Collects marketing touchpoints from Salesforce, runs attribution models in Snowflake, calculates ROI, updates Power BI, and notifies marketing.

naftiko: "0.5"
info:
  label: "Marketing Attribution Pipeline"
  description: "Collects marketing touchpoints from Salesforce, runs attribution models in Snowflake, calculates ROI, updates Power BI, and notifies marketing."
  tags:
    - marketing
    - salesforce
    - snowflake
    - powerbi
    - slack
capability:
  exposes:
    - type: mcp
      namespace: marketing
      port: 8080
      tools:
        - name: marketing_attribution_pipeline
          description: "Orchestrate marketing attribution pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-salesforce
              type: call
              call: "salesforce.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-snowflake
              type: call
              call: "snowflake.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: notify-servicenow
              type: call
              call: "servicenow.notify-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce-op
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST

Launches an insurance marketing campaign by creating the campaign in HubSpot, generating ad copy via OpenAI, tracking in Google Analytics, and notifying the marketing team.

naftiko: "0.5"
info:
  label: "Marketing Campaign Launcher"
  description: "Launches an insurance marketing campaign by creating the campaign in HubSpot, generating ad copy via OpenAI, tracking in Google Analytics, and notifying the marketing team."
  tags:
    - marketing
    - campaigns
    - hubspot
    - openai
    - google-analytics
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: marketing-campaigns
      port: 8080
      tools:
        - name: launch-campaign
          description: "Launch a marketing campaign across HubSpot, OpenAI, and Google Analytics with team notification."
          inputParameters:
            - name: campaign_name
              in: body
              type: string
              description: "Campaign name."
            - name: target_audience
              in: body
              type: string
              description: "Target audience segment."
            - name: product_line
              in: body
              type: string
              description: "Insurance product: auto, home, life, renters."
          steps:
            - name: generate-copy
              type: call
              call: "openai.create-completion"
              with:
                model: "gpt-4o"
                prompt: "Write compelling ad copy for Allstate {{product_line}} insurance targeting {{target_audience}}. Include a call to action."
            - name: create-campaign
              type: call
              call: "hubspot.create-campaign"
              with:
                name: "{{campaign_name}}"
                content: "{{generate-copy.choices[0].text}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "marketing-team"
                text: "Campaign '{{campaign_name}}' launched targeting {{target_audience}} for {{product_line}}. HubSpot ID: {{create-campaign.id}}."
  consumes:
    - type: http
      namespace: openai
      baseUri: "https://api.openai.com/v1"
      authentication:
        type: bearer
        token: "$secrets.openai_api_key"
      resources:
        - name: completions
          path: "/chat/completions"
          operations:
            - name: create-completion
              method: POST
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: campaigns
          path: "/marketing/v3/campaigns"
          operations:
            - name: create-campaign
              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/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Queries Microsoft Sentinel for active security alerts related to Allstate's insurance platform infrastructure. Returns severity, status, and affected resources.

naftiko: "0.5"
info:
  label: "Microsoft Sentinel Threat Detection"
  description: "Queries Microsoft Sentinel for active security alerts related to Allstate's insurance platform infrastructure. Returns severity, status, and affected resources."
  tags:
    - security
    - threat-detection
    - microsoft-sentinel
capability:
  exposes:
    - type: mcp
      namespace: threat-detection
      port: 8080
      tools:
        - name: get-active-alerts
          description: "Fetch active security alerts from Microsoft Sentinel. Returns alert name, severity, and affected entities."
          inputParameters:
            - name: severity_filter
              in: body
              type: string
              description: "Filter by severity: High, Medium, Low, or Informational."
          call: "sentinel.list-alerts"
          with:
            filter: "properties/severity eq '{{severity_filter}}' and properties/status eq 'New'"
          outputParameters:
            - name: alerts
              type: string
              mapping: "$.value"
  consumes:
    - type: http
      namespace: sentinel
      baseUri: "https://management.azure.com/subscriptions/$secrets.azure_subscription_id/resourceGroups/allstate-security/providers/Microsoft.SecurityInsights"
      authentication:
        type: bearer
        token: "$secrets.azure_token"
      resources:
        - name: alerts
          path: "/alerts?api-version=2023-11-01"
          operations:
            - name: list-alerts
              method: GET

Retrieves a credit risk assessment from Moody's for a commercial insurance applicant by company identifier. Used by commercial lines underwriters.

naftiko: "0.5"
info:
  label: "Moody's Credit Risk Assessment"
  description: "Retrieves a credit risk assessment from Moody's for a commercial insurance applicant by company identifier. Used by commercial lines underwriters."
  tags:
    - underwriting
    - risk-assessment
    - moodys
    - commercial-insurance
capability:
  exposes:
    - type: mcp
      namespace: credit-risk
      port: 8080
      tools:
        - name: get-credit-risk
          description: "Look up a company credit risk rating from Moody's. Returns rating, outlook, and probability of default."
          inputParameters:
            - name: company_id
              in: body
              type: string
              description: "Moody's company identifier or DUNS number."
          call: "moodys.get-rating"
          with:
            company_id: "{{company_id}}"
          outputParameters:
            - name: rating
              type: string
              mapping: "$.rating.currentRating"
            - name: outlook
              type: string
              mapping: "$.rating.outlook"
            - name: probability_of_default
              type: string
              mapping: "$.rating.probabilityOfDefault"
  consumes:
    - type: http
      namespace: moodys
      baseUri: "https://api.economy.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_key"
      resources:
        - name: ratings
          path: "/ratings/{{company_id}}"
          inputParameters:
            - name: company_id
              in: path
          operations:
            - name: get-rating
              method: GET

Retrieves Okta user profile for Allstate identity management.

naftiko: "0.5"
info:
  label: "Okta User Profile Lookup"
  description: "Retrieves Okta user profile for Allstate identity management."
  tags:
    - security
    - okta
    - identity
capability:
  exposes:
    - type: mcp
      namespace: identity
      port: 8080
      tools:
        - name: get-user
          description: "Look up user at Allstate."
          inputParameters:
            - name: user_email
              in: body
              type: string
              description: "The user_email to look up." 
          call: "okta.get-user_email"
          with:
            user_email: "{{user_email}}"
  consumes:
    - type: http
      namespace: okta
      baseUri: "https://allstate.okta.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.okta_api_token"
        header: "Authorization" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: okta_user_profile_lookup
              method: GET

Retrieves PagerDuty incident details for Allstate on-call teams.

naftiko: "0.5"
info:
  label: "PagerDuty Incident Details"
  description: "Retrieves PagerDuty incident details for Allstate on-call teams."
  tags:
    - devops
    - pagerduty
    - on-call
capability:
  exposes:
    - type: mcp
      namespace: incident-mgmt
      port: 8080
      tools:
        - name: get-incident
          description: "Look up incident at Allstate."
          inputParameters:
            - name: incident_id
              in: body
              type: string
              description: "The incident_id to look up." 
          call: "pagerduty.get-incident_id"
          with:
            incident_id: "{{incident_id}}"
  consumes:
    - type: http
      namespace: pagerduty
      baseUri: "https://api.pagerduty.com"
      authentication:
        type: bearer
        token: "$secrets.pagerduty_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: pagerduty_incident_details
              method: GET

Processes a policy cancellation by retrieving the policy from Salesforce, calculating prorated refund via Oracle financials, issuing payment via Mastercard, and sending confirmation via Microsoft Outlook.

naftiko: "0.5"
info:
  label: "Policy Cancellation Processor"
  description: "Processes a policy cancellation by retrieving the policy from Salesforce, calculating prorated refund via Oracle financials, issuing payment via Mastercard, and sending confirmation via Microsoft Outlook."
  tags:
    - policy-management
    - cancellations
    - salesforce
    - oracle
    - mastercard
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: policy-cancellation
      port: 8080
      tools:
        - name: cancel-policy
          description: "Process a policy cancellation with prorated refund calculation and payment."
          inputParameters:
            - name: policy_number
              in: body
              type: string
              description: "The policy number to cancel."
            - name: cancellation_date
              in: body
              type: string
              description: "Effective cancellation date in YYYY-MM-DD format."
            - name: reason
              in: body
              type: string
              description: "Cancellation reason code."
          steps:
            - name: get-policy
              type: call
              call: "salesforce.get-policy"
              with:
                policy_number: "{{policy_number}}"
            - name: calculate-refund
              type: call
              call: "oracle.calculate-prorated-refund"
              with:
                premium: "{{get-policy.records[0].Annual_Premium__c}}"
                effective_date: "{{get-policy.records[0].Effective_Date__c}}"
                cancellation_date: "{{cancellation_date}}"
            - name: issue-refund
              type: call
              call: "mastercard.initiate-payment"
              with:
                amount: "{{calculate-refund.refund_amount}}"
                recipient_id: "{{get-policy.records[0].Contact__c}}"
            - name: send-confirmation
              type: call
              call: "outlook.send-mail"
              with:
                to: "{{get-policy.records[0].Policyholder_Email__c}}"
                subject: "Policy {{policy_number}} Cancellation Confirmation"
                body: "Your policy has been cancelled effective {{cancellation_date}}. Refund of ${{calculate-refund.refund_amount}} will be processed within 5-7 business days."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: policy-query
          path: "/query/?q=SELECT+Id,Policy_Number__c,Annual_Premium__c,Effective_Date__c,Policyholder_Email__c,Contact__c+FROM+Policy__c+WHERE+Policy_Number__c='{{policy_number}}'"
          inputParameters:
            - name: policy_number
              in: query
          operations:
            - name: get-policy
              method: GET
    - type: http
      namespace: oracle
      baseUri: "https://allstate-ebs.oracle.com/webservices/rest/v1"
      authentication:
        type: basic
        username: "$secrets.oracle_user"
        password: "$secrets.oracle_password"
      resources:
        - name: refund-calculator
          path: "/billing/prorated-refund"
          operations:
            - name: calculate-prorated-refund
              method: POST
    - type: http
      namespace: mastercard
      baseUri: "https://api.mastercard.com/disbursements/v1"
      authentication:
        type: bearer
        token: "$secrets.mastercard_api_key"
      resources:
        - name: payments
          path: "/payments"
          operations:
            - name: initiate-payment
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/me/sendMail"
          operations:
            - name: send-mail
              method: POST

Generates policy documents from template data, validates content, stores in SharePoint, delivers to policyholder, and logs in ServiceNow.

naftiko: "0.5"
info:
  label: "Policy Document Generation Pipeline"
  description: "Generates policy documents from template data, validates content, stores in SharePoint, delivers to policyholder, and logs in ServiceNow."
  tags:
    - document-mgmt
    - servicenow
    - salesforce
    - powerbi
    - slack
capability:
  exposes:
    - type: mcp
      namespace: document-mgmt
      port: 8080
      tools:
        - name: policy_document_generation_pipeline
          description: "Orchestrate policy document generation pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-servicenow
              type: call
              call: "servicenow.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-salesforce
              type: call
              call: "salesforce.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST

Identifies at-risk policies in Snowflake, triggers retention campaigns in Salesforce, sends notifications, and notifies retention team.

naftiko: "0.5"
info:
  label: "Policy Lapse Prevention Pipeline"
  description: "Identifies at-risk policies in Snowflake, triggers retention campaigns in Salesforce, sends notifications, and notifies retention team."
  tags:
    - retention
    - snowflake
    - salesforce
    - servicenow
    - slack
capability:
  exposes:
    - type: mcp
      namespace: retention
      port: 8080
      tools:
        - name: policy_lapse_prevention_pipeline
          description: "Orchestrate policy lapse prevention pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-snowflake
              type: call
              call: "snowflake.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-salesforce
              type: call
              call: "salesforce.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-servicenow
              type: call
              call: "servicenow.create-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: notify-slack
              type: call
              call: "slack.notify-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST

Retrieves an Allstate insurance policy by policy number from the Salesforce policy administration system, returning coverage details, premium, and policyholder information.

naftiko: "0.5"
info:
  label: "Policy Lookup"
  description: "Retrieves an Allstate insurance policy by policy number from the Salesforce policy administration system, returning coverage details, premium, and policyholder information."
  tags:
    - policy-management
    - salesforce
    - insurance
capability:
  exposes:
    - type: mcp
      namespace: policy-admin
      port: 8080
      tools:
        - name: get-policy
          description: "Look up an insurance policy by policy number. Returns coverage type, premium amount, effective dates, and policyholder name."
          inputParameters:
            - name: policy_number
              in: body
              type: string
              description: "The Allstate policy number."
          call: "salesforce.get-policy"
          with:
            policy_number: "{{policy_number}}"
          outputParameters:
            - name: coverage_type
              type: string
              mapping: "$.records[0].Coverage_Type__c"
            - name: premium
              type: string
              mapping: "$.records[0].Annual_Premium__c"
            - name: effective_date
              type: string
              mapping: "$.records[0].Effective_Date__c"
            - name: policyholder_name
              type: string
              mapping: "$.records[0].Policyholder_Name__c"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: policies
          path: "/query/?q=SELECT+Id,Coverage_Type__c,Annual_Premium__c,Effective_Date__c,Policyholder_Name__c+FROM+Policy__c+WHERE+Policy_Number__c='{{policy_number}}'"
          inputParameters:
            - name: policy_number
              in: query
          operations:
            - name: get-policy
              method: GET

Automates policy renewal by pulling expiring policies from Salesforce, recalculating premium via the underwriting ML model, generating a renewal quote, and emailing the policyholder via Microsoft Outlook.

naftiko: "0.5"
info:
  label: "Policy Renewal Workflow"
  description: "Automates policy renewal by pulling expiring policies from Salesforce, recalculating premium via the underwriting ML model, generating a renewal quote, and emailing the policyholder via Microsoft Outlook."
  tags:
    - policy-management
    - renewals
    - salesforce
    - azure-machine-learning
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: policy-renewals
      port: 8080
      tools:
        - name: process-renewal
          description: "Given a policy number expiring soon, recalculate premium, generate a renewal offer, and email the policyholder."
          inputParameters:
            - name: policy_number
              in: body
              type: string
              description: "The policy number to renew."
          steps:
            - name: get-policy
              type: call
              call: "salesforce.get-policy"
              with:
                policy_number: "{{policy_number}}"
            - name: recalc-premium
              type: call
              call: "azureml.score-renewal"
              with:
                policy_data: "{{get-policy.records[0]}}"
            - name: update-policy
              type: call
              call: "salesforce.update-policy"
              with:
                policy_id: "{{get-policy.records[0].Id}}"
                new_premium: "{{recalc-premium.recommended_premium}}"
                renewal_status: "offered"
            - name: email-policyholder
              type: call
              call: "outlook.send-mail"
              with:
                to: "{{get-policy.records[0].Policyholder_Email__c}}"
                subject: "Your Allstate Policy {{policy_number}} Renewal"
                body: "Your policy renewal is ready. New premium: ${{recalc-premium.recommended_premium}}/year. Log in to review and accept."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: policy-query
          path: "/query/?q=SELECT+Id,Policy_Number__c,Policyholder_Email__c,Annual_Premium__c,Expiration_Date__c+FROM+Policy__c+WHERE+Policy_Number__c='{{policy_number}}'"
          inputParameters:
            - name: policy_number
              in: query
          operations:
            - name: get-policy
              method: GET
        - name: policy-update
          path: "/sobjects/Policy__c/{{policy_id}}"
          inputParameters:
            - name: policy_id
              in: path
          operations:
            - name: update-policy
              method: PATCH
    - type: http
      namespace: azureml
      baseUri: "https://allstate-underwriting-ml.eastus2.inference.ml.azure.com"
      authentication:
        type: bearer
        token: "$secrets.azureml_underwriting_token"
      resources:
        - name: renewal-scoring
          path: "/score"
          operations:
            - name: score-renewal
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/me/sendMail"
          operations:
            - name: send-mail
              method: POST

Aggregates policy, claims, and billing data from multiple systems into Snowflake, updates Salesforce customer 360 view, and triggers insights.

naftiko: "0.5"
info:
  label: "Policyholder 360 Aggregation"
  description: "Aggregates policy, claims, and billing data from multiple systems into Snowflake, updates Salesforce customer 360 view, and triggers insights."
  tags:
    - customer-360
    - snowflake
    - salesforce
    - powerbi
    - slack
capability:
  exposes:
    - type: mcp
      namespace: customer-360
      port: 8080
      tools:
        - name: policyholder_360_aggregation
          description: "Orchestrate policyholder 360 aggregation workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-snowflake
              type: call
              call: "snowflake.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-salesforce
              type: call
              call: "salesforce.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: notify-servicenow
              type: call
              call: "servicenow.notify-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST

Sends a multi-channel policyholder notification by creating an email via Microsoft Outlook, logging the communication in Salesforce, and posting to the agent dashboard in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Policyholder Communication Orchestrator"
  description: "Sends a multi-channel policyholder notification by creating an email via Microsoft Outlook, logging the communication in Salesforce, and posting to the agent dashboard in Microsoft Teams."
  tags:
    - customer-service
    - communications
    - microsoft-outlook
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: customer-comms
      port: 8080
      tools:
        - name: send-policyholder-notification
          description: "Send a notification to a policyholder via email and log the communication in Salesforce."
          inputParameters:
            - name: policy_number
              in: body
              type: string
              description: "The policy number."
            - name: subject
              in: body
              type: string
              description: "Notification subject."
            - name: message
              in: body
              type: string
              description: "Notification message body."
          steps:
            - name: get-policyholder
              type: call
              call: "salesforce.get-policy"
              with:
                policy_number: "{{policy_number}}"
            - name: send-email
              type: call
              call: "outlook.send-mail"
              with:
                to: "{{get-policyholder.records[0].Policyholder_Email__c}}"
                subject: "{{subject}}"
                body: "{{message}}"
            - name: log-communication
              type: call
              call: "salesforce.create-activity"
              with:
                contact_id: "{{get-policyholder.records[0].Contact__c}}"
                subject: "{{subject}}"
                type: "Email"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: policy-query
          path: "/query/?q=SELECT+Id,Policyholder_Email__c,Contact__c+FROM+Policy__c+WHERE+Policy_Number__c='{{policy_number}}'"
          inputParameters:
            - name: policy_number
              in: query
          operations:
            - name: get-policy
              method: GET
        - name: activities
          path: "/sobjects/Task"
          operations:
            - name: create-activity
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/me/sendMail"
          operations:
            - name: send-mail
              method: POST

Generates batch policyholder correspondence by triggering a Power Automate flow, fetching templates from SharePoint, and logging delivery in Salesforce.

naftiko: "0.5"
info:
  label: "Power Automate Correspondence Generator"
  description: "Generates batch policyholder correspondence by triggering a Power Automate flow, fetching templates from SharePoint, and logging delivery in Salesforce."
  tags:
    - automation
    - customer-service
    - microsoft-power-automate
    - sharepoint
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: correspondence
      port: 8080
      tools:
        - name: generate-correspondence
          description: "Generate and send batch correspondence to policyholders via Power Automate, SharePoint, and Salesforce."
          inputParameters:
            - name: template_name
              in: body
              type: string
              description: "Correspondence template name."
            - name: policy_numbers
              in: body
              type: string
              description: "Comma-separated policy numbers."
          steps:
            - name: get-template
              type: call
              call: "sharepoint.get-file"
              with:
                site_id: "correspondence_templates"
                file_path: "templates/{{template_name}}.docx"
            - name: trigger-flow
              type: call
              call: "powerautomate.trigger-flow"
              with:
                flow_id: "correspondence-generator"
                template_url: "{{get-template.webUrl}}"
                policy_numbers: "{{policy_numbers}}"
            - name: log-delivery
              type: call
              call: "salesforce.create-activity"
              with:
                subject: "Correspondence sent: {{template_name}}"
                description: "Batch correspondence for policies: {{policy_numbers}}. Flow run: {{trigger-flow.run_id}}."
                type: "Email"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: files
          path: "/{{site_id}}/drive/root:/{{file_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: get-file
              method: GET
    - type: http
      namespace: powerautomate
      baseUri: "https://prod-00.eastus2.logic.azure.com/workflows"
      authentication:
        type: bearer
        token: "$secrets.powerautomate_token"
      resources:
        - name: flows
          path: "/{{flow_id}}/triggers/manual/paths/invoke"
          inputParameters:
            - name: flow_id
              in: path
          operations:
            - name: trigger-flow
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: activities
          path: "/sobjects/Task"
          operations:
            - name: create-activity
              method: POST

Triggers Power BI dataset refresh for Allstate reporting.

naftiko: "0.5"
info:
  label: "Power BI Refresh Trigger"
  description: "Triggers Power BI dataset refresh for Allstate reporting."
  tags:
    - analytics
    - power-bi
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: analytics
      port: 8080
      tools:
        - name: trigger-refresh
          description: "Trigger refresh at Allstate."
          inputParameters:
            - name: dataset_id
              in: body
              type: string
              description: "The dataset_id to look up." 
          call: "powerbi.get-dataset_id"
          with:
            dataset_id: "{{dataset_id}}"
  consumes:
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: power_bi_refresh_trigger
              method: GET

Processes IoT sensor alerts for commercial property insurance by scoring risk via Azure ML, creating a preventive maintenance task in ServiceNow, and notifying the policyholder via Microsoft Outlook.

naftiko: "0.5"
info:
  label: "Predictive Maintenance Alert Processor"
  description: "Processes IoT sensor alerts for commercial property insurance by scoring risk via Azure ML, creating a preventive maintenance task in ServiceNow, and notifying the policyholder via Microsoft Outlook."
  tags:
    - commercial-insurance
    - iot
    - azure-machine-learning
    - servicenow
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: predictive-maintenance
      port: 8080
      tools:
        - name: process-sensor-alert
          description: "Process an IoT sensor alert for a commercial property policy by scoring risk and creating a maintenance task."
          inputParameters:
            - name: sensor_id
              in: body
              type: string
              description: "IoT sensor identifier."
            - name: alert_type
              in: body
              type: string
              description: "Alert type: water_leak, temperature, fire, structural."
            - name: policy_number
              in: body
              type: string
              description: "Commercial property policy number."
          steps:
            - name: score-risk
              type: call
              call: "azureml.score-iot"
              with:
                sensor_id: "{{sensor_id}}"
                alert_type: "{{alert_type}}"
            - name: create-task
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Preventive maintenance: {{alert_type}} alert for policy {{policy_number}}"
                priority: "{{score-risk.priority}}"
                assignment_group: "Commercial_Claims"
            - name: notify-policyholder
              type: call
              call: "outlook.send-mail"
              with:
                to: "{{score-risk.contact_email}}"
                subject: "Maintenance Alert for Policy {{policy_number}}"
                body: "Our sensors detected a {{alert_type}} condition at your property. Risk level: {{score-risk.risk_level}}. A maintenance task has been created: {{create-task.number}}."
  consumes:
    - type: http
      namespace: azureml
      baseUri: "https://allstate-iot-ml.eastus2.inference.ml.azure.com"
      authentication:
        type: bearer
        token: "$secrets.azureml_iot_token"
      resources:
        - name: iot-scoring
          path: "/score"
          operations:
            - name: score-iot
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/sc_task"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/me/sendMail"
          operations:
            - name: send-mail
              method: POST

Collects audit data from policyholders, validates against premium basis in Snowflake, calculates adjustments, and notifies underwriting.

naftiko: "0.5"
info:
  label: "Premium Audit Processing Pipeline"
  description: "Collects audit data from policyholders, validates against premium basis in Snowflake, calculates adjustments, and notifies underwriting."
  tags:
    - audit
    - snowflake
    - servicenow
    - salesforce
    - slack
capability:
  exposes:
    - type: mcp
      namespace: audit
      port: 8080
      tools:
        - name: premium_audit_processing_pipeline
          description: "Orchestrate premium audit processing pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-snowflake
              type: call
              call: "snowflake.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-servicenow
              type: call
              call: "servicenow.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-salesforce
              type: call
              call: "salesforce.create-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: notify-slack
              type: call
              call: "slack.notify-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST

Schedules property inspections, dispatches inspectors via ServiceNow, collects reports, analyzes in Snowflake, and notifies underwriting.

naftiko: "0.5"
info:
  label: "Property Inspection Orchestrator"
  description: "Schedules property inspections, dispatches inspectors via ServiceNow, collects reports, analyzes in Snowflake, and notifies underwriting."
  tags:
    - underwriting
    - servicenow
    - snowflake
    - salesforce
    - slack
capability:
  exposes:
    - type: mcp
      namespace: underwriting
      port: 8080
      tools:
        - name: property_inspection_orchestrator
          description: "Orchestrate property inspection orchestrator workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-servicenow
              type: call
              call: "servicenow.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-snowflake
              type: call
              call: "snowflake.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-salesforce
              type: call
              call: "salesforce.create-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: notify-slack
              type: call
              call: "slack.notify-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST

Retrieves the current loss ratio analysis from a Qlik Sense app for a specified line of business. Used by actuaries and underwriting leadership.

naftiko: "0.5"
info:
  label: "Qlik Sense Loss Ratio Dashboard"
  description: "Retrieves the current loss ratio analysis from a Qlik Sense app for a specified line of business. Used by actuaries and underwriting leadership."
  tags:
    - analytics
    - actuarial
    - qlik-sense
capability:
  exposes:
    - type: mcp
      namespace: actuarial-analytics
      port: 8080
      tools:
        - name: get-loss-ratio
          description: "Fetch loss ratio data from a Qlik Sense app by line of business. Returns current ratio and trend."
          inputParameters:
            - name: app_id
              in: body
              type: string
              description: "Qlik Sense application ID."
            - name: line_of_business
              in: body
              type: string
              description: "Insurance line: auto, home, life, or commercial."
          call: "qlik.get-hypercube"
          with:
            app_id: "{{app_id}}"
            dimension: "{{line_of_business}}"
          outputParameters:
            - name: loss_ratio
              type: string
              mapping: "$.result.qDataPages[0].qMatrix[0][1].qNum"
            - name: trend
              type: string
              mapping: "$.result.qDataPages[0].qMatrix[0][2].qText"
  consumes:
    - type: http
      namespace: qlik
      baseUri: "https://allstate.us.qlikcloud.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.qlik_token"
      resources:
        - name: apps
          path: "/apps/{{app_id}}/objects/loss-ratio-hypercube/data"
          inputParameters:
            - name: app_id
              in: path
          operations:
            - name: get-hypercube
              method: POST

Generates a regulatory compliance report by pulling policy data from Salesforce, financial data from Oracle, and filing records from SharePoint, then compiling into a Confluence page for state regulators.

naftiko: "0.5"
info:
  label: "Regulatory Compliance Report Generator"
  description: "Generates a regulatory compliance report by pulling policy data from Salesforce, financial data from Oracle, and filing records from SharePoint, then compiling into a Confluence page for state regulators."
  tags:
    - compliance
    - regulatory
    - salesforce
    - oracle
    - sharepoint
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: compliance-reporting
      port: 8080
      tools:
        - name: generate-compliance-report
          description: "Generate a regulatory compliance report for a given state and reporting period."
          inputParameters:
            - name: state_code
              in: body
              type: string
              description: "Two-letter state code, e.g. 'IL', 'CA'."
            - name: reporting_period
              in: body
              type: string
              description: "Reporting period, e.g. 'Q1-2026'."
          steps:
            - name: get-policy-stats
              type: call
              call: "salesforce.query-policies"
              with:
                state: "{{state_code}}"
                period: "{{reporting_period}}"
            - name: get-financial-data
              type: call
              call: "oracle.get-financials"
              with:
                state: "{{state_code}}"
                period: "{{reporting_period}}"
            - name: get-filings
              type: call
              call: "sharepoint.list-files"
              with:
                site_id: "regulatory_filings"
                folder_path: "{{state_code}}/{{reporting_period}}"
            - name: publish-report
              type: call
              call: "confluence.create-page"
              with:
                space_key: "COMPLIANCE"
                title: "{{state_code}} Regulatory Report - {{reporting_period}}"
                body: "Policies: {{get-policy-stats.totalSize}}. Premium Volume: ${{get-financial-data.total_premium}}. Loss Ratio: {{get-financial-data.loss_ratio}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: policy-stats
          path: "/query/?q=SELECT+COUNT(Id)+FROM+Policy__c+WHERE+State__c='{{state}}'AND+Period__c='{{period}}'"
          inputParameters:
            - name: state
              in: query
            - name: period
              in: query
          operations:
            - name: query-policies
              method: GET
    - type: http
      namespace: oracle
      baseUri: "https://allstate-ebs.oracle.com/webservices/rest/v1"
      authentication:
        type: basic
        username: "$secrets.oracle_user"
        password: "$secrets.oracle_password"
      resources:
        - name: financials
          path: "/financials?state={{state}}&period={{period}}"
          inputParameters:
            - name: state
              in: query
            - name: period
              in: query
          operations:
            - name: get-financials
              method: GET
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: files
          path: "/{{site_id}}/drive/root:/{{folder_path}}:/children"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: list-files
              method: GET
    - type: http
      namespace: confluence
      baseUri: "https://allstate.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST

Prepares rate filings from actuarial models in Snowflake, generates documentation, submits to regulators, and notifies compliance team.

naftiko: "0.5"
info:
  label: "Regulatory Rate Filing Pipeline"
  description: "Prepares rate filings from actuarial models in Snowflake, generates documentation, submits to regulators, and notifies compliance team."
  tags:
    - regulatory
    - snowflake
    - servicenow
    - powerbi
    - slack
capability:
  exposes:
    - type: mcp
      namespace: regulatory
      port: 8080
      tools:
        - name: regulatory_rate_filing_pipeline
          description: "Orchestrate regulatory rate filing pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-snowflake
              type: call
              call: "snowflake.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-servicenow
              type: call
              call: "servicenow.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST

Extracts treaty data from Oracle, calculates ceded premiums in Snowflake, generates reinsurance reports, and notifies reinsurance team.

naftiko: "0.5"
info:
  label: "Reinsurance Reporting Pipeline"
  description: "Extracts treaty data from Oracle, calculates ceded premiums in Snowflake, generates reinsurance reports, and notifies reinsurance team."
  tags:
    - reinsurance
    - oracle
    - snowflake
    - powerbi
    - slack
capability:
  exposes:
    - type: mcp
      namespace: reinsurance
      port: 8080
      tools:
        - name: reinsurance_reporting_pipeline
          description: "Orchestrate reinsurance reporting pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-oracle
              type: call
              call: "oracle.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-snowflake
              type: call
              call: "snowflake.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: notify-servicenow
              type: call
              call: "servicenow.notify-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: oracle
      baseUri: "https://allstate.oraclecloud.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: oracle-op
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST

Retrieves Salesforce account details for Allstate sales teams.

naftiko: "0.5"
info:
  label: "Salesforce Account Info"
  description: "Retrieves Salesforce account details for Allstate sales teams."
  tags:
    - crm
    - salesforce
    - accounts
capability:
  exposes:
    - type: mcp
      namespace: crm
      port: 8080
      tools:
        - name: get-account
          description: "Look up account at Allstate."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "The account_id to look up." 
          call: "salesforce.get-account_id"
          with:
            account_id: "{{account_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce_account_info
              method: GET

Checks ServiceNow incident status for Allstate IT operations.

naftiko: "0.5"
info:
  label: "ServiceNow Incident Status Check"
  description: "Checks ServiceNow incident status for Allstate IT operations."
  tags:
    - itsm
    - servicenow
    - incident-management
capability:
  exposes:
    - type: mcp
      namespace: itsm
      port: 8080
      tools:
        - name: get-incident
          description: "Look up incident at Allstate."
          inputParameters:
            - name: incident_id
              in: body
              type: string
              description: "The incident_id to look up." 
          call: "servicenow.get-incident_id"
          with:
            incident_id: "{{incident_id}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow_incident_status_che
              method: GET

Creates an IT incident in ServiceNow with categorization, priority, and assignment group. Used across all Allstate departments for IT support requests.

naftiko: "0.5"
info:
  label: "ServiceNow IT Incident Creator"
  description: "Creates an IT incident in ServiceNow with categorization, priority, and assignment group. Used across all Allstate departments for IT support requests."
  tags:
    - it-support
    - servicenow
    - incident-management
capability:
  exposes:
    - type: mcp
      namespace: it-support
      port: 8080
      tools:
        - name: create-it-incident
          description: "Create a new IT incident in ServiceNow. Returns the incident number and sys_id."
          inputParameters:
            - name: short_description
              in: body
              type: string
              description: "Brief description of the IT issue."
            - name: category
              in: body
              type: string
              description: "Incident category: network, hardware, software, access."
            - name: priority
              in: body
              type: string
              description: "Priority level: 1-critical, 2-high, 3-moderate, 4-low."
          call: "servicenow.create-incident"
          with:
            short_description: "{{short_description}}"
            category: "{{category}}"
            priority: "{{priority}}"
          outputParameters:
            - name: incident_number
              type: string
              mapping: "$.result.number"
            - name: sys_id
              type: string
              mapping: "$.result.sys_id"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.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

Sends a message to a Slack channel for Allstate notifications.

naftiko: "0.5"
info:
  label: "Slack Channel Post"
  description: "Sends a message to a Slack channel for Allstate notifications."
  tags:
    - collaboration
    - slack
    - messaging
capability:
  exposes:
    - type: mcp
      namespace: messaging
      port: 8080
      tools:
        - name: send-message
          description: "Post to Slack at Allstate."
          inputParameters:
            - name: channel
              in: body
              type: string
              description: "The channel to look up." 
          call: "slack.get-channel"
          with:
            channel: "{{channel}}"
  consumes:
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack_channel_post
              method: GET

Executes SQL queries against Allstate Snowflake warehouse.

naftiko: "0.5"
info:
  label: "Snowflake Query Executor"
  description: "Executes SQL queries against Allstate Snowflake warehouse."
  tags:
    - data
    - snowflake
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: analytics
      port: 8080
      tools:
        - name: run-query
          description: "Run query at Allstate."
          inputParameters:
            - name: sql_query
              in: body
              type: string
              description: "The sql_query to look up." 
          call: "snowflake.get-sql_query"
          with:
            sql_query: "{{sql_query}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake_query_executor
              method: GET

Searches Splunk indexes for log entries at Allstate.

naftiko: "0.5"
info:
  label: "Splunk Log Search"
  description: "Searches Splunk indexes for log entries at Allstate."
  tags:
    - devops
    - splunk
    - logging
capability:
  exposes:
    - type: mcp
      namespace: logging
      port: 8080
      tools:
        - name: search-logs
          description: "Search Splunk logs for Allstate."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "The query to look up." 
          call: "splunk.get-query"
          with:
            query: "{{query}}"
  consumes:
    - type: http
      namespace: splunk
      baseUri: "https://allstate-splunk.com/services"
      authentication:
        type: bearer
        token: "$secrets.splunk_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: splunk_log_search
              method: GET

Searches Splunk for security events related to a specific user or IP address within the Allstate network. Used by the security operations team for incident investigation.

naftiko: "0.5"
info:
  label: "Splunk Security Event Search"
  description: "Searches Splunk for security events related to a specific user or IP address within the Allstate network. Used by the security operations team for incident investigation."
  tags:
    - security
    - incident-response
    - splunk
capability:
  exposes:
    - type: mcp
      namespace: security-ops
      port: 8080
      tools:
        - name: search-security-events
          description: "Search Splunk for security events by user or IP. Returns matching events with timestamp, source, and severity."
          inputParameters:
            - name: search_query
              in: body
              type: string
              description: "Splunk search query, e.g. 'sourcetype=firewall src_ip=10.0.0.1'."
            - name: time_range
              in: body
              type: string
              description: "Time range, e.g. '-24h'."
          call: "splunk.search"
          with:
            search: "search {{search_query}}"
            earliest_time: "{{time_range}}"
  consumes:
    - type: http
      namespace: splunk
      baseUri: "https://allstate-splunk.splunkcloud.com:8089/services"
      authentication:
        type: bearer
        token: "$secrets.splunk_token"
      resources:
        - name: search-jobs
          path: "/search/jobs"
          operations:
            - name: search
              method: POST

Executes an SRE runbook by checking Prometheus metrics, querying Datadog for anomalies, restarting pods via Kubernetes, and logging the action in ServiceNow.

naftiko: "0.5"
info:
  label: "SRE Runbook Executor"
  description: "Executes an SRE runbook by checking Prometheus metrics, querying Datadog for anomalies, restarting pods via Kubernetes, and logging the action in ServiceNow."
  tags:
    - sre
    - observability
    - prometheus
    - datadog
    - kubernetes
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: sre-runbooks
      port: 8080
      tools:
        - name: execute-runbook
          description: "Execute an SRE runbook for a failing service: check metrics, restart pods, and log the action."
          inputParameters:
            - name: service_name
              in: body
              type: string
              description: "Name of the failing service."
            - name: namespace
              in: body
              type: string
              description: "Kubernetes namespace."
          steps:
            - name: check-prometheus
              type: call
              call: "prometheus.query"
              with:
                query: "rate(http_requests_total{service=\"{{service_name}}\",code=~\"5..\"}[5m])"
            - name: check-datadog
              type: call
              call: "datadog.query-metrics"
              with:
                query: "avg:trace.http.request.errors{service:{{service_name}}}"
                from: "last_15m"
            - name: restart-pods
              type: call
              call: "k8s.delete-pods"
              with:
                namespace: "{{namespace}}"
                labelSelector: "app={{service_name}}"
            - name: log-action
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "SRE runbook executed: {{service_name}} pod restart"
                category: "infrastructure"
                description: "Error rate: {{check-prometheus.data.result[0].value[1]}}. Pods restarted in {{namespace}}."
  consumes:
    - type: http
      namespace: prometheus
      baseUri: "https://allstate-prometheus.corp.allstate.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.prometheus_token"
      resources:
        - name: query
          path: "/query?query={{query}}"
          inputParameters:
            - name: query
              in: query
          operations:
            - name: query
              method: GET
    - 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: k8s
      baseUri: "https://allstate-aks.eastus2.azmk8s.io"
      authentication:
        type: bearer
        token: "$secrets.k8s_token"
      resources:
        - name: pods
          path: "/api/v1/namespaces/{{namespace}}/pods?labelSelector={{labelSelector}}"
          inputParameters:
            - name: namespace
              in: path
            - name: labelSelector
              in: query
          operations:
            - name: delete-pods
              method: DELETE
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.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

Identifies subrogation opportunities from claims data in Snowflake, prioritizes recovery, creates ServiceNow tasks, and notifies subrogation team.

naftiko: "0.5"
info:
  label: "Subrogation Recovery Optimization"
  description: "Identifies subrogation opportunities from claims data in Snowflake, prioritizes recovery, creates ServiceNow tasks, and notifies subrogation team."
  tags:
    - subrogation
    - snowflake
    - servicenow
    - salesforce
    - slack
capability:
  exposes:
    - type: mcp
      namespace: subrogation
      port: 8080
      tools:
        - name: subrogation_recovery_optimization
          description: "Orchestrate subrogation recovery optimization workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-snowflake
              type: call
              call: "snowflake.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-servicenow
              type: call
              call: "servicenow.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-salesforce
              type: call
              call: "salesforce.create-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: notify-slack
              type: call
              call: "slack.notify-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST

Orchestrates subrogation recovery by pulling claim details from ServiceNow, generating a demand letter via OpenAI, storing it in Box, and creating a follow-up task.

naftiko: "0.5"
info:
  label: "Subrogation Recovery Workflow"
  description: "Orchestrates subrogation recovery by pulling claim details from ServiceNow, generating a demand letter via OpenAI, storing it in Box, and creating a follow-up task."
  tags:
    - claims-processing
    - subrogation
    - servicenow
    - openai
    - box
capability:
  exposes:
    - type: mcp
      namespace: subrogation
      port: 8080
      tools:
        - name: initiate-subrogation
          description: "Start a subrogation recovery process for a claim by generating and sending a demand letter."
          inputParameters:
            - name: claim_number
              in: body
              type: string
              description: "The claim incident number."
            - name: at_fault_party
              in: body
              type: string
              description: "Name of the at-fault party or their insurer."
            - name: recovery_amount
              in: body
              type: string
              description: "Requested recovery amount in USD."
          steps:
            - name: get-claim
              type: call
              call: "servicenow.get-incident"
              with:
                number: "{{claim_number}}"
            - name: generate-letter
              type: call
              call: "openai.create-completion"
              with:
                model: "gpt-4o"
                prompt: "Draft a professional insurance subrogation demand letter to {{at_fault_party}} for claim {{claim_number}} requesting ${{recovery_amount}} recovery. Claim date: {{get-claim.result.opened_at}}."
            - name: store-letter
              type: call
              call: "box.upload-file"
              with:
                folder_id: "subrogation_{{claim_number}}"
                file_name: "demand_letter_{{at_fault_party}}.pdf"
                content: "{{generate-letter.choices[0].text}}"
            - name: create-followup
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Subrogation follow-up: {{claim_number}} - {{at_fault_party}}"
                assignment_group: "Subrogation_Unit"
                description: "Demand letter sent for ${{recovery_amount}}. Document: {{store-letter.shared_link}}."
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.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
        - name: tasks
          path: "/table/sc_task"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: openai
      baseUri: "https://api.openai.com/v1"
      authentication:
        type: bearer
        token: "$secrets.openai_api_key"
      resources:
        - name: completions
          path: "/chat/completions"
          operations:
            - name: create-completion
              method: POST
    - type: http
      namespace: box
      baseUri: "https://upload.box.com/api/2.0"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: files
          path: "/files/content"
          operations:
            - name: upload-file
              method: POST

Orchestrates recruiting by posting a job via Paradox chatbot, creating a Workday requisition, tracking candidates in Salesforce, and notifying the hiring manager via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Talent Acquisition Pipeline"
  description: "Orchestrates recruiting by posting a job via Paradox chatbot, creating a Workday requisition, tracking candidates in Salesforce, and notifying the hiring manager via Microsoft Teams."
  tags:
    - recruitment
    - talent-acquisition
    - paradox
    - workday
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: talent-acquisition
      port: 8080
      tools:
        - name: launch-job-posting
          description: "Launch a new job posting across Paradox, Workday, and Salesforce, and notify the hiring manager."
          inputParameters:
            - name: job_title
              in: body
              type: string
              description: "Job title for the posting."
            - name: department
              in: body
              type: string
              description: "Department or business unit."
            - name: hiring_manager_email
              in: body
              type: string
              description: "Email of the hiring manager."
          steps:
            - name: create-requisition
              type: call
              call: "workday.create-requisition"
              with:
                job_title: "{{job_title}}"
                department: "{{department}}"
                hiring_manager: "{{hiring_manager_email}}"
            - name: post-to-paradox
              type: call
              call: "paradox.create-job"
              with:
                title: "{{job_title}}"
                requisition_id: "{{create-requisition.requisition_id}}"
            - name: create-tracking-record
              type: call
              call: "salesforce.create-record"
              with:
                object: "Job_Posting__c"
                title: "{{job_title}}"
                requisition_id: "{{create-requisition.requisition_id}}"
            - name: notify-manager
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{hiring_manager_email}}"
                text: "Your job posting for {{job_title}} is live. Requisition: {{create-requisition.requisition_id}}."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: requisitions
          path: "/recruiting/v1/requisitions"
          operations:
            - name: create-requisition
              method: POST
    - type: http
      namespace: paradox
      baseUri: "https://api.paradox.ai/v1"
      authentication:
        type: bearer
        token: "$secrets.paradox_token"
      resources:
        - name: jobs
          path: "/jobs"
          operations:
            - name: create-job
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: records
          path: "/sobjects/{{object}}"
          inputParameters:
            - name: object
              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: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Processes telematics data in Snowflake, calculates driving scores, updates policy pricing, and notifies policyholders of savings.

naftiko: "0.5"
info:
  label: "Telematics Driving Score Pipeline"
  description: "Processes telematics data in Snowflake, calculates driving scores, updates policy pricing, and notifies policyholders of savings."
  tags:
    - telematics
    - snowflake
    - salesforce
    - powerbi
    - slack
capability:
  exposes:
    - type: mcp
      namespace: telematics
      port: 8080
      tools:
        - name: telematics_driving_score_pipeline
          description: "Orchestrate telematics driving score pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-snowflake
              type: call
              call: "snowflake.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-salesforce
              type: call
              call: "salesforce.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: notify-servicenow
              type: call
              call: "servicenow.notify-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST

Triggers a Terraform Cloud workspace run to provision or update cloud infrastructure for Allstate's claims platform on Azure.

naftiko: "0.5"
info:
  label: "Terraform Infrastructure Provisioning"
  description: "Triggers a Terraform Cloud workspace run to provision or update cloud infrastructure for Allstate's claims platform on Azure."
  tags:
    - infrastructure
    - cloud
    - terraform
capability:
  exposes:
    - type: mcp
      namespace: infra-provisioning
      port: 8080
      tools:
        - name: trigger-terraform-run
          description: "Trigger a Terraform Cloud run for a workspace. Returns run ID and status."
          inputParameters:
            - name: workspace_id
              in: body
              type: string
              description: "Terraform Cloud workspace ID."
            - name: message
              in: body
              type: string
              description: "Run message describing the change."
          call: "terraform.create-run"
          with:
            workspace_id: "{{workspace_id}}"
            message: "{{message}}"
          outputParameters:
            - name: run_id
              type: string
              mapping: "$.data.id"
            - name: status
              type: string
              mapping: "$.data.attributes.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

Ingests data from external vendors, validates quality in Snowflake, enriches policy records in Salesforce, and notifies data team.

naftiko: "0.5"
info:
  label: "Third Party Data Integration Pipeline"
  description: "Ingests data from external vendors, validates quality in Snowflake, enriches policy records in Salesforce, and notifies data team."
  tags:
    - data-integration
    - snowflake
    - salesforce
    - servicenow
    - slack
capability:
  exposes:
    - type: mcp
      namespace: data-integration
      port: 8080
      tools:
        - name: third_party_data_integration_pipeline
          description: "Orchestrate third party data integration pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-snowflake
              type: call
              call: "snowflake.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-salesforce
              type: call
              call: "salesforce.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-servicenow
              type: call
              call: "servicenow.create-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: notify-slack
              type: call
              call: "slack.notify-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST

Evaluates third-party liability claims by pulling incident reports from ServiceNow, querying legal precedent via Elasticsearch, scoring liability via Azure ML, and creating a case summary in Confluence.

naftiko: "0.5"
info:
  label: "Third-Party Liability Evaluator"
  description: "Evaluates third-party liability claims by pulling incident reports from ServiceNow, querying legal precedent via Elasticsearch, scoring liability via Azure ML, and creating a case summary in Confluence."
  tags:
    - claims-processing
    - liability
    - servicenow
    - elasticsearch
    - azure-machine-learning
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: liability-eval
      port: 8080
      tools:
        - name: evaluate-liability
          description: "Evaluate a third-party liability claim by pulling reports, checking precedent, scoring liability, and publishing a case summary."
          inputParameters:
            - name: claim_number
              in: body
              type: string
              description: "The liability claim number."
            - name: jurisdiction
              in: body
              type: string
              description: "State jurisdiction for legal precedent lookup."
          steps:
            - name: get-incident
              type: call
              call: "servicenow.get-incident"
              with:
                number: "{{claim_number}}"
            - name: search-precedent
              type: call
              call: "elasticsearch.search-precedent"
              with:
                index: "legal-precedent"
                q: "{{jurisdiction}} AND liability AND {{get-incident.result.category}}"
            - name: score-liability
              type: call
              call: "azureml.score-liability"
              with:
                claim_data: "{{get-incident.result}}"
                precedent_count: "{{search-precedent.hits.total.value}}"
                jurisdiction: "{{jurisdiction}}"
            - name: publish-summary
              type: call
              call: "confluence.create-page"
              with:
                space_key: "LIABILITY"
                title: "Liability Evaluation: {{claim_number}}"
                body: "Liability score: {{score-liability.liability_pct}}%. Recommended action: {{score-liability.recommendation}}. Precedent matches: {{search-precedent.hits.total.value}}."
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.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: elasticsearch
      baseUri: "https://allstate-es.es.eastus2.azure.elastic-cloud.com"
      authentication:
        type: basic
        username: "$secrets.es_user"
        password: "$secrets.es_password"
      resources:
        - name: legal-search
          path: "/{{index}}/_search"
          inputParameters:
            - name: index
              in: path
          operations:
            - name: search-precedent
              method: GET
    - type: http
      namespace: azureml
      baseUri: "https://allstate-liability-ml.eastus2.inference.ml.azure.com"
      authentication:
        type: bearer
        token: "$secrets.azureml_liability_token"
      resources:
        - name: scoring
          path: "/score"
          operations:
            - name: score-liability
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://allstate.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST

Generates an insurance quote by pulling applicant data from Salesforce, scoring risk via Azure ML, checking credit via Moody's, and returning a composite quote to the agent dashboard.

naftiko: "0.5"
info:
  label: "Underwriting Quote Pipeline"
  description: "Generates an insurance quote by pulling applicant data from Salesforce, scoring risk via Azure ML, checking credit via Moody's, and returning a composite quote to the agent dashboard."
  tags:
    - underwriting
    - quoting
    - salesforce
    - azure-machine-learning
    - moodys
capability:
  exposes:
    - type: mcp
      namespace: underwriting-quote
      port: 8080
      tools:
        - name: generate-quote
          description: "Generate a new insurance quote by scoring applicant risk and credit, then computing premium."
          inputParameters:
            - name: applicant_id
              in: body
              type: string
              description: "Salesforce applicant record ID."
            - name: line_of_business
              in: body
              type: string
              description: "Insurance line: auto, home, life, or commercial."
          steps:
            - name: get-applicant
              type: call
              call: "salesforce.get-applicant"
              with:
                applicant_id: "{{applicant_id}}"
            - name: score-risk
              type: call
              call: "azureml.score-underwriting"
              with:
                applicant_data: "{{get-applicant.records[0]}}"
                line_of_business: "{{line_of_business}}"
            - name: check-credit
              type: call
              call: "moodys.get-rating"
              with:
                company_id: "{{get-applicant.records[0].Company_ID__c}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: applicants
          path: "/query/?q=SELECT+Id,Name,Company_ID__c,Address__c+FROM+Applicant__c+WHERE+Id='{{applicant_id}}'"
          inputParameters:
            - name: applicant_id
              in: query
          operations:
            - name: get-applicant
              method: GET
    - type: http
      namespace: azureml
      baseUri: "https://allstate-underwriting-ml.eastus2.inference.ml.azure.com"
      authentication:
        type: bearer
        token: "$secrets.azureml_underwriting_token"
      resources:
        - name: scoring
          path: "/score"
          operations:
            - name: score-underwriting
              method: POST
    - type: http
      namespace: moodys
      baseUri: "https://api.economy.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.moodys_api_key"
      resources:
        - name: ratings
          path: "/ratings/{{company_id}}"
          inputParameters:
            - name: company_id
              in: path
          operations:
            - name: get-rating
              method: GET

Retrieves a risk score from the Azure Machine Learning underwriting model for a given applicant profile. Used by underwriters to assess new policy applications.

naftiko: "0.5"
info:
  label: "Underwriting Risk Score"
  description: "Retrieves a risk score from the Azure Machine Learning underwriting model for a given applicant profile. Used by underwriters to assess new policy applications."
  tags:
    - underwriting
    - risk-assessment
    - azure-machine-learning
capability:
  exposes:
    - type: mcp
      namespace: underwriting
      port: 8080
      tools:
        - name: get-risk-score
          description: "Score an insurance applicant using the underwriting ML model. Returns risk tier, score, and recommended premium adjustment."
          inputParameters:
            - name: applicant_id
              in: body
              type: string
              description: "The applicant identifier from the quoting system."
            - name: line_of_business
              in: body
              type: string
              description: "Insurance line: auto, home, life, or commercial."
          call: "azureml.score-underwriting"
          with:
            applicant_id: "{{applicant_id}}"
            line_of_business: "{{line_of_business}}"
          outputParameters:
            - name: risk_tier
              type: string
              mapping: "$.risk_tier"
            - name: score
              type: string
              mapping: "$.risk_score"
            - name: premium_adjustment
              type: string
              mapping: "$.premium_adjustment_pct"
  consumes:
    - type: http
      namespace: azureml
      baseUri: "https://allstate-underwriting-ml.eastus2.inference.ml.azure.com"
      authentication:
        type: bearer
        token: "$secrets.azureml_underwriting_token"
      resources:
        - name: scoring
          path: "/score"
          operations:
            - name: score-underwriting
              method: POST

Collects applicant data, runs risk models in Snowflake, generates risk score, creates underwriting decision, and notifies agent.

naftiko: "0.5"
info:
  label: "Underwriting Risk Scoring Pipeline"
  description: "Collects applicant data, runs risk models in Snowflake, generates risk score, creates underwriting decision, and notifies agent."
  tags:
    - underwriting
    - snowflake
    - salesforce
    - servicenow
    - slack
capability:
  exposes:
    - type: mcp
      namespace: underwriting
      port: 8080
      tools:
        - name: underwriting_risk_scoring_pipeline
          description: "Orchestrate underwriting risk scoring pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-snowflake
              type: call
              call: "snowflake.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-salesforce
              type: call
              call: "salesforce.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-servicenow
              type: call
              call: "servicenow.create-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: notify-slack
              type: call
              call: "slack.notify-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://allstate.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST

Tracks vendor performance in ServiceNow, scores in Snowflake, creates renewal evaluations in Jira, and notifies procurement.

naftiko: "0.5"
info:
  label: "Vendor Management Pipeline"
  description: "Tracks vendor performance in ServiceNow, scores in Snowflake, creates renewal evaluations in Jira, and notifies procurement."
  tags:
    - procurement
    - servicenow
    - snowflake
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: vendor_management_pipeline
          description: "Orchestrate vendor management pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-servicenow
              type: call
              call: "servicenow.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-snowflake
              type: call
              call: "snowflake.process-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: create-jira
              type: call
              call: "jira.create-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: notify-slack
              type: call
              call: "slack.notify-resource"
              with:
                resource_id: "{{resource_id}}"

  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://allstate.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://allstate.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: jira-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST

Onboards a new insurance vendor by creating a Workday supplier record, opening a ServiceNow procurement ticket, storing contracts in Box, and notifying procurement via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Vendor Onboarding Workflow"
  description: "Onboards a new insurance vendor by creating a Workday supplier record, opening a ServiceNow procurement ticket, storing contracts in Box, and notifying procurement via Microsoft Teams."
  tags:
    - vendor-management
    - procurement
    - workday
    - servicenow
    - box
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vendor-onboarding
      port: 8080
      tools:
        - name: onboard-vendor
          description: "Onboard a new vendor across Workday, ServiceNow, Box, and Teams."
          inputParameters:
            - name: vendor_name
              in: body
              type: string
              description: "Vendor company name."
            - name: vendor_type
              in: body
              type: string
              description: "Type: repair_shop, medical_provider, legal_firm, contractor."
            - name: contact_email
              in: body
              type: string
              description: "Vendor primary contact email."
          steps:
            - name: create-supplier
              type: call
              call: "workday.create-supplier"
              with:
                name: "{{vendor_name}}"
                type: "{{vendor_type}}"
                email: "{{contact_email}}"
            - name: create-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Vendor onboarding: {{vendor_name}}"
                category: "procurement"
                assignment_group: "Vendor_Management"
            - name: create-contract-folder
              type: call
              call: "box.create-folder"
              with:
                parent_id: "vendor_contracts"
                name: "{{vendor_name}}_{{create-supplier.supplier_id}}"
            - name: notify-procurement
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "procurement-team"
                text: "New vendor onboarded: {{vendor_name}} ({{vendor_type}}). Supplier ID: {{create-supplier.supplier_id}}. Contract folder: {{create-contract-folder.url}}."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: suppliers
          path: "/procurement/v1/suppliers"
          operations:
            - name: create-supplier
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://allstate.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: box
      baseUri: "https://api.box.com/2.0"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: folders
          path: "/folders"
          operations:
            - name: create-folder
              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/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Tracks vulnerability remediation by pulling findings from Microsoft Defender, creating Azure DevOps work items for each critical finding, and notifying the security team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Vulnerability Remediation Tracker"
  description: "Tracks vulnerability remediation by pulling findings from Microsoft Defender, creating Azure DevOps work items for each critical finding, and notifying the security team in Microsoft Teams."
  tags:
    - security
    - vulnerability-management
    - microsoft-defender
    - azure-devops
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vuln-remediation
      port: 8080
      tools:
        - name: track-remediation
          description: "Create remediation tickets for critical vulnerabilities from Defender and notify the security team."
          inputParameters:
            - name: device_group
              in: body
              type: string
              description: "Defender device group to scan."
          steps:
            - name: get-vulns
              type: call
              call: "defender.list-vulnerabilities"
              with:
                device_group: "{{device_group}}"
            - name: create-tickets
              type: call
              call: "azuredevops.create-work-item"
              with:
                project: "SecurityOps"
                type: "Bug"
                title: "Critical vulnerability in {{device_group}}"
                description: "Vulnerabilities found: {{get-vulns.value}}. Immediate remediation required."
            - name: notify-security
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "security-engineering"
                text: "Vulnerability scan for {{device_group}} complete. Work item created: {{create-tickets.id}}."
  consumes:
    - type: http
      namespace: defender
      baseUri: "https://api.securitycenter.microsoft.com/api"
      authentication:
        type: bearer
        token: "$secrets.defender_token"
      resources:
        - name: vulnerabilities
          path: "/vulnerabilities?$filter=machineGroup eq '{{device_group}}'"
          inputParameters:
            - name: device_group
              in: query
          operations:
            - name: list-vulnerabilities
              method: GET
    - type: http
      namespace: azuredevops
      baseUri: "https://dev.azure.com/allstate"
      authentication:
        type: basic
        username: ""
        password: "$secrets.azuredevops_pat"
      resources:
        - name: work-items
          path: "/{{project}}/_apis/wit/workitems/${{type}}?api-version=7.0"
          inputParameters:
            - name: project
              in: path
            - name: type
              in: path
          operations:
            - name: create-work-item
              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/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Processes employee benefits enrollment changes in Workday during open enrollment, validates selections, and sends confirmation via Microsoft Outlook.

naftiko: "0.5"
info:
  label: "Workday Benefits Enrollment Processor"
  description: "Processes employee benefits enrollment changes in Workday during open enrollment, validates selections, and sends confirmation via Microsoft Outlook."
  tags:
    - hr
    - benefits
    - workday
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: hr-benefits
      port: 8080
      tools:
        - name: process-enrollment
          description: "Process a benefits enrollment change in Workday and send confirmation to the employee."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "Workday worker ID."
            - name: benefit_plan
              in: body
              type: string
              description: "Selected benefit plan name."
            - name: effective_date
              in: body
              type: string
              description: "Enrollment effective date in YYYY-MM-DD format."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{worker_id}}"
            - name: enroll-benefit
              type: call
              call: "workday.enroll-benefit"
              with:
                worker_id: "{{worker_id}}"
                plan: "{{benefit_plan}}"
                effective_date: "{{effective_date}}"
            - name: send-confirmation
              type: call
              call: "outlook.send-mail"
              with:
                to: "{{get-employee.work_email}}"
                subject: "Benefits Enrollment Confirmation"
                body: "Hi {{get-employee.first_name}}, your enrollment in {{benefit_plan}} is confirmed effective {{effective_date}}. Enrollment ID: {{enroll-benefit.enrollment_id}}."
  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
        - name: benefits
          path: "/benefits/enrollments"
          operations:
            - name: enroll-benefit
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/me/sendMail"
          operations:
            - name: send-mail
              method: POST

Retrieves employee details from Workday by employee ID. Used by HR and managers to look up reporting structure, department, and contact information.

naftiko: "0.5"
info:
  label: "Workday Employee Directory Lookup"
  description: "Retrieves employee details from Workday by employee ID. Used by HR and managers to look up reporting structure, department, and contact information."
  tags:
    - hr
    - workday
    - employee-management
capability:
  exposes:
    - type: mcp
      namespace: hr-directory
      port: 8080
      tools:
        - name: get-employee
          description: "Look up an Allstate employee by worker ID in Workday. Returns name, department, manager, and title."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "The Workday worker ID."
          call: "workday.get-worker"
          with:
            worker_id: "{{worker_id}}"
          outputParameters:
            - name: full_name
              type: string
              mapping: "$.worker.fullName"
            - name: department
              type: string
              mapping: "$.worker.department"
            - name: manager
              type: string
              mapping: "$.worker.manager.fullName"
            - name: title
              type: string
              mapping: "$.worker.jobTitle"
  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

Retrieves employee profile from Workday at Allstate.

naftiko: "0.5"
info:
  label: "Workday Employee Lookup"
  description: "Retrieves employee profile from Workday at Allstate."
  tags:
    - hr
    - workday
    - employee-data
capability:
  exposes:
    - type: mcp
      namespace: hr
      port: 8080
      tools:
        - name: get-employee
          description: "Look up Workday employee at Allstate."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The employee_id to look up." 
          call: "workday.get-employee_id"
          with:
            employee_id: "{{employee_id}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/allstate"
      authentication:
        type: bearer
        token: "$secrets.workday_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: workday_employee_lookup
              method: GET