Verizon Capabilities

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

Sort
Expand

Pulls tower maintenance schedules from Snowflake, creates ServiceNow work orders, and notifies the field ops team.

naftiko: "0.5"
info:
  label: "5G Tower Maintenance Scheduling"
  description: "Pulls tower maintenance schedules from Snowflake, creates ServiceNow work orders, and notifies the field ops team."
  tags:
    - network
    - 5g
    - snowflake
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: 5g_tower_maintenance_scheduling
          description: "Pulls tower maintenance schedules from Snowflake, creates ServiceNow work orders, and notifies the field ops team."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "5G Tower Maintenance Scheduling: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "5G Tower Maintenance Scheduling for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Uses Anthropic Claude to analyze call transcript data from Snowflake and posts customer insights to CX team.

naftiko: "0.5"
info:
  label: "AI-Assisted Customer Call Analysis"
  description: "Uses Anthropic Claude to analyze call transcript data from Snowflake and posts customer insights to CX team."
  tags:
    - customer-experience
    - anthropic
    - snowflake
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: ai_assisted_customer_call_analysis
          description: "Uses Anthropic Claude to analyze call transcript data from Snowflake and posts customer insights to CX team."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "AI-Assisted Customer Call Analysis: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "AI-Assisted Customer Call Analysis for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Uses Anthropic Claude to analyze network anomaly patterns from Snowflake and posts findings to network ops.

naftiko: "0.5"
info:
  label: "AI-Assisted Network Anomaly Detection"
  description: "Uses Anthropic Claude to analyze network anomaly patterns from Snowflake and posts findings to network ops."
  tags:
    - network
    - anthropic
    - snowflake
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: ai_assisted_network_anomaly_detection
          description: "Uses Anthropic Claude to analyze network anomaly patterns from Snowflake and posts findings to network ops."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "AI-Assisted Network Anomaly Detection: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "AI-Assisted Network Anomaly Detection for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Uses Anthropic to analyze customer service call transcripts stored in Snowflake, extracting sentiment and key issues to update Salesforce case records.

naftiko: "0.5"
info:
  label: "Anthropic Call Transcript Analysis"
  description: "Uses Anthropic to analyze customer service call transcripts stored in Snowflake, extracting sentiment and key issues to update Salesforce case records."
  tags:
    - ai
    - customer-support
    - anthropic
    - snowflake
    - salesforce
    - automation
capability:
  exposes:
    - type: mcp
      namespace: ai-call-analysis
      port: 8080
      tools:
        - name: analyze-call-transcript
          description: "Given a call transcript and Salesforce case ID, send the transcript to Anthropic for sentiment and issue extraction, then update the Salesforce case with the analysis."
          inputParameters:
            - name: case_id
              in: body
              type: string
              description: "The Salesforce case ID associated with the call."
            - name: transcript_text
              in: body
              type: string
              description: "The full call transcript text."
          steps:
            - name: analyze-sentiment
              type: call
              call: "anthropic.create-message"
              with:
                model: "claude-opus-4-5"
                max_tokens: 512
                prompt: "Analyze this customer service call transcript. Extract: 1) Overall sentiment (positive/neutral/negative), 2) Main customer issue in one sentence, 3) Resolution status (resolved/unresolved/escalated). Return as JSON. Transcript: {{transcript_text}}"
            - name: update-case
              type: call
              call: "salesforce-cases.update-case"
              with:
                case_id: "{{case_id}}"
                call_sentiment: "{{analyze-sentiment.sentiment}}"
                issue_summary: "{{analyze-sentiment.main_issue}}"
                resolution_status: "{{analyze-sentiment.resolution_status}}"
  consumes:
    - type: http
      namespace: anthropic
      baseUri: "https://api.anthropic.com/v1"
      authentication:
        type: apikey
        key: "x-api-key"
        value: "$secrets.anthropic_api_key"
        placement: header
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: create-message
              method: POST
    - type: http
      namespace: salesforce-cases
      baseUri: "https://verizon.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case/{{case_id}}"
          inputParameters:
            - name: case_id
              in: path
          operations:
            - name: update-case
              method: PATCH

When Datadog detects API rate limit approaching, creates ServiceNow incident and alerts platform team.

naftiko: "0.5"
info:
  label: "API Gateway Rate Limit Alert"
  description: "When Datadog detects API rate limit approaching, creates ServiceNow incident and alerts platform team."
  tags:
    - devops
    - api
    - datadog
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: api_gateway_rate_limit_alert
          description: "When Datadog detects API rate limit approaching, creates ServiceNow incident and alerts platform team."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "API Gateway Rate Limit Alert: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "API Gateway Rate Limit Alert for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

When Snowflake analytics detect a self-healing opportunity, triggers automated remediation and notifies network ops.

naftiko: "0.5"
info:
  label: "Autonomous Network Healing Workflow"
  description: "When Snowflake analytics detect a self-healing opportunity, triggers automated remediation and notifies network ops."
  tags:
    - network
    - automation
    - snowflake
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: autonomous_network_healing_workflow
          description: "When Snowflake analytics detect a self-healing opportunity, triggers automated remediation and notifies network ops."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Autonomous Network Healing Workflow: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Autonomous Network Healing Workflow for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Detects AWS spend anomalies via AWS Cost Explorer and creates a ServiceNow task for the cloud FinOps team with details and recommended actions.

naftiko: "0.5"
info:
  label: "AWS Cost Anomaly Response"
  description: "Detects AWS spend anomalies via AWS Cost Explorer and creates a ServiceNow task for the cloud FinOps team with details and recommended actions."
  tags:
    - cloud
    - finops
    - aws
    - servicenow
    - cost-management
capability:
  exposes:
    - type: mcp
      namespace: aws-finops
      port: 8080
      tools:
        - name: handle-aws-cost-anomaly
          description: "Given an AWS account ID and billing period, detect cost anomalies via AWS Cost Explorer and create a ServiceNow FinOps task when overage exceeds the threshold. Use for proactive cloud cost governance."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "The AWS account ID to check for cost anomalies."
            - name: time_period_start
              in: body
              type: string
              description: "Start date for cost analysis in YYYY-MM-DD format."
            - name: time_period_end
              in: body
              type: string
              description: "End date for cost analysis in YYYY-MM-DD format."
          steps:
            - name: get-cost-summary
              type: call
              call: "aws-cost.get-cost-and-usage"
              with:
                account_id: "{{account_id}}"
                start: "{{time_period_start}}"
                end: "{{time_period_end}}"
            - name: create-finops-task
              type: call
              call: "servicenow-finops.create-task"
              with:
                short_description: "AWS cost anomaly: account {{account_id}} — {{time_period_start}} to {{time_period_end}}"
                description: "Total actual cost: {{get-cost-summary.total_cost}}. Period: {{time_period_start}} to {{time_period_end}}. Review for budget variances."
                assignment_group: "Cloud_FinOps"
  consumes:
    - type: http
      namespace: aws-cost
      baseUri: "https://ce.us-east-1.amazonaws.com"
      authentication:
        type: bearer
        token: "$secrets.aws_access_token"
      resources:
        - name: cost-and-usage
          path: "/GetCostAndUsage"
          operations:
            - name: get-cost-and-usage
              method: POST
    - type: http
      namespace: servicenow-finops
      baseUri: "https://verizon.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

Retrieves Azure resource group costs.

naftiko: "0.5"
info:
  label: "Azure Resource Cost Lookup"
  description: "Retrieves Azure resource group costs."
  tags:
    - cloud
    - azure
    - finops
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: azure_resource_cost_lookup
          description: "Retrieves Azure resource group costs."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary identifier." 
          call: primary.get-azure
          with:
            entity_id: "{{entity_id}}" 
          outputParameters:
            - name: result
              type: string
              mapping: "$.data" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Pulls capital project data from Oracle, queries Snowflake for variances, and posts to finance.

naftiko: "0.5"
info:
  label: "Capital Project Budget Variance Report"
  description: "Pulls capital project data from Oracle, queries Snowflake for variances, and posts to finance."
  tags:
    - finance
    - capital-projects
    - oracle
    - snowflake
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: capital_project_budget_variance_report
          description: "Pulls capital project data from Oracle, queries Snowflake for variances, and posts to finance."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Capital Project Budget Variance Report: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Capital Project Budget Variance Report for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Monitors interconnect performance via Snowflake, creates ServiceNow alerts for degradation, and notifies network ops.

naftiko: "0.5"
info:
  label: "Carrier Interconnect Performance Monitoring"
  description: "Monitors interconnect performance via Snowflake, creates ServiceNow alerts for degradation, and notifies network ops."
  tags:
    - network
    - interconnect
    - snowflake
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: carrier_interconnect_performance_monitoring
          description: "Monitors interconnect performance via Snowflake, creates ServiceNow alerts for degradation, and notifies network ops."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Carrier Interconnect Performance Monitoring: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Carrier Interconnect Performance Monitoring for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

When a cell tower alarm fires, queries Datadog for metrics, creates ServiceNow incident, and pages field ops.

naftiko: "0.5"
info:
  label: "Cell Tower Alarm Triage"
  description: "When a cell tower alarm fires, queries Datadog for metrics, creates ServiceNow incident, and pages field ops."
  tags:
    - network
    - tower
    - datadog
    - servicenow
    - pagerduty
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: cell_tower_alarm_triage
          description: "When a cell tower alarm fires, queries Datadog for metrics, creates ServiceNow incident, and pages field ops."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Cell Tower Alarm Triage: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Cell Tower Alarm Triage for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Queries AWS and Azure costs, identifies optimizations, and posts recommendations to cloud team.

naftiko: "0.5"
info:
  label: "Cloud Cost Optimization Orchestration"
  description: "Queries AWS and Azure costs, identifies optimizations, and posts recommendations to cloud team."
  tags:
    - cloud
    - finops
    - azure
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: cloud_cost_optimization_orchestration
          description: "Queries AWS and Azure costs, identifies optimizations, and posts recommendations to cloud team."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Cloud Cost Optimization Orchestration: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Cloud Cost Optimization Orchestration for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Queries Workday for overdue training, creates ServiceNow ticket, and notifies managers.

naftiko: "0.5"
info:
  label: "Compliance Training Overdue Alert"
  description: "Queries Workday for overdue training, creates ServiceNow ticket, and notifies managers."
  tags:
    - hr
    - compliance
    - workday
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: compliance_training_overdue_alert
          description: "Queries Workday for overdue training, creates ServiceNow ticket, and notifies managers."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Compliance Training Overdue Alert: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Compliance Training Overdue Alert for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Retrieves a Confluence page by ID.

naftiko: "0.5"
info:
  label: "Confluence Page Lookup"
  description: "Retrieves a Confluence page by ID."
  tags:
    - collaboration
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: confluence_page_lookup
          description: "Retrieves a Confluence page by ID."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary identifier." 
          call: primary.get-confluence
          with:
            entity_id: "{{entity_id}}" 
          outputParameters:
            - name: result
              type: string
              mapping: "$.data" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Verifies contractor certifications, provisions site access via Okta, and notifies the safety team.

naftiko: "0.5"
info:
  label: "Contractor Safety Certification Check"
  description: "Verifies contractor certifications, provisions site access via Okta, and notifies the safety team."
  tags:
    - ehs
    - contractor-management
    - okta
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: contractor_safety_certification_check
          description: "Verifies contractor certifications, provisions site access via Okta, and notifies the safety team."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Contractor Safety Certification Check: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Contractor Safety Certification Check for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

When a CrowdStrike detection indicates an endpoint compromise, automatically isolates the host, creates a ServiceNow P1 security incident, and notifies the CISO team via Slack.

naftiko: "0.5"
info:
  label: "CrowdStrike Endpoint Isolation Response"
  description: "When a CrowdStrike detection indicates an endpoint compromise, automatically isolates the host, creates a ServiceNow P1 security incident, and notifies the CISO team via Slack."
  tags:
    - security
    - crowdstrike
    - servicenow
    - slack
    - endpoint-security
    - incident-response
