Verizon Capabilities
Naftiko 0.5 capability definitions for Verizon - 100 capabilities showing integration workflows and service orchestrations.
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