capability:
  exposes:
    - type: mcp
      namespace: endpoint-response
      port: 8080
      tools:
        - name: isolate-compromised-endpoint
          description: "Given a CrowdStrike device ID and detection ID, contain the endpoint via CrowdStrike, create a P1 security incident in ServiceNow, and alert the CISO team on Slack."
          inputParameters:
            - name: device_id
              in: body
              type: string
              description: "The CrowdStrike device ID to contain."
            - name: detection_id
              in: body
              type: string
              description: "The CrowdStrike detection ID triggering the isolation."
            - name: hostname
              in: body
              type: string
              description: "Hostname of the compromised endpoint."
          steps:
            - name: contain-device
              type: call
              call: "crowdstrike-contain.contain-host"
              with:
                device_id: "{{device_id}}"
            - name: create-p1-incident
              type: call
              call: "servicenow-endpoint.create-incident"
              with:
                short_description: "ENDPOINT COMPROMISE: {{hostname}} isolated via CrowdStrike"
                description: "CrowdStrike detection {{detection_id}} triggered automatic isolation of {{hostname}} (device {{device_id}}). Immediate investigation required."
                category: "security"
                urgency: "1"
                impact: "1"
            - name: alert-ciso
              type: call
              call: "slack-ciso.post-message"
              with:
                channel: "ciso-alerts"
                text: "CRITICAL: Endpoint {{hostname}} isolated. CrowdStrike detection: {{detection_id}}. ServiceNow P1: {{create-p1-incident.number}}. Immediate response required."
  consumes:
    - type: http
      namespace: crowdstrike-contain
      baseUri: "https://api.crowdstrike.com"
      authentication:
        type: bearer
        token: "$secrets.crowdstrike_token"
      resources:
        - name: device-actions
          path: "/devices/entities/devices-actions/v2"
          operations:
            - name: contain-host
              method: POST
    - type: http
      namespace: servicenow-endpoint
      baseUri: "https://verizon.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: slack-ciso
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

When CrowdStrike detects malware, quarantines the endpoint, creates ServiceNow incident, and alerts SOC.

naftiko: "0.5"
info:
  label: "CrowdStrike Endpoint Quarantine Workflow"
  description: "When CrowdStrike detects malware, quarantines the endpoint, creates ServiceNow incident, and alerts SOC."
  tags:
    - security
    - crowdstrike
    - servicenow
    - slack
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: crowdstrike_endpoint_quarantine_workflow
          description: "When CrowdStrike detects malware, quarantines the endpoint, creates ServiceNow incident, and alerts SOC."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "CrowdStrike Endpoint Quarantine Workflow: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "CrowdStrike Endpoint Quarantine Workflow for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Retrieves endpoint status from CrowdStrike.

naftiko: "0.5"
info:
  label: "CrowdStrike Host Status Lookup"
  description: "Retrieves endpoint status from CrowdStrike."
  tags:
    - security
    - crowdstrike
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: crowdstrike_host_status_lookup
          description: "Retrieves endpoint status from CrowdStrike."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary identifier." 
          call: primary.get-crowdstrike
          with:
            entity_id: "{{entity_id}}" 
          outputParameters:
            - name: result
              type: string
              mapping: "$.data" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

When a billing dispute is received, queries Oracle for charge details, creates Salesforce case, and notifies billing team.

naftiko: "0.5"
info:
  label: "Customer Billing Dispute Resolution"
  description: "When a billing dispute is received, queries Oracle for charge details, creates Salesforce case, and notifies billing team."
  tags:
    - billing
    - oracle
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: customer_billing_dispute_resolution
          description: "When a billing dispute is received, queries Oracle for charge details, creates Salesforce case, and notifies billing team."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Customer Billing Dispute Resolution: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Customer Billing Dispute Resolution for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Identifies at-risk customers via Snowflake analytics, creates Salesforce retention tasks, and notifies the retention team.

naftiko: "0.5"
info:
  label: "Customer Churn Intervention Workflow"
  description: "Identifies at-risk customers via Snowflake analytics, creates Salesforce retention tasks, and notifies the retention team."
  tags:
    - customer-retention
    - snowflake
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: customer_churn_intervention_workflow
          description: "Identifies at-risk customers via Snowflake analytics, creates Salesforce retention tasks, and notifies the retention team."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Customer Churn Intervention Workflow: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Customer Churn Intervention Workflow for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Provisions CPE devices by creating ServiceNow work orders, scheduling technician dispatch, and notifying customer ops.

naftiko: "0.5"
info:
  label: "Customer Premise Equipment Provisioning"
  description: "Provisions CPE devices by creating ServiceNow work orders, scheduling technician dispatch, and notifying customer ops."
  tags:
    - field-service
    - cpe
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: customer_premise_equipment_provisioning
          description: "Provisions CPE devices by creating ServiceNow work orders, scheduling technician dispatch, and notifying customer ops."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Customer Premise Equipment Provisioning: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Customer Premise Equipment Provisioning for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

When data center capacity exceeds threshold, creates ServiceNow incident and notifies infrastructure team.

naftiko: "0.5"
info:
  label: "Data Center Capacity Alert"
  description: "When data center capacity exceeds threshold, creates ServiceNow incident and notifies infrastructure team."
  tags:
    - infrastructure
    - data-center
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: data_center_capacity_alert
          description: "When data center capacity exceeds threshold, creates ServiceNow incident and notifies infrastructure team."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Data Center Capacity Alert: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Data Center Capacity Alert for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

When a Snowflake ETL pipeline fails, creates Jira ticket and notifies data engineering.

naftiko: "0.5"
info:
  label: "Data Pipeline Failure Recovery"
  description: "When a Snowflake ETL pipeline fails, creates Jira ticket and notifies data engineering."
  tags:
    - data-engineering
    - snowflake
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: data_pipeline_failure_recovery
          description: "When a Snowflake ETL pipeline fails, creates Jira ticket and notifies data engineering."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Data Pipeline Failure Recovery: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Data Pipeline Failure Recovery for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

When a Databricks job fails, creates Jira ticket and notifies data platform team.

naftiko: "0.5"
info:
  label: "Databricks Job Failure Alert"
  description: "When a Databricks job fails, creates Jira ticket and notifies data platform team."
  tags:
    - data-engineering
    - databricks
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: databricks_job_failure_alert
          description: "When a Databricks job fails, creates Jira ticket and notifies data platform team."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Databricks Job Failure Alert: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Databricks Job Failure Alert for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Retrieves Datadog monitor status.

naftiko: "0.5"
info:
  label: "Datadog Monitor Status Lookup"
  description: "Retrieves Datadog monitor status."
  tags:
    - observability
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: datadog_monitor_status_lookup
          description: "Retrieves Datadog monitor status."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary identifier." 
          call: primary.get-datadog
          with:
            entity_id: "{{entity_id}}" 
          outputParameters:
            - name: result
              type: string
              mapping: "$.data" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

When a Datadog monitor fires for a critical network node or 5G infrastructure component, creates a P1 ServiceNow incident and pages the NOC via PagerDuty.

naftiko: "0.5"
info:
  label: "Datadog Network Infrastructure Alert Handler"
  description: "When a Datadog monitor fires for a critical network node or 5G infrastructure component, creates a P1 ServiceNow incident and pages the NOC via PagerDuty."
  tags:
    - itsm
    - incident-response
    - datadog
    - servicenow
    - pagerduty
    - network
capability:
  exposes:
    - type: mcp
      namespace: noc-ops
      port: 8080
      tools:
        - name: handle-network-alert
          description: "Given a Datadog alert ID and affected network segment, create a P1 ServiceNow incident and trigger a PagerDuty incident for the NOC. Use for critical network or 5G infrastructure failures."
          inputParameters:
            - name: alert_id
              in: body
              type: string
              description: "The Datadog alert or event ID."
            - name: monitor_name
              in: body
              type: string
              description: "The name of the Datadog monitor that fired."
            - name: network_segment
              in: body
              type: string
              description: "The affected network segment or node identifier."
            - name: severity
              in: body
              type: string
              description: "Alert severity: critical, high, medium, or low."
          steps:
            - name: get-alert
              type: call
              call: "datadog.get-event"
              with:
                event_id: "{{alert_id}}"
            - name: create-incident
              type: call
              call: "servicenow-noc.create-incident"
              with:
                short_description: "[{{severity}}] {{monitor_name}} — {{network_segment}}"
                description: "Datadog alert {{alert_id}}: {{get-alert.text}}. Network segment: {{network_segment}}."
                urgency: "1"
                impact: "1"
            - name: page-noc
              type: call
              call: "pagerduty.create-incident"
              with:
                title: "Network alert: {{monitor_name}} on {{network_segment}}"
                body: "ServiceNow incident: {{create-incident.number}}. Datadog alert: {{alert_id}}. Severity: {{severity}}."
                service_id: "NOC_SERVICE_ID"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: events
          path: "/events/{{event_id}}"
          inputParameters:
            - name: event_id
              in: path
          operations:
            - name: get-event
              method: GET
    - type: http
      namespace: servicenow-noc
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: pagerduty
      baseUri: "https://api.pagerduty.com"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.pagerduty_token"
        placement: header
      resources:
        - name: incidents
          path: "/incidents"
          operations:
            - name: create-incident
              method: POST

Fetches Datadog SLO compliance data for Verizon's consumer and business services and posts a weekly reliability report to the leadership Slack channel.

naftiko: "0.5"
info:
  label: "Datadog SLO Compliance Report"
  description: "Fetches Datadog SLO compliance data for Verizon's consumer and business services and posts a weekly reliability report to the leadership Slack channel."
  tags:
    - observability
    - datadog
    - slack
    - slo
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: slo-reporting
      port: 8080
      tools:
        - name: publish-slo-report
          description: "Fetch SLO compliance data from Datadog for a given timeframe and post a formatted report to the Slack leadership channel. Use for weekly or monthly reliability reporting to stakeholders."
          inputParameters:
            - name: slo_ids
              in: body
              type: string
              description: "Comma-separated Datadog SLO IDs to include in the report."
            - name: timeframe
              in: body
              type: string
              description: "Reporting timeframe: 7d, 30d, or 90d."
            - name: slack_channel
              in: body
              type: string
              description: "Slack channel for the SLO report."
          steps:
            - name: get-slo-data
              type: call
              call: "datadog-slo.get-slo-history"
              with:
                ids: "{{slo_ids}}"
                timeframe: "{{timeframe}}"
            - name: post-report
              type: call
              call: "slack-leadership.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "SLO Compliance Report ({{timeframe}}): {{get-slo-data.compliant_count}} compliant, {{get-slo-data.breached_count}} breached. Overall: {{get-slo-data.overall_pct}}%."
  consumes:
    - type: http
      namespace: datadog-slo
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: slo-history
          path: "/slo/history"
          operations:
            - name: get-slo-history
              method: GET
    - type: http
      namespace: slack-leadership
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Coordinates DR test by creating Jira checklist, scheduling ServiceNow change window, and notifying all teams.

naftiko: "0.5"
info:
  label: "Disaster Recovery Test Coordination"
  description: "Coordinates DR test by creating Jira checklist, scheduling ServiceNow change window, and notifying all teams."
  tags:
    - infrastructure
    - disaster-recovery
    - jira
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: disaster_recovery_test_coordination
          description: "Coordinates DR test by creating Jira checklist, scheduling ServiceNow change window, and notifying all teams."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Disaster Recovery Test Coordination: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Disaster Recovery Test Coordination for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Monitors edge node health via Datadog, creates ServiceNow incidents for failures, and notifies the edge platform team.

naftiko: "0.5"
info:
  label: "Edge Computing Node Health Check"
  description: "Monitors edge node health via Datadog, creates ServiceNow incidents for failures, and notifies the edge platform team."
  tags:
    - edge
    - infrastructure
    - datadog
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: edge_computing_node_health_check
          description: "Monitors edge node health via Datadog, creates ServiceNow incidents for failures, and notifies the edge platform team."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Edge Computing Node Health Check: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Edge Computing Node Health Check for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

When an employee departs, revokes Okta access, updates Workday, and notifies IT and HR.

naftiko: "0.5"
info:
  label: "Employee Offboarding Workflow"
  description: "When an employee departs, revokes Okta access, updates Workday, and notifies IT and HR."
  tags:
    - hr
    - offboarding
    - workday
    - okta
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: employee_offboarding_workflow
          description: "When an employee departs, revokes Okta access, updates Workday, and notifies IT and HR."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Employee Offboarding Workflow: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Employee Offboarding Workflow for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions an Okta account, 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 an Okta account, and sends a Microsoft Teams welcome message to the new employee."
  tags:
    - hr
    - onboarding
    - workday
    - servicenow
    - okta
    - 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, Okta, 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: "The department or business unit 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"
                description: "Onboarding for {{get-employee.full_name}} starting {{start_date}} in {{department}}."
            - name: provision-okta
              type: call
              call: "okta.create-user"
              with:
                email: "{{get-employee.work_email}}"
                first_name: "{{get-employee.first_name}}"
                last_name: "{{get-employee.last_name}}"
                department: "{{department}}"
            - name: send-welcome
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-employee.work_email}}"
                text: "Welcome to Verizon, {{get-employee.first_name}}! Your IT onboarding ticket is {{open-ticket.number}} and your Okta account is ready."
  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://verizon.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: okta
      baseUri: "https://verizon.okta.com/api/v1"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.okta_token"
        placement: header
      resources:
        - name: users
          path: "/users"
          operations:
            - name: create-user
              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

Routes enterprise deal approvals from Salesforce, validates pricing in Snowflake, and notifies leadership.

naftiko: "0.5"
info:
  label: "Enterprise Deal Approval Workflow"
  description: "Routes enterprise deal approvals from Salesforce, validates pricing in Snowflake, and notifies leadership."
  tags:
    - sales
    - enterprise
    - salesforce
    - snowflake
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: enterprise_deal_approval_workflow
          description: "Routes enterprise deal approvals from Salesforce, validates pricing in Snowflake, and notifies leadership."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Enterprise Deal Approval Workflow: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Enterprise Deal Approval Workflow for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Tracks FCC filing deadlines in Jira, validates compliance status, and sends escalation notifications.

naftiko: "0.5"
info:
  label: "FCC Regulatory Filing Tracker"
  description: "Tracks FCC filing deadlines in Jira, validates compliance status, and sends escalation notifications."
  tags:
    - compliance
    - regulatory
    - fcc
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: fcc_regulatory_filing_tracker
          description: "Tracks FCC filing deadlines in Jira, validates compliance status, and sends escalation notifications."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "FCC Regulatory Filing Tracker: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "FCC Regulatory Filing Tracker for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Queries Snowflake for fiber deployment metrics, refreshes Power BI dashboard, and posts progress to leadership.

naftiko: "0.5"
info:
  label: "Fiber Deployment Progress Digest"
  description: "Queries Snowflake for fiber deployment metrics, refreshes Power BI dashboard, and posts progress to leadership."
  tags:
    - network
    - fiber
    - snowflake
    - power-bi
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: fiber_deployment_progress_digest
          description: "Queries Snowflake for fiber deployment metrics, refreshes Power BI dashboard, and posts progress to leadership."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Fiber Deployment Progress Digest: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Fiber Deployment Progress Digest for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

When a GitHub Actions workflow fails on a protected branch, creates a Jira bug, posts an alert to the engineering Slack channel, and marks a Datadog deployment event.

naftiko: "0.5"
info:
  label: "GitHub CI/CD Pipeline Failure Handler"
  description: "When a GitHub Actions workflow fails on a protected branch, creates a Jira bug, posts an alert to the engineering Slack channel, and marks a Datadog deployment event."
  tags:
    - devops
    - cicd
    - github
    - jira
    - slack
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: devops-cicd
      port: 8080
      tools:
        - name: handle-pipeline-failure
          description: "Given a GitHub Actions run ID and repository, create a Jira bug, post a Slack alert, and create a Datadog deployment event. Use when a protected-branch pipeline fails."
          inputParameters:
            - name: run_id
              in: body
              type: string
              description: "The GitHub Actions workflow run ID."
            - name: repository
              in: body
              type: string
              description: "GitHub repository in owner/repo format."
            - name: branch
              in: body
              type: string
              description: "The branch name where the pipeline failed."
            - name: workflow_name
              in: body
              type: string
              description: "The failed GitHub Actions workflow name."
          steps:
            - name: get-run
              type: call
              call: "github.get-workflow-run"
              with:
                repo: "{{repository}}"
                run_id: "{{run_id}}"
            - name: create-bug
              type: call
              call: "jira.create-issue"
              with:
                project_key: "ENG"
                issuetype: "Bug"
                summary: "[CI Failure] {{repository}} / {{branch}} — {{workflow_name}}"
                description: "Run {{run_id}} failed. URL: {{get-run.html_url}}"
            - name: post-slack-alert
              type: call
              call: "slack.post-message"
              with:
                channel: "engineering-alerts"
                text: "Pipeline Failure: {{repository}} | Branch: {{branch}} | Jira: {{create-bug.key}} | Run: {{get-run.html_url}}"
            - name: create-dd-event
              type: call
              call: "datadog-events.create-event"
              with:
                title: "CI Failure: {{repository}} / {{branch}}"
                text: "Pipeline {{run_id}} failed. Jira: {{create-bug.key}}"
                alert_type: "error"
  consumes:
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: workflow-runs
          path: "/repos/{{repo}}/actions/runs/{{run_id}}"
          inputParameters:
            - name: repo
              in: path
            - name: run_id
              in: path
          operations:
            - name: get-workflow-run
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://verizon.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST
    - type: http
      namespace: datadog-events
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: events
          path: "/events"
          operations:
            - name: create-event
              method: POST

Monitors GitHub Dependabot alerts for critical vulnerabilities in Verizon engineering repositories and routes remediation tasks to the responsible team via ServiceNow and Jira.

naftiko: "0.5"
info:
  label: "GitHub Dependabot Vulnerability Alert"
  description: "Monitors GitHub Dependabot alerts for critical vulnerabilities in Verizon engineering repositories and routes remediation tasks to the responsible team via ServiceNow and Jira."
  tags:
    - devops
    - security
    - github
    - jira
    - servicenow
    - vulnerability
capability:
  exposes:
    - type: mcp
      namespace: dep-security
      port: 8080
      tools:
        - name: handle-dependabot-alert
          description: "Given a GitHub Dependabot alert number and repository, create a Jira security task and a ServiceNow vulnerability incident for tracking and remediation."
          inputParameters:
            - name: repository
              in: body
              type: string
              description: "GitHub repository in owner/repo format."
            - name: alert_number
              in: body
              type: integer
              description: "The Dependabot alert number."
          steps:
            - name: get-alert
              type: call
              call: "github-dep.get-dependabot-alert"
              with:
                repo: "{{repository}}"
                alert_number: "{{alert_number}}"
            - name: create-jira-task
              type: call
              call: "jira-sec.create-issue"
              with:
                project_key: "SEC"
                issuetype: "Task"
                summary: "Fix: {{get-alert.security_advisory.cve_id}} in {{repository}}"
                description: "Package: {{get-alert.dependency.package.name}}. Severity: {{get-alert.security_advisory.severity}}. CVE: {{get-alert.security_advisory.cve_id}}."
            - name: create-snow-incident
              type: call
              call: "servicenow-dep.create-incident"
              with:
                short_description: "Dependabot: {{get-alert.security_advisory.cve_id}} in {{repository}}"
                description: "Jira task: {{create-jira-task.key}}. CVE: {{get-alert.security_advisory.cve_id}}. Package: {{get-alert.dependency.package.name}}."
                category: "security"
  consumes:
    - type: http
      namespace: github-dep
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: dependabot-alerts
          path: "/repos/{{repo}}/dependabot/alerts/{{alert_number}}"
          inputParameters:
            - name: repo
              in: path
            - name: alert_number
              in: path
          operations:
            - name: get-dependabot-alert
              method: GET
    - type: http
      namespace: jira-sec
      baseUri: "https://verizon.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: servicenow-dep
      baseUri: "https://verizon.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

When Dependabot finds a vulnerability, creates Jira ticket and alerts security.

naftiko: "0.5"
info:
  label: "GitHub Dependabot Vulnerability Triage"
  description: "When Dependabot finds a vulnerability, creates Jira ticket and alerts security."
  tags:
    - security
    - github
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: github_dependabot_vulnerability_triage
          description: "When Dependabot finds a vulnerability, creates Jira ticket and alerts security."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "GitHub Dependabot Vulnerability Triage: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "GitHub Dependabot Vulnerability Triage for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Retrieves CI/CD status for a repository.

naftiko: "0.5"
info:
  label: "GitHub Repository Status Lookup"
  description: "Retrieves CI/CD status for a repository."
  tags:
    - devops
    - github
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: github_repository_status_lookup
          description: "Retrieves CI/CD status for a repository."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary identifier." 
          call: primary.get-github
          with:
            entity_id: "{{entity_id}}" 
          outputParameters:
            - name: result
              type: string
              mapping: "$.data" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Fetches critical GitHub Advanced Security code scanning alerts across Verizon's repositories and creates CrowdStrike-linked ServiceNow security incidents for remediation.

naftiko: "0.5"
info:
  label: "GitHub Security Scan Triage"
  description: "Fetches critical GitHub Advanced Security code scanning alerts across Verizon's repositories and creates CrowdStrike-linked ServiceNow security incidents for remediation."
  tags:
    - devops
    - security
    - github
    - crowdstrike
    - servicenow
    - vulnerability
capability:
  exposes:
    - type: mcp
      namespace: security-scan-triage
      port: 8080
      tools:
        - name: triage-code-scan-alerts
          description: "Given a GitHub repository, list critical code scanning alerts and create a ServiceNow security incident for each, tagging them for CrowdStrike correlation."
          inputParameters:
            - name: repository
              in: body
              type: string
              description: "GitHub repository in owner/repo format."
            - name: severity_filter
              in: body
              type: string
              description: "Minimum severity to triage: critical or high."
          steps:
            - name: get-alerts
              type: call
              call: "github-sec.list-code-scanning-alerts"
              with:
                repo: "{{repository}}"
                severity: "{{severity_filter}}"
            - name: create-sec-incident
              type: call
              call: "servicenow-vuln.create-incident"
              with:
                short_description: "Code scan findings: {{repository}} ({{severity_filter}})"
                description: "GitHub Advanced Security found {{get-alerts.total_count}} {{severity_filter}} alerts in {{repository}}. CrowdStrike correlation required."
                category: "security"
                urgency: "1"
  consumes:
    - type: http
      namespace: github-sec
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: code-scanning-alerts
          path: "/repos/{{repo}}/code-scanning/alerts"
          inputParameters:
            - name: repo
              in: path
          operations:
            - name: list-code-scanning-alerts
              method: GET
    - type: http
      namespace: servicenow-vuln
      baseUri: "https://verizon.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

Syncs HubSpot marketing qualified leads (MQLs) to Salesforce by creating or updating lead records and notifying the assigned sales rep via Slack.

naftiko: "0.5"
info:
  label: "HubSpot Lead Enrichment from Salesforce"
  description: "Syncs HubSpot marketing qualified leads (MQLs) to Salesforce by creating or updating lead records and notifying the assigned sales rep via Slack."
  tags:
    - marketing
    - crm
    - hubspot
    - salesforce
    - slack
    - lead-management
capability:
  exposes:
    - type: mcp
      namespace: lead-enrichment
      port: 8080
      tools:
        - name: sync-mql-to-salesforce
          description: "Given a HubSpot contact ID that has reached MQL status, create or update the corresponding lead in Salesforce and notify the assigned sales rep via Slack."
          inputParameters:
            - name: hubspot_contact_id
              in: body
              type: string
              description: "The HubSpot contact ID that reached MQL status."
            - name: sales_rep_slack_id
              in: body
              type: string
              description: "Slack user ID of the assigned sales representative."
          steps:
            - name: get-contact
              type: call
              call: "hubspot-contacts.get-contact"
              with:
                contact_id: "{{hubspot_contact_id}}"
            - name: create-sf-lead
              type: call
              call: "salesforce-lead.create-lead"
              with:
                FirstName: "{{get-contact.firstname}}"
                LastName: "{{get-contact.lastname}}"
                Email: "{{get-contact.email}}"
                Company: "{{get-contact.company}}"
                LeadSource: "HubSpot_MQL"
            - name: notify-rep
              type: call
              call: "slack-sales.post-message"
              with:
                channel: "{{sales_rep_slack_id}}"
                text: "New MQL assigned: {{get-contact.firstname}} {{get-contact.lastname}} from {{get-contact.company}}. Salesforce lead: {{create-sf-lead.id}}."
  consumes:
    - type: http
      namespace: hubspot-contacts
      baseUri: "https://api.hubapi.com/crm/v3"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: contacts
          path: "/objects/contacts/{{contact_id}}"
          inputParameters:
            - name: contact_id
              in: path
          operations:
            - name: get-contact
              method: GET
    - type: http
      namespace: salesforce-lead
      baseUri: "https://verizon.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: leads
          path: "/sobjects/Lead"
          operations:
            - name: create-lead
              method: POST
    - type: http
      namespace: slack-sales
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Pulls HubSpot email campaign metrics and posts a weekly marketing performance summary to the Verizon Business marketing Slack channel.

naftiko: "0.5"
info:
  label: "HubSpot Marketing Campaign Performance Digest"
  description: "Pulls HubSpot email campaign metrics and posts a weekly marketing performance summary to the Verizon Business marketing Slack channel."
  tags:
    - marketing
    - hubspot
    - slack
    - reporting
    - campaigns
capability:
  exposes:
    - type: mcp
      namespace: marketing-reporting
      port: 8080
      tools:
        - name: digest-campaign-performance
          description: "Given a HubSpot campaign ID, fetch open rate, click rate, and conversion metrics, then post a formatted performance digest to the marketing Slack channel."
          inputParameters:
            - name: campaign_id
              in: body
              type: string
              description: "The HubSpot email campaign ID."
            - name: slack_channel
              in: body
              type: string
              description: "Slack channel name or ID for the campaign digest."
          steps:
            - name: get-campaign-stats
              type: call
              call: "hubspot.get-campaign-stats"
              with:
                campaign_id: "{{campaign_id}}"
            - name: post-digest
              type: call
              call: "slack-marketing.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Campaign Digest: {{get-campaign-stats.name}}. Sent: {{get-campaign-stats.numSent}}, Opens: {{get-campaign-stats.numOpened}} ({{get-campaign-stats.openRate}}%), Clicks: {{get-campaign-stats.numClicked}} ({{get-campaign-stats.clickRate}}%)."
  consumes:
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com/marketing/v3"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: campaigns
          path: "/emails/{{campaign_id}}/statistics/summary"
          inputParameters:
            - name: campaign_id
              in: path
          operations:
            - name: get-campaign-stats
              method: GET
    - type: http
      namespace: slack-marketing
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

When GitHub finds a vulnerability, creates Jira ticket, opens ServiceNow change request, and alerts security.

naftiko: "0.5"
info:
  label: "IT Security Vulnerability Remediation"
  description: "When GitHub finds a vulnerability, creates Jira ticket, opens ServiceNow change request, and alerts security."
  tags:
    - security
    - github
    - jira
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: it_security_vulnerability_remediation
          description: "When GitHub finds a vulnerability, creates Jira ticket, opens ServiceNow change request, and alerts security."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "IT Security Vulnerability Remediation: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "IT Security Vulnerability Remediation for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Retrieves a Jira issue by key.

naftiko: "0.5"
info:
  label: "Jira Issue Lookup"
  description: "Retrieves a Jira issue by key."
  tags:
    - project-management
    - jira
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: jira_issue_lookup
          description: "Retrieves a Jira issue by key."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary identifier." 
          call: primary.get-jira
          with:
            entity_id: "{{entity_id}}" 
          outputParameters:
            - name: result
              type: string
              mapping: "$.data" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Pulls Jira sprint completion data and velocity metrics, then posts a formatted engineering digest to the team's Slack channel at the close of each sprint.

naftiko: "0.5"
info:
  label: "Jira Sprint Velocity Digest"
  description: "Pulls Jira sprint completion data and velocity metrics, then posts a formatted engineering digest to the team's Slack channel at the close of each sprint."
  tags:
    - devops
    - jira
    - slack
    - reporting
    - agile
capability:
  exposes:
    - type: mcp
      namespace: agile-reporting
      port: 8080
      tools:
        - name: digest-sprint-velocity
          description: "Given a Jira board ID and sprint ID, fetch sprint metrics and post a velocity digest to the team Slack channel. Use at the end of each sprint for retrospective data."
          inputParameters:
            - name: board_id
              in: body
              type: string
              description: "The Jira board ID."
            - name: sprint_id
              in: body
              type: string
              description: "The Jira sprint ID to report on."
            - name: slack_channel
              in: body
              type: string
              description: "Slack channel name or ID for the sprint digest."
          steps:
            - name: get-sprint
              type: call
              call: "jira.get-sprint"
              with:
                board_id: "{{board_id}}"
                sprint_id: "{{sprint_id}}"
            - name: get-issues
              type: call
              call: "jira-issues.list-sprint-issues"
              with:
                sprint_id: "{{sprint_id}}"
            - name: post-digest
              type: call
              call: "slack-sprint.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Sprint Digest: {{get-sprint.name}} completed. Stories done: {{get-issues.total_done}}, Remaining: {{get-issues.total_remaining}}, Velocity: {{get-issues.story_points_completed}} pts."
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://verizon.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_token"
      resources:
        - name: sprints
          path: "/board/{{board_id}}/sprint/{{sprint_id}}"
          inputParameters:
            - name: board_id
              in: path
            - name: sprint_id
              in: path
          operations:
            - name: get-sprint
              method: GET
    - type: http
      namespace: jira-issues
      baseUri: "https://verizon.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/search"
          operations:
            - name: list-sprint-issues
              method: GET
    - type: http
      namespace: slack-sprint
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

When Datadog detects cluster resource pressure, triggers autoscaling review, creates ServiceNow change request.

naftiko: "0.5"
info:
  label: "Kubernetes Cluster Scaling Alert"
  description: "When Datadog detects cluster resource pressure, triggers autoscaling review, creates ServiceNow change request."
  tags:
    - devops
    - kubernetes
    - datadog
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: kubernetes_cluster_scaling_alert
          description: "When Datadog detects cluster resource pressure, triggers autoscaling review, creates ServiceNow change request."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Kubernetes Cluster Scaling Alert: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Kubernetes Cluster Scaling Alert for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Monitors Kubernetes deployment rollout status via the GitHub Actions workflow and creates a Datadog event and Slack alert when a rollout fails or takes too long.

naftiko: "0.5"
info:
  label: "Kubernetes Deployment Rollout Monitor"
  description: "Monitors Kubernetes deployment rollout status via the GitHub Actions workflow and creates a Datadog event and Slack alert when a rollout fails or takes too long."
  tags:
    - devops
    - kubernetes
    - datadog
    - slack
    - deployment
    - monitoring
capability:
  exposes:
    - type: mcp
      namespace: k8s-deployment
      port: 8080
      tools:
        - name: monitor-deployment-rollout
          description: "Given a GitHub Actions deployment run ID and Kubernetes deployment name, check rollout status and create a Datadog event and Slack alert on failure or timeout."
          inputParameters:
            - name: run_id
              in: body
              type: string
              description: "GitHub Actions workflow run ID for the deployment."
            - name: deployment_name
              in: body
              type: string
              description: "Kubernetes deployment name being rolled out."
            - name: namespace
              in: body
              type: string
              description: "Kubernetes namespace where the deployment lives."
            - name: slack_channel
              in: body
              type: string
              description: "Slack channel to alert on deployment issues."
          steps:
            - name: get-deploy-status
              type: call
              call: "github-deploy.get-workflow-run"
              with:
                repo: "verizon/platform-services"
                run_id: "{{run_id}}"
            - name: create-dd-event
              type: call
              call: "datadog-deploy.create-event"
              with:
                title: "Deployment: {{deployment_name}} in {{namespace}}"
                text: "Deployment {{deployment_name}} status: {{get-deploy-status.conclusion}}. Run: {{run_id}}."
                alert_type: "error"
            - name: post-slack-alert
              type: call
              call: "slack-deploy.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Deployment Alert: {{deployment_name}} ({{namespace}}) — Status: {{get-deploy-status.conclusion}}. Datadog event created. GitHub run: {{get-deploy-status.html_url}}"
  consumes:
    - type: http
      namespace: github-deploy
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: workflow-runs
          path: "/repos/{{repo}}/actions/runs/{{run_id}}"
          inputParameters:
            - name: repo
              in: path
            - name: run_id
              in: path
          operations:
            - name: get-workflow-run
              method: GET
    - type: http
      namespace: datadog-deploy
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: events
          path: "/events"
          operations:
            - name: create-event
              method: POST
    - type: http
      namespace: slack-deploy
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Pulls open positions from Workday, creates LinkedIn postings, and posts summary to talent team.

naftiko: "0.5"
info:
  label: "LinkedIn Talent Acquisition Campaign"
  description: "Pulls open positions from Workday, creates LinkedIn postings, and posts summary to talent team."
  tags:
    - hr
    - talent-acquisition
    - workday
    - linkedin
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: linkedin_talent_acquisition_campaign
          description: "Pulls open positions from Workday, creates LinkedIn postings, and posts summary to talent team."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "LinkedIn Talent Acquisition Campaign: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "LinkedIn Talent Acquisition Campaign for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Pulls new applicants from LinkedIn Recruiter for open Verizon Technology positions and creates candidate records in Workday Recruiting for recruiter review.

naftiko: "0.5"
info:
  label: "LinkedIn Talent Sourcing Pipeline"
  description: "Pulls new applicants from LinkedIn Recruiter for open Verizon Technology positions and creates candidate records in Workday Recruiting for recruiter review."
  tags:
    - hr
    - recruiting
    - linkedin
    - workday
    - talent-acquisition
capability:
  exposes:
    - type: mcp
      namespace: talent-pipeline
      port: 8080
      tools:
        - name: sync-linkedin-candidates
          description: "Given a LinkedIn job posting ID and Workday requisition ID, fetch new applicants and create candidate records in Workday Recruiting."
          inputParameters:
            - name: linkedin_job_id
              in: body
              type: string
              description: "The LinkedIn job posting ID to pull applicants from."
            - name: workday_req_id
              in: body
              type: string
              description: "The Workday job requisition ID to create candidates under."
          steps:
            - name: get-applicants
              type: call
              call: "linkedin.get-job-applicants"
              with:
                job_id: "{{linkedin_job_id}}"
            - name: create-candidates
              type: call
              call: "workday-recruit.create-candidate"
              with:
                requisition_id: "{{workday_req_id}}"
                applicants: "{{get-applicants.elements}}"
  consumes:
    - type: http
      namespace: linkedin
      baseUri: "https://api.linkedin.com/v2"
      authentication:
        type: bearer
        token: "$secrets.linkedin_token"
      resources:
        - name: job-applicants
          path: "/jobApplications"
          operations:
            - name: get-job-applicants
              method: GET
    - type: http
      namespace: workday-recruit
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: candidates
          path: "/jobApplications"
          operations:
            - name: create-candidate
              method: POST

Posts a message to a Teams channel.

naftiko: "0.5"
info:
  label: "Microsoft Teams Channel Notification"
  description: "Posts a message to a Teams channel."
  tags:
    - collaboration
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: microsoft_teams_channel_notification
          description: "Posts a message to a Teams channel."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary identifier." 
          call: primary.get-microsoft
          with:
            entity_id: "{{entity_id}}" 
          outputParameters:
            - name: result
              type: string
              mapping: "$.data" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Queries Snowflake for network utilization trends, generates capacity forecasts, and posts to network planning.

naftiko: "0.5"
info:
  label: "Network Capacity Planning Report"
  description: "Queries Snowflake for network utilization trends, generates capacity forecasts, and posts to network planning."
  tags:
    - network
    - capacity
    - snowflake
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: network_capacity_planning_report
          description: "Queries Snowflake for network utilization trends, generates capacity forecasts, and posts to network planning."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Network Capacity Planning Report: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Network Capacity Planning Report for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Queries Snowflake for network latency trends by region, refreshes the Power BI network dashboard, and posts the analysis to network engineering.

naftiko: "0.5"
info:
  label: "Network Latency Trend Analysis"
  description: "Queries Snowflake for network latency trends by region, refreshes the Power BI network dashboard, and posts the analysis to network engineering."
  tags:
    - network
    - analytics
    - snowflake
    - power-bi
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: network-analytics
      port: 8080
      tools:
        - name: analyze-latency-trends
          description: "Given a region and period, analyze network latency trends and post report."
          inputParameters:
            - name: region
              type: string
              description: "Network region."
            - name: period
              type: string
              description: "Analysis period."
          steps:
            - name: get-latency-data
              type: call
              call: snowflake.query-latency
              with:
                region: "{{region}}"
                period: "{{period}}"
            - name: refresh-dashboard
              type: call
              call: powerbi.refresh-dataset
              with:
                dataset_id: "$secrets.network_dashboard_id"
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_network_eng_channel"
                text: "Latency analysis {{region}} ({{period}}): p50: {{get-latency-data.p50_ms}}ms | p99: {{get-latency-data.p99_ms}}ms | Trend: {{get-latency-data.trend}} | Dashboard refreshed"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: query-latency
              method: POST
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: refresh-dataset
              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/network-eng/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

When a network outage is detected, creates ServiceNow P1 incident, pages NOC on-call, and notifies leadership.

naftiko: "0.5"
info:
  label: "Network Outage Response Orchestration"
  description: "When a network outage is detected, creates ServiceNow P1 incident, pages NOC on-call, and notifies leadership."
  tags:
    - network
    - outage
    - servicenow
    - pagerduty
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: network_outage_response_orchestration
          description: "When a network outage is detected, creates ServiceNow P1 incident, pages NOC on-call, and notifies leadership."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Network Outage Response Orchestration: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Network Outage Response Orchestration for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Coordinates pen test by creating Jira test plan, scheduling ServiceNow maintenance window, and notifying security.

naftiko: "0.5"
info:
  label: "Network Security Penetration Test Workflow"
  description: "Coordinates pen test by creating Jira test plan, scheduling ServiceNow maintenance window, and notifying security."
  tags:
    - security
    - penetration-testing
    - jira
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: network_security_penetration_test_workflow
          description: "Coordinates pen test by creating Jira test plan, scheduling ServiceNow maintenance window, and notifying security."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Network Security Penetration Test Workflow: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Network Security Penetration Test Workflow for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Monitors 5G network slice performance via Snowflake, creates ServiceNow alerts for degradation, and notifies network ops.

naftiko: "0.5"
info:
  label: "Network Slice Performance Monitoring"
  description: "Monitors 5G network slice performance via Snowflake, creates ServiceNow alerts for degradation, and notifies network ops."
  tags:
    - network
    - 5g
    - slicing
    - snowflake
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: network_slice_performance_monitoring
          description: "Monitors 5G network slice performance via Snowflake, creates ServiceNow alerts for degradation, and notifies network ops."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Network Slice Performance Monitoring: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Network Slice Performance Monitoring for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Queries weather data and Snowflake network metrics, predicts impact zones, and pre-creates ServiceNow incidents.

naftiko: "0.5"
info:
  label: "Network Weather Impact Assessment"
  description: "Queries weather data and Snowflake network metrics, predicts impact zones, and pre-creates ServiceNow incidents."
  tags:
    - network
    - weather
    - snowflake
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: network_weather_impact_assessment
          description: "Queries weather data and Snowflake network metrics, predicts impact zones, and pre-creates ServiceNow incidents."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Network Weather Impact Assessment: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Network Weather Impact Assessment for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Runs a quarterly access review by querying Okta for inactive users and creates ServiceNow de-provisioning tasks for accounts not used within the review period.

naftiko: "0.5"
info:
  label: "Okta Access Review and De-provisioning"
  description: "Runs a quarterly access review by querying Okta for inactive users and creates ServiceNow de-provisioning tasks for accounts not used within the review period."
  tags:
    - identity
    - security
    - okta
    - servicenow
    - access-management
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: access-review
      port: 8080
      tools:
        - name: run-access-review
          description: "Query Okta for user accounts inactive for more than a specified number of days and create ServiceNow de-provisioning tasks for each identified account. Use for quarterly access reviews."
          inputParameters:
            - name: inactive_days_threshold
              in: body
              type: integer
              description: "Number of days of inactivity after which a de-provisioning task is created."
            - name: deprovisioning_group
              in: body
              type: string
              description: "ServiceNow assignment group responsible for de-provisioning tasks."
          steps:
            - name: get-inactive-users
              type: call
              call: "okta-review.list-users"
              with:
                filter: "status eq \"ACTIVE\" and lastLogin lt \"{{inactive_days_threshold}}daysAgo\""
            - name: create-deprovisioning-task
              type: call
              call: "servicenow-access.create-task"
              with:
                short_description: "Access review: {{get-inactive-users.total}} inactive Okta accounts require de-provisioning"
                description: "Quarterly access review identified {{get-inactive-users.total}} accounts inactive for more than {{inactive_days_threshold}} days. Review and de-provision as appropriate."
                assignment_group: "{{deprovisioning_group}}"
  consumes:
    - type: http
      namespace: okta-review
      baseUri: "https://verizon.okta.com/api/v1"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.okta_token"
        placement: header
      resources:
        - name: users
          path: "/users"
          operations:
            - name: list-users
              method: GET
    - type: http
      namespace: servicenow-access
      baseUri: "https://verizon.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

Queries Okta for users without MFA, creates ServiceNow ticket, and notifies IT security.

naftiko: "0.5"
info:
  label: "Okta MFA Non-Compliance Escalation"
  description: "Queries Okta for users without MFA, creates ServiceNow ticket, and notifies IT security."
  tags:
    - security
    - identity
    - okta
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: okta_mfa_non_compliance_escalation
          description: "Queries Okta for users without MFA, creates ServiceNow ticket, and notifies IT security."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Okta MFA Non-Compliance Escalation: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Okta MFA Non-Compliance Escalation for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Retrieves Okta user status by email.

naftiko: "0.5"
info:
  label: "Okta User Status Lookup"
  description: "Retrieves Okta user status by email."
  tags:
    - identity
    - okta
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: okta_user_status_lookup
          description: "Retrieves Okta user status by email."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary identifier." 
          call: primary.get-okta
          with:
            entity_id: "{{entity_id}}" 
          outputParameters:
            - name: result
              type: string
              mapping: "$.data" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Retrieves GL account balance from Oracle ERP.

naftiko: "0.5"
info:
  label: "Oracle ERP GL Balance Lookup"
  description: "Retrieves GL account balance from Oracle ERP."
  tags:
    - finance
    - oracle
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: oracle_erp_gl_balance_lookup
          description: "Retrieves GL account balance from Oracle ERP."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary identifier." 
          call: primary.get-oracle
          with:
            entity_id: "{{entity_id}}" 
          outputParameters:
            - name: result
              type: string
              mapping: "$.data" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Processes incoming supplier invoices against Oracle ERP purchase orders and creates ServiceNow approval tasks for invoices that require manual review.

naftiko: "0.5"
info:
  label: "Oracle ERP Invoice Processing"
  description: "Processes incoming supplier invoices against Oracle ERP purchase orders and creates ServiceNow approval tasks for invoices that require manual review."
  tags:
    - finance
    - procurement
    - oracle
    - servicenow
    - invoice
    - approval
capability:
  exposes:
    - type: mcp
      namespace: finance-invoicing
      port: 8080
      tools:
        - name: process-supplier-invoice
          description: "Given an Oracle invoice number and purchase order number, fetch both records, compare amounts, and create a ServiceNow approval task for discrepancies or large invoices."
          inputParameters:
            - name: invoice_number
              in: body
              type: string
              description: "The Oracle Payables invoice number."
            - name: po_number
              in: body
              type: string
              description: "The Oracle purchase order number to validate against."
            - name: approval_threshold
              in: body
              type: number
              description: "Dollar threshold above which manual approval is required."
          steps:
            - name: get-invoice
              type: call
              call: "oracle-payables.get-invoice"
              with:
                invoice_number: "{{invoice_number}}"
            - name: get-po
              type: call
              call: "oracle-po.get-purchase-order"
              with:
                po_number: "{{po_number}}"
            - name: create-approval-task
              type: call
              call: "servicenow-payables.create-task"
              with:
                short_description: "Invoice approval: {{invoice_number}} against PO {{po_number}}"
                description: "Invoice amount: {{get-invoice.InvoiceAmount}}. PO amount: {{get-po.TotalAmount}}. Vendor: {{get-invoice.SupplierName}}. Review required."
                assignment_group: "Finance_AP"
  consumes:
    - type: http
      namespace: oracle-payables
      baseUri: "https://verizon.fa.us2.oraclecloud.com/fscmRestApi/resources/11.13.18.05"
      authentication:
        type: basic
        username: "$secrets.oracle_user"
        password: "$secrets.oracle_password"
      resources:
        - name: invoices
          path: "/invoices/{{invoice_number}}"
          inputParameters:
            - name: invoice_number
              in: path
          operations:
            - name: get-invoice
              method: GET
    - type: http
      namespace: oracle-po
      baseUri: "https://verizon.fa.us2.oraclecloud.com/fscmRestApi/resources/11.13.18.05"
      authentication:
        type: basic
        username: "$secrets.oracle_user"
        password: "$secrets.oracle_password"
      resources:
        - name: purchase-orders
          path: "/purchaseOrders/{{po_number}}"
          inputParameters:
            - name: po_number
              in: path
          operations:
            - name: get-purchase-order
              method: GET
    - type: http
      namespace: servicenow-payables
      baseUri: "https://verizon.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

Retrieves vendor master data from Oracle ERP.

naftiko: "0.5"
info:
  label: "Oracle ERP Vendor Lookup"
  description: "Retrieves vendor master data from Oracle ERP."
  tags:
    - procurement
    - oracle
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: oracle_erp_vendor_lookup
          description: "Retrieves vendor master data from Oracle ERP."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary identifier." 
          call: primary.get-oracle
          with:
            entity_id: "{{entity_id}}" 
          outputParameters:
            - name: result
              type: string
              mapping: "$.data" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

At month end, queries Oracle ERP for open accounts payable and receivable items, then creates a period-close checklist task in ServiceNow for the finance controller.

naftiko: "0.5"
info:
  label: "Oracle Period-Close Financial Checklist"
  description: "At month end, queries Oracle ERP for open accounts payable and receivable items, then creates a period-close checklist task in ServiceNow for the finance controller."
  tags:
    - finance
    - period-close
    - oracle
    - servicenow
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: finance-period-close
      port: 8080
      tools:
        - name: run-period-close-checklist
          description: "Given a fiscal period and ledger ID, fetch open AP and AR items from Oracle ERP and create a ServiceNow period-close task for the finance team."
          inputParameters:
            - name: fiscal_period
              in: body
              type: string
              description: "Fiscal period in YYYYMM format."
            - name: ledger_id
              in: body
              type: string
              description: "Oracle General Ledger ledger ID."
            - name: finance_group
              in: body
              type: string
              description: "ServiceNow assignment group for the finance controller team."
          steps:
            - name: get-open-ap
              type: call
              call: "oracle-ap.get-open-invoices"
              with:
                fiscal_period: "{{fiscal_period}}"
                ledger_id: "{{ledger_id}}"
            - name: create-close-task
              type: call
              call: "servicenow-close.create-task"
              with:
                short_description: "Period close: {{fiscal_period}} — open AP items require review"
                description: "Oracle ERP open AP items for period {{fiscal_period}}: {{get-open-ap.count}} invoices totaling {{get-open-ap.total_amount}}. Clear before period close."
                assignment_group: "{{finance_group}}"
  consumes:
    - type: http
      namespace: oracle-ap
      baseUri: "https://verizon.fa.us2.oraclecloud.com/fscmRestApi/resources/11.13.18.05"
      authentication:
        type: basic
        username: "$secrets.oracle_user"
        password: "$secrets.oracle_password"
      resources:
        - name: invoices
          path: "/invoices"
          operations:
            - name: get-open-invoices
              method: GET
    - type: http
      namespace: servicenow-close
      baseUri: "https://verizon.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

Coordinates month-end close with Oracle ERP tasks, Snowflake validation, and finance team notification.

naftiko: "0.5"
info:
  label: "Oracle Period Close Workflow"
  description: "Coordinates month-end close with Oracle ERP tasks, Snowflake validation, and finance team notification."
  tags:
    - finance
    - oracle
    - snowflake
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: oracle_period_close_workflow
          description: "Coordinates month-end close with Oracle ERP tasks, Snowflake validation, and finance team notification."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Oracle Period Close Workflow: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Oracle Period Close Workflow for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Retrieves a PagerDuty incident by ID.

naftiko: "0.5"
info:
  label: "PagerDuty Incident Lookup"
  description: "Retrieves a PagerDuty incident by ID."
  tags:
    - itsm
    - pagerduty
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: pagerduty_incident_lookup
          description: "Retrieves a PagerDuty incident by ID."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary identifier." 
          call: primary.get-pagerduty
          with:
            entity_id: "{{entity_id}}" 
          outputParameters:
            - name: result
              type: string
              mapping: "$.data" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Fetches the current PagerDuty on-call schedule and posts an updated on-call roster to the NOC Slack channel every Monday morning.

naftiko: "0.5"
info:
  label: "PagerDuty On-Call Schedule Sync"
  description: "Fetches the current PagerDuty on-call schedule and posts an updated on-call roster to the NOC Slack channel every Monday morning."
  tags:
    - itsm
    - pagerduty
    - slack
    - on-call
    - operations
capability:
  exposes:
    - type: mcp
      namespace: oncall-management
      port: 8080
      tools:
        - name: publish-oncall-roster
          description: "Fetch the current on-call schedule from PagerDuty for a given escalation policy and post the roster to the NOC Slack channel. Use for weekly on-call handoff notifications."
          inputParameters:
            - name: escalation_policy_id
              in: body
              type: string
              description: "The PagerDuty escalation policy ID to fetch the on-call schedule for."
            - name: slack_channel
              in: body
              type: string
              description: "Slack channel to post the on-call roster to."
          steps:
            - name: get-oncall
              type: call
              call: "pagerduty-oncall.list-oncalls"
              with:
                escalation_policy_id: "{{escalation_policy_id}}"
            - name: post-roster
              type: call
              call: "slack-noc.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "On-Call Roster: Primary: {{get-oncall.primary_name}} ({{get-oncall.primary_email}}). Secondary: {{get-oncall.secondary_name}}. Escalation policy: {{escalation_policy_id}}."
  consumes:
    - type: http
      namespace: pagerduty-oncall
      baseUri: "https://api.pagerduty.com"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.pagerduty_token"
        placement: header
      resources:
        - name: oncalls
          path: "/oncalls"
          operations:
            - name: list-oncalls
              method: GET
    - type: http
      namespace: slack-noc
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Triggers a Power BI dataset refresh.

naftiko: "0.5"
info:
  label: "Power BI Dataset Refresh Trigger"
  description: "Triggers a Power BI dataset refresh."
  tags:
    - reporting
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: power_bi_dataset_refresh_trigger
          description: "Triggers a Power BI dataset refresh."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary identifier." 
          call: primary.get-power
          with:
            entity_id: "{{entity_id}}" 
          outputParameters:
            - name: result
              type: string
              mapping: "$.data" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Queries Snowflake for network KPIs, refreshes Power BI executive dashboard, and posts summary.

naftiko: "0.5"
info:
  label: "Power BI Network Executive Dashboard Refresh"
  description: "Queries Snowflake for network KPIs, refreshes Power BI executive dashboard, and posts summary."
  tags:
    - reporting
    - network
    - snowflake
    - power-bi
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: power_bi_network_executive_dashboard_refresh
          description: "Queries Snowflake for network KPIs, refreshes Power BI executive dashboard, and posts summary."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Power BI Network Executive Dashboard Refresh: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Power BI Network Executive Dashboard Refresh for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Coordinates quarterly close with Oracle ERP, Snowflake validation, and finance notification.

naftiko: "0.5"
info:
  label: "Quarterly Financial Close Orchestration"
  description: "Coordinates quarterly close with Oracle ERP, Snowflake validation, and finance notification."
  tags:
    - finance
    - oracle
    - snowflake
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: quarterly_financial_close_orchestration
          description: "Coordinates quarterly close with Oracle ERP, Snowflake validation, and finance notification."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Quarterly Financial Close Orchestration: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Quarterly Financial Close Orchestration for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Identifies Salesforce accounts with declining engagement scores from Snowflake and creates ServiceNow tasks for account managers to initiate retention outreach.

naftiko: "0.5"
info:
  label: "Salesforce Customer Churn Risk Alert"
  description: "Identifies Salesforce accounts with declining engagement scores from Snowflake and creates ServiceNow tasks for account managers to initiate retention outreach."
  tags:
    - crm
    - customer-success
    - salesforce
    - snowflake
    - servicenow
    - retention
capability:
  exposes:
    - type: mcp
      namespace: churn-prevention
      port: 8080
      tools:
        - name: flag-churn-risk-accounts
          description: "Query Snowflake for accounts with declining engagement scores and update Salesforce with churn risk flags, then create ServiceNow outreach tasks for account managers."
          inputParameters:
            - name: churn_score_threshold
              in: body
              type: number
              description: "Churn risk score threshold below which accounts are flagged (0-100)."
            - name: account_manager_group
              in: body
              type: string
              description: "ServiceNow assignment group for account manager outreach tasks."
          steps:
            - name: get-at-risk-accounts
              type: call
              call: "snowflake-churn.execute-query"
              with:
                statement: "SELECT account_id, account_name, churn_score, last_activity_date FROM crm.account_health WHERE churn_score < {{churn_score_threshold}} ORDER BY churn_score ASC LIMIT 50"
            - name: create-outreach-task
              type: call
              call: "servicenow-retention.create-task"
              with:
                short_description: "Churn risk outreach required: {{get-at-risk-accounts.count}} accounts below threshold {{churn_score_threshold}}"
                description: "Snowflake churn analysis identified accounts with risk scores below {{churn_score_threshold}}. Initiate retention outreach for each account."
                assignment_group: "{{account_manager_group}}"
  consumes:
    - type: http
      namespace: snowflake-churn
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: servicenow-retention
      baseUri: "https://verizon.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

Queries Snowflake for NPS survey results, updates Salesforce account health, and posts digest to CX team.

naftiko: "0.5"
info:
  label: "Salesforce Customer NPS Tracking"
  description: "Queries Snowflake for NPS survey results, updates Salesforce account health, and posts digest to CX team."
  tags:
    - customer-experience
    - nps
    - snowflake
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: salesforce_customer_nps_tracking
          description: "Queries Snowflake for NPS survey results, updates Salesforce account health, and posts digest to CX team."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Salesforce Customer NPS Tracking: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Salesforce Customer NPS Tracking for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Retrieves enterprise account details from Salesforce.

naftiko: "0.5"
info:
  label: "Salesforce Enterprise Account Lookup"
  description: "Retrieves enterprise account details from Salesforce."
  tags:
    - sales
    - enterprise
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: salesforce_enterprise_account_lookup
          description: "Retrieves enterprise account details from Salesforce."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary identifier." 
          call: primary.get-salesforce
          with:
            entity_id: "{{entity_id}}" 
          outputParameters:
            - name: result
              type: string
              mapping: "$.data" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

When a Salesforce enterprise opportunity reaches Closed Won, enriches it with Oracle ERP data and creates a provisioning task in ServiceNow for the network delivery team.

naftiko: "0.5"
info:
  label: "Salesforce Enterprise Deal Sync"
  description: "When a Salesforce enterprise opportunity reaches Closed Won, enriches it with Oracle ERP data and creates a provisioning task in ServiceNow for the network delivery team."
  tags:
    - crm
    - sales
    - salesforce
    - oracle
    - servicenow
    - opportunity
capability:
  exposes:
    - type: mcp
      namespace: crm-deal-sync
      port: 8080
      tools:
        - name: sync-enterprise-deal
          description: "Given a Salesforce opportunity ID, fetch deal details, validate the customer account in Oracle ERP, and create a ServiceNow provisioning task for network delivery."
          inputParameters:
            - name: opportunity_id
              in: body
              type: string
              description: "The Salesforce opportunity record ID (18-character)."
            - name: delivery_group
              in: body
              type: string
              description: "ServiceNow assignment group for network provisioning."
          steps:
            - name: get-opportunity
              type: call
              call: "salesforce.get-opportunity"
              with:
                opportunity_id: "{{opportunity_id}}"
            - name: get-oracle-customer
              type: call
              call: "oracle-erp.get-customer"
              with:
                account_number: "{{get-opportunity.AccountId}}"
            - name: create-provisioning-task
              type: call
              call: "servicenow-delivery.create-task"
              with:
                short_description: "Network provisioning: {{get-opportunity.Name}}"
                description: "New enterprise deal closed. Customer: {{get-oracle-customer.PartyName}}. Contract value: {{get-opportunity.Amount}} {{get-opportunity.CurrencyIsoCode}}. Services: {{get-opportunity.Description}}."
                assignment_group: "{{delivery_group}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://verizon.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity/{{opportunity_id}}"
          inputParameters:
            - name: opportunity_id
              in: path
          operations:
            - name: get-opportunity
              method: GET
    - type: http
      namespace: oracle-erp
      baseUri: "https://verizon.fa.us2.oraclecloud.com/fscmRestApi/resources/11.13.18.05"
      authentication:
        type: basic
        username: "$secrets.oracle_user"
        password: "$secrets.oracle_password"
      resources:
        - name: customers
          path: "/customers/{{account_number}}"
          inputParameters:
            - name: account_number
              in: path
          operations:
            - name: get-customer
              method: GET
    - type: http
      namespace: servicenow-delivery
      baseUri: "https://verizon.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

Coordinates enterprise contract renewals by pulling Salesforce data, validating pricing, and notifying account team.

naftiko: "0.5"
info:
  label: "Salesforce Enterprise Renewal Orchestration"
  description: "Coordinates enterprise contract renewals by pulling Salesforce data, validating pricing, and notifying account team."
  tags:
    - sales
    - enterprise
    - salesforce
    - snowflake
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: salesforce_enterprise_renewal_orchestration
          description: "Coordinates enterprise contract renewals by pulling Salesforce data, validating pricing, and notifying account team."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Salesforce Enterprise Renewal Orchestration: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Salesforce Enterprise Renewal Orchestration for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Queries Salesforce for partner sales data, analyzes in Snowflake, and posts performance report to channel team.

naftiko: "0.5"
info:
  label: "Salesforce Partner Channel Performance"
  description: "Queries Salesforce for partner sales data, analyzes in Snowflake, and posts performance report to channel team."
  tags:
    - sales
    - partners
    - salesforce
    - snowflake
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: salesforce_partner_channel_performance
          description: "Queries Salesforce for partner sales data, analyzes in Snowflake, and posts performance report to channel team."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Salesforce Partner Channel Performance: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Salesforce Partner Channel Performance for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Creates and routes a ServiceNow change request for planned network infrastructure changes through the standard CAB approval workflow.

naftiko: "0.5"
info:
  label: "ServiceNow Change Management Approval"
  description: "Creates and routes a ServiceNow change request for planned network infrastructure changes through the standard CAB approval workflow."
  tags:
    - itsm
    - change-management
    - servicenow
    - network
    - approval
capability:
  exposes:
    - type: mcp
      namespace: change-mgmt
      port: 8080
      tools:
        - name: submit-network-change
          description: "Given a change description, risk level, and maintenance window, create a ServiceNow change request for a network infrastructure change and assign it to the CAB group."
          inputParameters:
            - name: change_description
              in: body
              type: string
              description: "Description of the proposed network change."
            - name: risk_level
              in: body
              type: string
              description: "Change risk level: low, medium, high, or critical."
            - name: scheduled_start
              in: body
              type: string
              description: "Planned start datetime in ISO 8601 format."
            - name: scheduled_end
              in: body
              type: string
              description: "Planned end datetime in ISO 8601 format."
            - name: affected_ci
              in: body
              type: string
              description: "ServiceNow CMDB CI name for the affected network element."
          call: "servicenow-chg.create-change-request"
          with:
            short_description: "{{change_description}}"
            risk: "{{risk_level}}"
            start_date: "{{scheduled_start}}"
            end_date: "{{scheduled_end}}"
            cmdb_ci: "{{affected_ci}}"
          outputParameters:
            - name: change_number
              type: string
              mapping: "$.result.number"
            - name: sys_id
              type: string
              mapping: "$.result.sys_id"
  consumes:
    - type: http
      namespace: servicenow-chg
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: change-requests
          path: "/table/change_request"
          operations:
            - name: create-change-request
              method: POST

Retrieves a CMDB configuration item.

naftiko: "0.5"
info:
  label: "ServiceNow CMDB Asset Lookup"
  description: "Retrieves a CMDB configuration item."
  tags:
    - itsm
    - asset-management
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: servicenow_cmdb_asset_lookup
          description: "Retrieves a CMDB configuration item."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary identifier." 
          call: primary.get-servicenow
          with:
            entity_id: "{{entity_id}}" 
          outputParameters:
            - name: result
              type: string
              mapping: "$.data" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Retrieves a ServiceNow incident by number.

naftiko: "0.5"
info:
  label: "ServiceNow Incident Lookup"
  description: "Retrieves a ServiceNow incident by number."
  tags:
    - itsm
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: servicenow_incident_lookup
          description: "Retrieves a ServiceNow incident by number."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary identifier." 
          call: primary.get-servicenow
          with:
            entity_id: "{{entity_id}}" 
          outputParameters:
            - name: result
              type: string
              mapping: "$.data" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Searches SharePoint for documents.

naftiko: "0.5"
info:
  label: "SharePoint Document Search"
  description: "Searches SharePoint for documents."
  tags:
    - collaboration
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: sharepoint_document_search
          description: "Searches SharePoint for documents."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary identifier." 
          call: primary.get-sharepoint
          with:
            entity_id: "{{entity_id}}" 
          outputParameters:
            - name: result
              type: string
              mapping: "$.data" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Posts a notification to a Slack channel.

naftiko: "0.5"
info:
  label: "Slack Channel Notification"
  description: "Posts a notification to a Slack channel."
  tags:
    - collaboration
    - slack
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: slack_channel_notification
          description: "Posts a notification to a Slack channel."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary identifier." 
          call: primary.get-slack
          with:
            entity_id: "{{entity_id}}" 
          outputParameters:
            - name: result
              type: string
              mapping: "$.data" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Tracks small cell deployment progress in Jira, validates permits, and posts status to network deployment team.

naftiko: "0.5"
info:
  label: "Small Cell Deployment Tracking"
  description: "Tracks small cell deployment progress in Jira, validates permits, and posts status to network deployment team."
  tags:
    - network
    - small-cell
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: small_cell_deployment_tracking
          description: "Tracks small cell deployment progress in Jira, validates permits, and posts status to network deployment team."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Small Cell Deployment Tracking: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Small Cell Deployment Tracking for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Queries Snowflake for 5G coverage data by region.

naftiko: "0.5"
info:
  label: "Snowflake 5G Coverage Query"
  description: "Queries Snowflake for 5G coverage data by region."
  tags:
    - network
    - 5g
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: snowflake_5g_coverage_query
          description: "Queries Snowflake for 5G coverage data by region."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary identifier." 
          call: primary.get-snowflake
          with:
            entity_id: "{{entity_id}}" 
          outputParameters:
            - name: result
              type: string
              mapping: "$.data" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Executes Snowflake analytics queries against Verizon's network performance data warehouse and posts a weekly network KPI summary to the operations Slack channel.

naftiko: "0.5"
info:
  label: "Snowflake Network Analytics Report"
  description: "Executes Snowflake analytics queries against Verizon's network performance data warehouse and posts a weekly network KPI summary to the operations Slack channel."
  tags:
    - analytics
    - snowflake
    - slack
    - reporting
    - network
capability:
  exposes:
    - type: mcp
      namespace: network-analytics
      port: 8080
      tools:
        - name: digest-network-kpis
          description: "Execute a Snowflake network performance query and post a weekly KPI digest to the specified Slack channel. Use for weekly network operations reporting."
          inputParameters:
            - name: reporting_week
              in: body
              type: string
              description: "The ISO week in YYYY-Www format (e.g., 2026-W12)."
            - name: region
              in: body
              type: string
              description: "Network region filter (e.g., Northeast, Southeast, West)."
            - name: slack_channel
              in: body
              type: string
              description: "Slack channel name or ID to post the digest to."
          steps:
            - name: run-kpi-query
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "SELECT region, avg_latency_ms, packet_loss_pct, uptime_pct FROM network.weekly_kpis WHERE iso_week = '{{reporting_week}}' AND region = '{{region}}'"
            - name: post-digest
              type: call
              call: "slack-reports.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Network KPI Digest ({{reporting_week}}, {{region}}): Avg latency {{run-kpi-query.avg_latency_ms}}ms, Packet loss {{run-kpi-query.packet_loss_pct}}%, Uptime {{run-kpi-query.uptime_pct}}%."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: slack-reports
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Queries Snowflake for network performance metrics.

naftiko: "0.5"
info:
  label: "Snowflake Network Metrics Query"
  description: "Queries Snowflake for network performance metrics."
  tags:
    - network
    - analytics
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: snowflake_network_metrics_query
          description: "Queries Snowflake for network performance metrics."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary identifier." 
          call: primary.get-snowflake
          with:
            entity_id: "{{entity_id}}" 
          outputParameters:
            - name: result
              type: string
              mapping: "$.data" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Queries Snowflake for spectrum utilization data, generates capacity report, and posts to spectrum planning.

naftiko: "0.5"
info:
  label: "Spectrum Utilization Report"
  description: "Queries Snowflake for spectrum utilization data, generates capacity report, and posts to spectrum planning."
  tags:
    - network
    - spectrum
    - snowflake
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: spectrum_utilization_report
          description: "Queries Snowflake for spectrum utilization data, generates capacity report, and posts to spectrum planning."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Spectrum Utilization Report: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Spectrum Utilization Report for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

When Splunk detects a DDoS attack, creates ServiceNow security incident, activates CrowdStrike response, and alerts SOC.

naftiko: "0.5"
info:
  label: "Splunk DDoS Detection Response"
  description: "When Splunk detects a DDoS attack, creates ServiceNow security incident, activates CrowdStrike response, and alerts SOC."
  tags:
    - security
    - splunk
    - servicenow
    - crowdstrike
    - slack
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: splunk_ddos_detection_response
          description: "When Splunk detects a DDoS attack, creates ServiceNow security incident, activates CrowdStrike response, and alerts SOC."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Splunk DDoS Detection Response: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Splunk DDoS Detection Response for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Searches Splunk logs for network troubleshooting.

naftiko: "0.5"
info:
  label: "Splunk Log Search"
  description: "Searches Splunk logs for network troubleshooting."
  tags:
    - observability
    - splunk
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: splunk_log_search
          description: "Searches Splunk logs for network troubleshooting."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary identifier." 
          call: primary.get-splunk
          with:
            entity_id: "{{entity_id}}" 
          outputParameters:
            - name: result
              type: string
              mapping: "$.data" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

When Splunk detects a high-severity security event, creates a CrowdStrike investigation, opens a ServiceNow security incident, and alerts the SOC via Slack.

naftiko: "0.5"
info:
  label: "Splunk Security Event Triage"
  description: "When Splunk detects a high-severity security event, creates a CrowdStrike investigation, opens a ServiceNow security incident, and alerts the SOC via Slack."
  tags:
    - security
    - splunk
    - crowdstrike
    - servicenow
    - slack
    - soc
capability:
  exposes:
    - type: mcp
      namespace: soc-triage
      port: 8080
      tools:
        - name: triage-security-event
          description: "Given a Splunk alert ID and affected host, create a CrowdStrike detection investigation, open a ServiceNow security incident, and notify the SOC Slack channel."
          inputParameters:
            - name: splunk_alert_id
              in: body
              type: string
              description: "The Splunk alert ID or search job SID."
            - name: affected_host
              in: body
              type: string
              description: "Hostname or IP address of the affected system."
            - name: event_type
              in: body
              type: string
              description: "Type of security event (e.g., malware, unauthorized_access, data_exfiltration)."
            - name: severity
              in: body
              type: string
              description: "Event severity: critical, high, medium, or low."
          steps:
            - name: get-splunk-event
              type: call
              call: "splunk.get-alert-results"
              with:
                alert_id: "{{splunk_alert_id}}"
            - name: create-cs-investigation
              type: call
              call: "crowdstrike.create-detection"
              with:
                hostname: "{{affected_host}}"
                description: "Splunk alert {{splunk_alert_id}}: {{event_type}} detected. Details: {{get-splunk-event.results}}"
            - name: create-snow-incident
              type: call
              call: "servicenow-soc.create-incident"
              with:
                short_description: "[{{severity}}] Security event: {{event_type}} on {{affected_host}}"
                description: "Splunk alert {{splunk_alert_id}}. CrowdStrike detection: {{create-cs-investigation.detection_id}}. Host: {{affected_host}}."
                category: "security"
                urgency: "1"
            - name: alert-soc
              type: call
              call: "slack-soc.post-message"
              with:
                channel: "soc-alerts"
                text: "Security Event ({{severity}}): {{event_type}} on {{affected_host}}. CrowdStrike: {{create-cs-investigation.detection_id}}. ServiceNow: {{create-snow-incident.number}}."
  consumes:
    - type: http
      namespace: splunk
      baseUri: "https://splunk.verizon.com:8089/services"
      authentication:
        type: bearer
        token: "$secrets.splunk_token"
      resources:
        - name: alert-results
          path: "/search/jobs/{{alert_id}}/results"
          inputParameters:
            - name: alert_id
              in: path
          operations:
            - name: get-alert-results
              method: GET
    - type: http
      namespace: crowdstrike
      baseUri: "https://api.crowdstrike.com"
      authentication:
        type: bearer
        token: "$secrets.crowdstrike_token"
      resources:
        - name: detections
          path: "/detects/entities/detects/v2"
          operations:
            - name: create-detection
              method: PATCH
    - type: http
      namespace: servicenow-soc
      baseUri: "https://verizon.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: slack-soc
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Queries Snowflake for carbon footprint data, generates sustainability report, and posts to ESG team.

naftiko: "0.5"
info:
  label: "Sustainability Carbon Footprint Report"
  description: "Queries Snowflake for carbon footprint data, generates sustainability report, and posts to ESG team."
  tags:
    - sustainability
    - esg
    - snowflake
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: sustainability_carbon_footprint_report
          description: "Queries Snowflake for carbon footprint data, generates sustainability report, and posts to ESG team."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Sustainability Carbon Footprint Report: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Sustainability Carbon Footprint Report for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Triggers a Tableau workbook refresh for Verizon's executive KPI dashboards and notifies the business intelligence team via Slack when the refresh completes.

naftiko: "0.5"
info:
  label: "Tableau Executive Dashboard Refresh"
  description: "Triggers a Tableau workbook refresh for Verizon's executive KPI dashboards and notifies the business intelligence team via Slack when the refresh completes."
  tags:
    - analytics
    - tableau
    - slack
    - reporting
    - dashboards
capability:
  exposes:
    - type: mcp
      namespace: exec-dashboards
      port: 8080
      tools:
        - name: refresh-exec-dashboard
          description: "Given a Tableau workbook ID and site ID, trigger a workbook data refresh and notify the BI team Slack channel upon completion."
          inputParameters:
            - name: workbook_id
              in: body
              type: string
              description: "The Tableau workbook LUID to refresh."
            - name: site_id
              in: body
              type: string
              description: "The Tableau server site ID."
            - name: slack_channel
              in: body
              type: string
              description: "Slack channel to notify on completion."
          steps:
            - name: trigger-refresh
              type: call
              call: "tableau.refresh-workbook"
              with:
                site_id: "{{site_id}}"
                workbook_id: "{{workbook_id}}"
            - name: notify-bi-team
              type: call
              call: "slack-bi.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Tableau dashboard refresh completed: workbook {{workbook_id}}. Job {{trigger-refresh.job_id}} — Status: {{trigger-refresh.status}}."
  consumes:
    - type: http
      namespace: tableau
      baseUri: "https://tableau.verizon.com/api/2.8"
      authentication:
        type: apikey
        key: "X-Tableau-Auth"
        value: "$secrets.tableau_token"
        placement: header
      resources:
        - name: workbook-refresh
          path: "/sites/{{site_id}}/workbooks/{{workbook_id}}/refresh"
          inputParameters:
            - name: site_id
              in: path
            - name: workbook_id
              in: path
          operations:
            - name: refresh-workbook
              method: POST
    - type: http
      namespace: slack-bi
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

When a vendor contract nears expiry, creates Jira task, notifies procurement, and logs in Snowflake.

naftiko: "0.5"
info:
  label: "Vendor Contract Renewal Workflow"
  description: "When a vendor contract nears expiry, creates Jira task, notifies procurement, and logs in Snowflake."
  tags:
    - procurement
    - jira
    - microsoft-teams
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: vendor_contract_renewal_workflow
          description: "When a vendor contract nears expiry, creates Jira task, notifies procurement, and logs in Snowflake."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Vendor Contract Renewal Workflow: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Vendor Contract Renewal Workflow for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

When VoIP quality metrics degrade, creates ServiceNow incident, gathers Splunk logs, and alerts unified comms team.

naftiko: "0.5"
info:
  label: "VoIP Quality Degradation Response"
  description: "When VoIP quality metrics degrade, creates ServiceNow incident, gathers Splunk logs, and alerts unified comms team."
  tags:
    - network
    - voip
    - servicenow
    - splunk
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: voip_quality_degradation_response
          description: "When VoIP quality metrics degrade, creates ServiceNow incident, gathers Splunk logs, and alerts unified comms team."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "VoIP Quality Degradation Response: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "VoIP Quality Degradation Response for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Triggers the annual performance review cycle in Workday for a given department and creates tracking tasks in ServiceNow for HR business partners to monitor completion.

naftiko: "0.5"
info:
  label: "Workday Annual Review Cycle Kickoff"
  description: "Triggers the annual performance review cycle in Workday for a given department and creates tracking tasks in ServiceNow for HR business partners to monitor completion."
  tags:
    - hr
    - performance-management
    - workday
    - servicenow
    - review-cycle
capability:
  exposes:
    - type: mcp
      namespace: performance-review
      port: 8080
      tools:
        - name: kickoff-review-cycle
          description: "Given a department ID and review deadline, trigger the annual performance review process in Workday for the department and create ServiceNow tracking tasks for HR BPs."
          inputParameters:
            - name: department_id
              in: body
              type: string
              description: "Workday department or organization ID."
            - name: review_deadline
              in: body
              type: string
              description: "Deadline for review completion in YYYY-MM-DD format."
            - name: hr_bp_group
              in: body
              type: string
              description: "ServiceNow assignment group for HR business partner tracking tasks."
          steps:
            - name: trigger-review
              type: call
              call: "workday-perf.create-review-process"
              with:
                organization_id: "{{department_id}}"
                due_date: "{{review_deadline}}"
            - name: create-hr-task
              type: call
              call: "servicenow-hr.create-task"
              with:
                short_description: "Annual review cycle initiated for department {{department_id}}"
                description: "Workday review process started. Process ID: {{trigger-review.process_id}}. Deadline: {{review_deadline}}. Monitor completion and follow up with managers."
                assignment_group: "{{hr_bp_group}}"
                due_date: "{{review_deadline}}"
  consumes:
    - type: http
      namespace: workday-perf
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: review-processes
          path: "/businessProcesses"
          operations:
            - name: create-review-process
              method: POST
    - type: http
      namespace: servicenow-hr
      baseUri: "https://verizon.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

Launches annual review by pulling headcount from Workday, creating Jira epic, and notifying HR.

naftiko: "0.5"
info:
  label: "Workday Annual Review Cycle Launch"
  description: "Launches annual review by pulling headcount from Workday, creating Jira epic, and notifying HR."
  tags:
    - hr
    - performance
    - workday
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: workday_annual_review_cycle_launch
          description: "Launches annual review by pulling headcount from Workday, creating Jira epic, and notifying HR."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Workday Annual Review Cycle Launch: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Workday Annual Review Cycle Launch for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Queries Workday for incomplete enrollments and sends reminders via Teams.

naftiko: "0.5"
info:
  label: "Workday Benefits Enrollment Reminder"
  description: "Queries Workday for incomplete enrollments and sends reminders via Teams."
  tags:
    - hr
    - benefits
    - workday
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: workday_benefits_enrollment_reminder
          description: "Queries Workday for incomplete enrollments and sends reminders via Teams."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Workday Benefits Enrollment Reminder: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Workday Benefits Enrollment Reminder for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Pulls diversity metrics from Workday, refreshes Power BI dashboard, and posts to HR leadership.

naftiko: "0.5"
info:
  label: "Workday Diversity Metrics Report"
  description: "Pulls diversity metrics from Workday, refreshes Power BI dashboard, and posts to HR leadership."
  tags:
    - hr
    - diversity
    - workday
    - power-bi
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: workday_diversity_metrics_report
          description: "Pulls diversity metrics from Workday, refreshes Power BI dashboard, and posts to HR leadership."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Workday Diversity Metrics Report: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Workday Diversity Metrics Report for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Retrieves an employee profile from Workday.

naftiko: "0.5"
info:
  label: "Workday Employee Profile Lookup"
  description: "Retrieves an employee profile from Workday."
  tags:
    - hr
    - workday
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: workday_employee_profile_lookup
          description: "Retrieves an employee profile from Workday."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary identifier." 
          call: primary.get-workday
          with:
            entity_id: "{{entity_id}}" 
          outputParameters:
            - name: result
              type: string
              mapping: "$.data" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Returns current headcount by department and cost center from Workday for workforce planning and finance reporting.

naftiko: "0.5"
info:
  label: "Workday Headcount Snapshot"
  description: "Returns current headcount by department and cost center from Workday for workforce planning and finance reporting."
  tags:
    - hr
    - finance
    - reporting
    - workday
    - headcount
capability:
  exposes:
    - type: mcp
      namespace: hr-reporting
      port: 8080
      tools:
        - name: get-headcount-snapshot
          description: "Returns a list of active employees grouped by department and cost center from Workday. Use for headcount planning, cost analysis, or period-end finance reporting."
          call: "workday-hc.list-workers"
          outputParameters:
            - name: workers
              type: array
              mapping: "$.Report_Entry"
              items:
                - name: employee_id
                  type: string
                  mapping: "$.Worker_ID"
                - name: full_name
                  type: string
                  mapping: "$.Worker"
                - name: department
                  type: string
                  mapping: "$.Organization"
                - name: cost_center
                  type: string
                  mapping: "$.Cost_Center"
                - name: employment_type
                  type: string
                  mapping: "$.Worker_Type"
  consumes:
    - type: http
      namespace: workday-hc
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers"
          operations:
            - name: list-workers
              method: GET

When a new hire is confirmed, creates Okta account, provisions access, and notifies IT.

naftiko: "0.5"
info:
  label: "Workday New Hire IT Provisioning"
  description: "When a new hire is confirmed, creates Okta account, provisions access, and notifies IT."
  tags:
    - hr
    - workday
    - okta
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: workday_new_hire_it_provisioning
          description: "When a new hire is confirmed, creates Okta account, provisions access, and notifies IT."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary entity identifier." 
            - name: context
              type: string
              description: "Additional context." 
          steps:
            - name: gather-data
              type: call
              call: snowflake.run-query
              with:
                entity_id: "{{entity_id}}" 
                context: "{{context}}" 
            - name: create-action
              type: call
              call: servicenow.create-incident
              with:
                short_description: "Workday New Hire IT Provisioning: {{entity_id}}" 
                description: "Data: {{gather-data.results}}" 
            - name: notify-team
              type: call
              call: msteams.post-channel-message
              with:
                channel_id: "$secrets.teams_ops_channel" 
                text: "Workday New Hire IT Provisioning for {{entity_id}} | Action: {{create-action.number}}" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/ops/channels/{{channel_id}}/messages"
          operations:
            - name: post-channel-message
              method: POST

Retrieves employee time off balance.

naftiko: "0.5"
info:
  label: "Workday Time Off Balance Lookup"
  description: "Retrieves employee time off balance."
  tags:
    - hr
    - workday
capability:
  exposes:
    - type: mcp
      namespace: vz-ops
      port: 8080
      tools:
        - name: workday_time_off_balance_lookup
          description: "Retrieves employee time off balance."
          inputParameters:
            - name: entity_id
              type: string
              description: "Primary identifier." 
          call: primary.get-workday
          with:
            entity_id: "{{entity_id}}" 
          outputParameters:
            - name: result
              type: string
              mapping: "$.data" 
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://verizon.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: sql-statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Archives Zoom meeting recordings for compliance-designated meetings to SharePoint and creates a ServiceNow compliance record to confirm archival.

naftiko: "0.5"
info:
  label: "Zoom Meeting Compliance Recording Archival"
  description: "Archives Zoom meeting recordings for compliance-designated meetings to SharePoint and creates a ServiceNow compliance record to confirm archival."
  tags:
    - compliance
    - zoom
    - sharepoint
    - servicenow
    - archival
capability:
  exposes:
    - type: mcp
      namespace: meeting-compliance
      port: 8080
      tools:
        - name: archive-compliance-recording
          description: "Given a Zoom meeting UUID, download the recording metadata and upload it to the compliance SharePoint library, then create a ServiceNow compliance record confirming archival."
          inputParameters:
            - name: meeting_uuid
              in: body
              type: string
              description: "The Zoom meeting UUID for the compliance recording."
            - name: compliance_site_id
              in: body
              type: string
              description: "SharePoint site ID for the compliance recordings library."
          steps:
            - name: get-recording
              type: call
              call: "zoom.get-meeting-recordings"
              with:
                meeting_uuid: "{{meeting_uuid}}"
            - name: store-to-sharepoint
              type: call
              call: "sharepoint-compliance.upload-file"
              with:
                site_id: "{{compliance_site_id}}"
                folder_path: "ComplianceRecordings/{{get-recording.start_time}}"
                file_name: "{{meeting_uuid}}_recording.mp4"
                download_url: "{{get-recording.download_url}}"
            - name: create-compliance-record
              type: call
              call: "servicenow-compliance.create-record"
              with:
                short_description: "Zoom recording archived: {{meeting_uuid}}"
                description: "Meeting {{meeting_uuid}} recording archived to SharePoint at {{compliance_site_id}}. Start time: {{get-recording.start_time}}. SharePoint path: {{store-to-sharepoint.web_url}}."
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_token"
      resources:
        - name: meeting-recordings
          path: "/meetings/{{meeting_uuid}}/recordings"
          inputParameters:
            - name: meeting_uuid
              in: path
          operations:
            - name: get-meeting-recordings
              method: GET
    - type: http
      namespace: sharepoint-compliance
      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}}/{{file_name}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
            - name: file_name
              in: path
          operations:
            - name: upload-file
              method: PUT
    - type: http
      namespace: servicenow-compliance
      baseUri: "https://verizon.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: compliance-records
          path: "/table/compliance_finding"
          operations:
            - name: create-record
              method: POST