Broadcom Capabilities
Naftiko 0.5 capability definitions for Broadcom - 103 capabilities showing integration workflows and service orchestrations.
Tracks post-acquisition integration milestones in Jira, syncs progress to SAP project system, and distributes weekly status reports via Confluence.
naftiko: "0.5"
info:
label: "Acquisition Integration Checklist Orchestrator"
description: "Tracks post-acquisition integration milestones in Jira, syncs progress to SAP project system, and distributes weekly status reports via Confluence."
tags:
- operations
- jira
- sap
- confluence
capability:
exposes:
- type: mcp
namespace: acquisition-integration
port: 8080
tools:
- name: track-integration-milestones
description: "Track acquisition integration milestones across Jira, SAP, and Confluence."
inputParameters:
- name: acquisition_name
in: body
type: string
description: "Name of the acquired company."
- name: week_number
in: body
type: number
description: "Integration week number."
steps:
- name: get-milestones
type: call
call: "jira.search-issues"
with:
jql: "project=ACQ AND labels={{acquisition_name}}"
- name: sync-sap
type: call
call: "sap.update-project-status"
with:
project: "{{acquisition_name}}"
week: "{{week_number}}"
- name: publish-report
type: call
call: "confluence.create-page"
with:
space_key: "ACQ"
title: "{{acquisition_name}} Integration Week {{week_number}} Status"
body: "Milestones: {{get-milestones.total}}"
consumes:
- type: http
namespace: jira
baseUri: "https://broadcom.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: search
path: "/search"
operations:
- name: search-issues
method: GET
- type: http
namespace: sap
baseUri: "https://broadcom-s4.sap.com/sap/opu/odata/sap/PS_PROJECT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: projects
path: "/A_Project"
operations:
- name: update-project-status
method: PATCH
- type: http
namespace: confluence
baseUri: "https://broadcom.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
Given a batch of GitHub Advanced Security CVE alerts, uses Anthropic Claude to assess exploitability and business impact, and routes findings to the appropriate Jira security queues.
naftiko: "0.5"
info:
label: "AI-Assisted Security Vulnerability Triage"
description: "Given a batch of GitHub Advanced Security CVE alerts, uses Anthropic Claude to assess exploitability and business impact, and routes findings to the appropriate Jira security queues."
tags:
- ai
- automation
- anthropic
- security
- github
- jira
- vulnerability-management
capability:
exposes:
- type: mcp
namespace: ai-security
port: 8080
tools:
- name: triage-vulnerabilities
description: "Given a list of CVE IDs and affected Broadcom repositories, use Anthropic Claude to assess severity context and exploitability, then create Jira security tickets with triage reasoning. Use for batch CVE assessment across semiconductor, VMware, and CA software repositories."
inputParameters:
- name: cve_ids
in: body
type: string
description: "Comma-separated list of CVE IDs to triage."
- name: product_line
in: body
type: string
description: "The Broadcom product line affected, e.g. 'VMware', 'CA Software', 'Semiconductor'."
steps:
- name: assess-cves
type: call
call: "anthropic.create-message"
with:
model: "claude-opus-4-5"
max_tokens: 2048
system: "You are a security triage specialist for an enterprise software and semiconductor company. Assess CVE exploitability, business impact, and recommended remediation priority."
content: "Assess the following CVEs for {{product_line}}: {{cve_ids}}. For each, provide: exploitability rating, business impact, and remediation priority."
- name: create-sec-tickets
type: call
call: "jira.create-issue"
with:
project_key: "SEC"
issuetype: "Bug"
summary: "CVE triage batch: {{product_line}} — {{cve_ids}}"
description: "Product Line: {{product_line}}\nCVEs: {{cve_ids}}\nAI Assessment: {{assess-cves.content}}"
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: jira
baseUri: "https://broadcom.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Validates ASIC tapeout readiness by checking DRC sign-off in Snowflake, verifying open blockers in Jira, and posting readiness summary to the design Teams channel.
naftiko: "0.5"
info:
label: "ASIC Design Tapeout Readiness Orchestrator"
description: "Validates ASIC tapeout readiness by checking DRC sign-off in Snowflake, verifying open blockers in Jira, and posting readiness summary to the design Teams channel."
tags:
- chip-design
- manufacturing
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: chip-engineering
port: 8080
tools:
- name: check-tapeout-readiness
description: "Orchestrate ASIC tapeout readiness across Snowflake, Jira, and Teams."
inputParameters:
- name: design_id
in: body
type: string
description: "The ASIC design identifier."
- name: jira_epic_key
in: body
type: string
description: "The Jira epic for tapeout sign-off."
steps:
- name: get-drc-status
type: call
call: "snowflake.execute-query"
with:
statement: "SELECT design_id, drc_clean, lvs_clean FROM chip_signoff WHERE design_id = '{{design_id}}'"
- name: get-blockers
type: call
call: "jira.search-issues"
with:
jql: "epic = {{jira_epic_key}} AND status != Done"
- name: post-summary
type: call
call: "msteams.send-message"
with:
channel: "asic-design"
message: "Tapeout Readiness {{design_id}}: DRC={{get-drc-status.drc_clean}}, Open blockers={{get-blockers.total}}."
consumes:
- type: http
namespace: snowflake
baseUri: "https://broadcom.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: jira
baseUri: "https://broadcom.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: search
path: "/search"
operations:
- name: search-issues
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/asic-design/channels/general/messages"
operations:
- name: send-message
method: POST
When AWS Cost Explorer detects a spend anomaly for a Broadcom account, creates a Jira ticket for the cloud platform team and posts a Slack summary to the FinOps channel.
naftiko: "0.5"
info:
label: "AWS Cloud Cost Anomaly Responder"
description: "When AWS Cost Explorer detects a spend anomaly for a Broadcom account, creates a Jira ticket for the cloud platform team and posts a Slack summary to the FinOps channel."
tags:
- cloud
- finops
- aws
- jira
- slack
- cost-management
capability:
exposes:
- type: mcp
namespace: finops-ops
port: 8080
tools:
- name: handle-cost-anomaly
description: "Given an AWS account ID, anomaly detection alert, and owning team name, create a Jira FinOps task and post a Slack alert. Use when cloud spend anomaly thresholds are exceeded for Broadcom AWS accounts running VMware Cloud or semiconductor EDA workloads."
inputParameters:
- name: aws_account_id
in: body
type: string
description: "The AWS account ID where the anomaly was detected."
- name: anomaly_amount
in: body
type: number
description: "The dollar amount exceeding the expected spend baseline."
- name: team_name
in: body
type: string
description: "The owning team name for Jira ticket routing."
steps:
- name: create-ticket
type: call
call: "jira.create-issue"
with:
project_key: "FINOPS"
issuetype: "Task"
summary: "AWS cost anomaly: account {{aws_account_id}} — ${{anomaly_amount}} overage"
description: "Account: {{aws_account_id}}\nOverage: ${{anomaly_amount}}\nTeam: {{team_name}}"
- name: notify-finops
type: call
call: "slack.post-message"
with:
channel: "finops-alerts"
text: "AWS cost anomaly on account {{aws_account_id}}: ${{anomaly_amount}} over baseline. Team: {{team_name}}. Jira: {{create-ticket.key}}."
consumes:
- type: http
namespace: jira
baseUri: "https://broadcom.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: 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
Retrieves the latest build status for an Azure DevOps pipeline.
naftiko: "0.5"
info:
label: "Azure DevOps Build Status Lookup"
description: "Retrieves the latest build status for an Azure DevOps pipeline."
tags:
- cicd
- azure-devops
capability:
exposes:
- type: mcp
namespace: devops-builds
port: 8080
tools:
- name: get-build-status
description: "Look up latest build status for an Azure DevOps pipeline definition."
inputParameters:
- name: pipeline_id
in: body
type: string
description: "Azure DevOps pipeline definition ID."
call: "azdo.get-build"
with:
definition_id: "{{pipeline_id}}"
outputParameters:
- name: build_status
type: string
mapping: "$.value[0].status"
- name: build_result
type: string
mapping: "$.value[0].result"
consumes:
- type: http
namespace: azdo
baseUri: "https://dev.azure.com/broadcom"
authentication:
type: bearer
token: "$secrets.azdo_token"
resources:
- name: builds
path: "/_apis/build/builds?definitions={{definition_id}}&$top=1"
inputParameters:
- name: definition_id
in: query
operations:
- name: get-build
method: GET
Identifies orphaned Azure resources, generates a cleanup plan, gets approval via ServiceNow, and executes deletion.
naftiko: "0.5"
info:
label: "Azure Resource Cleanup Orchestrator"
description: "Identifies orphaned Azure resources, generates a cleanup plan, gets approval via ServiceNow, and executes deletion."
tags:
- cloud
- microsoft-azure
- servicenow
capability:
exposes:
- type: mcp
namespace: azure-cleanup
port: 8080
tools:
- name: cleanup-orphaned-resources
description: "Identify orphaned Azure resources, get ServiceNow approval, and execute cleanup."
inputParameters:
- name: subscription_id
in: body
type: string
description: "Azure subscription ID."
- name: resource_group
in: body
type: string
description: "Azure resource group."
steps:
- name: scan-resources
type: call
call: "azure.list-resources"
with:
subscription_id: "{{subscription_id}}"
resource_group: "{{resource_group}}"
- name: create-approval
type: call
call: "servicenow.create-change"
with:
short_description: "Azure resource cleanup for {{resource_group}}"
category: "cloud"
- name: execute-cleanup
type: call
call: "azure.delete-resources"
with:
resource_group: "{{resource_group}}"
change_number: "{{create-approval.number}}"
consumes:
- type: http
namespace: azure
baseUri: "https://management.azure.com"
authentication:
type: bearer
token: "$secrets.azure_token"
resources:
- name: resources
path: "/subscriptions/{{subscription_id}}/resourceGroups/{{resource_group}}/resources"
inputParameters:
- name: subscription_id
in: path
- name: resource_group
in: path
operations:
- name: list-resources
method: GET
- name: delete-resources
method: DELETE
- type: http
namespace: servicenow
baseUri: "https://broadcom.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: change-requests
path: "/table/change_request"
operations:
- name: create-change
method: POST
Queries Azure Cost Management for the month-to-date spend of a resource group.
naftiko: "0.5"
info:
label: "Azure Resource Group Cost Lookup"
description: "Queries Azure Cost Management for the month-to-date spend of a resource group."
tags:
- cloud
- microsoft-azure
- finops
capability:
exposes:
- type: mcp
namespace: cloud-cost
port: 8080
tools:
- name: get-resource-group-cost
description: "Retrieve month-to-date cost for an Azure resource group."
inputParameters:
- name: resource_group
in: body
type: string
description: "The Azure resource group name."
call: "azure.get-cost-summary"
with:
resource_group: "{{resource_group}}"
outputParameters:
- name: mtd_cost
type: number
mapping: "$.properties.rows[0][0]"
consumes:
- type: http
namespace: azure
baseUri: "https://management.azure.com"
authentication:
type: bearer
token: "$secrets.azure_token"
resources:
- name: cost-management
path: "/subscriptions/{{subscription_id}}/resourceGroups/{{resource_group}}/providers/Microsoft.CostManagement/query"
inputParameters:
- name: resource_group
in: path
operations:
- name: get-cost-summary
method: POST
When a change request for a critical enterprise software or data center system is submitted in ServiceNow, retrieves risk details, routes to the CAB via Slack, and updates the ticket status.
naftiko: "0.5"
info:
label: "Change Management Approval Gate"
description: "When a change request for a critical enterprise software or data center system is submitted in ServiceNow, retrieves risk details, routes to the CAB via Slack, and updates the ticket status."
tags:
- itsm
- change-management
- servicenow
- slack
- approval
capability:
exposes:
- type: mcp
namespace: change-management
port: 8080
tools:
- name: route-change-request
description: "Given a ServiceNow change request number, fetch the change details and risk level, post a CAB review request to the Slack change-advisory channel, and update the change state to under review. Use for all changes to production VMware Cloud, networking, or enterprise software systems."
inputParameters:
- name: change_number
in: body
type: string
description: "The ServiceNow change request number, e.g. 'CHG0004567'."
steps:
- name: get-change
type: call
call: "servicenow.get-change"
with:
number: "{{change_number}}"
- name: notify-cab
type: call
call: "slack.post-message"
with:
channel: "change-advisory-board"
text: "CAB Review: {{change_number}} — {{get-change.short_description}} | Risk: {{get-change.risk}} | System: {{get-change.cmdb_ci}} | Planned: {{get-change.start_date}}"
- name: update-change
type: call
call: "servicenow-update.patch-change"
with:
sys_id: "{{get-change.sys_id}}"
state: "2"
consumes:
- type: http
namespace: servicenow
baseUri: "https://broadcom.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: changes
path: "/table/change_request"
operations:
- name: get-change
method: GET
- 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: servicenow-update
baseUri: "https://broadcom.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: change-patch
path: "/table/change_request/{{sys_id}}"
inputParameters:
- name: sys_id
in: path
operations:
- name: patch-change
method: PATCH
Validates chip design review checklist completion in Jira, collects sign-off from reviewers via Slack, and updates the milestone tracker in SAP.
naftiko: "0.5"
info:
label: "Chip Design Review Gate Orchestrator"
description: "Validates chip design review checklist completion in Jira, collects sign-off from reviewers via Slack, and updates the milestone tracker in SAP."
tags:
- engineering
- jira
- slack
- sap
capability:
exposes:
- type: mcp
namespace: design-review
port: 8080
tools:
- name: run-design-review-gate
description: "Execute chip design review gate by validating Jira checklist, collecting Slack sign-offs, and updating SAP milestone."
inputParameters:
- name: design_id
in: body
type: string
description: "Chip design project ID."
- name: milestone
in: body
type: string
description: "Design milestone name."
steps:
- name: check-jira-tasks
type: call
call: "jira.get-sprint-issues"
with:
project: "{{design_id}}"
milestone: "{{milestone}}"
- name: request-signoff
type: call
call: "slack.post-message"
with:
channel: "#design-reviews"
text: "Design review gate for {{design_id}} milestone {{milestone}} - all tasks complete. Please sign off."
- name: update-milestone
type: call
call: "sap.update-milestone"
with:
project_id: "{{design_id}}"
milestone: "{{milestone}}"
status: "approved"
consumes:
- type: http
namespace: jira
baseUri: "https://broadcom.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: search
path: "/search"
operations:
- name: get-sprint-issues
method: GET
- 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: sap
baseUri: "https://broadcom-s4.sap.com/sap/opu/odata/sap/PS_PROJECT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: milestones
path: "/A_ProjectMilestone"
operations:
- name: update-milestone
method: PATCH
When a GitHub Actions pipeline fails on a protected branch, creates a Jira bug, posts an alert to Slack, and triggers a PagerDuty incident for the on-call engineering team.
naftiko: "0.5"
info:
label: "CI/CD Pipeline Failure Handler"
description: "When a GitHub Actions pipeline fails on a protected branch, creates a Jira bug, posts an alert to Slack, and triggers a PagerDuty incident for the on-call engineering team."
tags:
- devops
- cicd
- github
- jira
- slack
- pagerduty
- incident-response
capability:
exposes:
- type: mcp
namespace: devops-ops
port: 8080
tools:
- name: handle-pipeline-failure
description: "Given a GitHub Actions failure on a protected branch, create a Jira bug, post a Slack alert to the engineering channel, and trigger PagerDuty for on-call response. Use for critical CI/CD failures affecting release pipelines."
inputParameters:
- name: repo
in: body
type: string
description: "The GitHub repository full name, e.g. 'broadcom/vmware-vsphere'."
- name: branch
in: body
type: string
description: "The Git branch where the failure occurred."
- name: run_id
in: body
type: string
description: "The GitHub Actions run ID."
- name: failed_job
in: body
type: string
description: "The name of the failed CI job."
steps:
- name: create-bug
type: call
call: "jira.create-issue"
with:
project_key: "ENG"
issuetype: "Bug"
summary: "[CI Failure] {{repo}} / {{branch}} — {{failed_job}}"
description: "Repository: {{repo}}\nBranch: {{branch}}\nRun ID: {{run_id}}"
- name: alert-slack
type: call
call: "slack.post-message"
with:
channel: "engineering-alerts"
text: "Pipeline failure in {{repo}} on {{branch}}. Job: {{failed_job}} | Jira: {{create-bug.key}} | Run: {{run_id}}"
- name: page-oncall
type: call
call: "pagerduty.create-incident"
with:
title: "CI Failure: {{repo}} {{branch}} {{failed_job}}"
service_id: "$secrets.pagerduty_engineering_service_id"
consumes:
- type: http
namespace: jira
baseUri: "https://broadcom.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: 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: 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
Queries Cisco DNA Center for the operational status of a network switch interface.
naftiko: "0.5"
info:
label: "Cisco Switch Interface Status Lookup"
description: "Queries Cisco DNA Center for the operational status of a network switch interface."
tags:
- network
- cisco
capability:
exposes:
- type: mcp
namespace: network-ops
port: 8080
tools:
- name: get-interface-status
description: "Look up Cisco switch interface operational status by device and interface name."
inputParameters:
- name: device_id
in: body
type: string
description: "Cisco DNA Center device ID."
- name: interface_name
in: body
type: string
description: "The interface name."
call: "cisco.get-interface"
with:
device_id: "{{device_id}}"
interface_name: "{{interface_name}}"
outputParameters:
- name: status
type: string
mapping: "$.response[0].status"
- name: speed
type: string
mapping: "$.response[0].speed"
consumes:
- type: http
namespace: cisco
baseUri: "https://dnac.broadcom.com/dna/intent/api/v1"
authentication:
type: bearer
token: "$secrets.cisco_dnac_token"
resources:
- name: interfaces
path: "/interface/network-device/{{device_id}}"
inputParameters:
- name: device_id
in: path
operations:
- name: get-interface
method: GET
Analyzes AWS cost data, identifies optimization opportunities, creates a Jira epic for implementation, and shares findings on Slack.
naftiko: "0.5"
info:
label: "Cloud Cost Optimization Recommendation Orchestrator"
description: "Analyzes AWS cost data, identifies optimization opportunities, creates a Jira epic for implementation, and shares findings on Slack."
tags:
- finops
- aws
- jira
- slack
capability:
exposes:
- type: mcp
namespace: cost-optimization
port: 8080
tools:
- name: generate-cost-recommendations
description: "Generate cloud cost optimization recommendations by analyzing AWS spend, creating Jira implementation epics, and sharing on Slack."
inputParameters:
- name: account_id
in: body
type: string
description: "AWS account ID to analyze."
- name: lookback_days
in: body
type: number
description: "Number of days to analyze."
steps:
- name: get-cost-data
type: call
call: "aws.get-cost-and-usage"
with:
account_id: "{{account_id}}"
lookback_days: "{{lookback_days}}"
- name: create-epic
type: call
call: "jira.create-issue"
with:
project: "FINOPS"
summary: "Cost optimization for AWS account {{account_id}}"
issue_type: "Epic"
- name: share-findings
type: call
call: "slack.post-message"
with:
channel: "#finops"
text: "Cost optimization opportunities for account {{account_id}}: Jira epic {{create-epic.key}}"
consumes:
- type: http
namespace: aws
baseUri: "https://ce.us-east-1.amazonaws.com"
authentication:
type: bearer
token: "$secrets.aws_ce_token"
resources:
- name: cost-and-usage
path: "/"
operations:
- name: get-cost-and-usage
method: POST
- type: http
namespace: jira
baseUri: "https://broadcom.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: 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
Identifies SAP Concur expense reports pending manager approval beyond the policy threshold and sends Slack reminders to the responsible approvers.
naftiko: "0.5"
info:
label: "Concur Expense Report Approval Escalation"
description: "Identifies SAP Concur expense reports pending manager approval beyond the policy threshold and sends Slack reminders to the responsible approvers."
tags:
- finance
- expense-management
- sap-concur
- slack
- approval
capability:
exposes:
- type: mcp
namespace: expense-ops
port: 8080
tools:
- name: escalate-pending-expenses
description: "Retrieve expense reports from SAP Concur that have been pending approval beyond the specified number of days and send Slack reminders to the responsible approvers. Use for weekly expense compliance enforcement."
inputParameters:
- name: pending_days
in: body
type: integer
description: "Minimum number of days an expense report must be pending to trigger a reminder. Broadcom policy typically requires approval within 5 business days."
steps:
- name: get-pending-reports
type: call
call: "concur.list-pending-reports"
with:
approvalStatusCode: "A_PEND"
limit: "100"
- name: notify-approvers
type: call
call: "slack.post-message"
with:
channel: "expense-reminders"
text: "Reminder: {{get-pending-reports.count}} expense report(s) have been pending approval for more than {{pending_days}} days. Please review in SAP Concur."
consumes:
- type: http
namespace: concur
baseUri: "https://www.concursolutions.com/api/v3.0"
authentication:
type: bearer
token: "$secrets.concur_token"
resources:
- name: expense-reports
path: "/expense/reports"
operations:
- name: list-pending-reports
method: GET
- 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
Identifies stale Confluence pages, archives them to long-term storage, and notifies page owners via Slack.
naftiko: "0.5"
info:
label: "Confluence Knowledge Base Archival Orchestrator"
description: "Identifies stale Confluence pages, archives them to long-term storage, and notifies page owners via Slack."
tags:
- collaboration
- confluence
- slack
capability:
exposes:
- type: mcp
namespace: kb-archival
port: 8080
tools:
- name: archive-stale-pages
description: "Archive stale Confluence pages and notify owners via Slack."
inputParameters:
- name: space_key
in: body
type: string
description: "Confluence space key."
- name: stale_days
in: body
type: number
description: "Days since last modification to consider stale."
steps:
- name: find-stale
type: call
call: "confluence.search-content"
with:
space_key: "{{space_key}}"
stale_days: "{{stale_days}}"
- name: archive-pages
type: call
call: "confluence.archive-pages"
with:
space_key: "{{space_key}}"
page_ids: "{{find-stale.page_ids}}"
- name: notify-owners
type: call
call: "slack.post-message"
with:
channel: "#content-ops"
text: "Archived {{find-stale.count}} stale pages in {{space_key}}"
consumes:
- type: http
namespace: confluence
baseUri: "https://broadcom.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: content
path: "/content/search"
operations:
- name: search-content
method: GET
- name: archive-pages
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
Retrieves the title and body content of a Confluence page by page ID.
naftiko: "0.5"
info:
label: "Confluence Page Content Lookup"
description: "Retrieves the title and body content of a Confluence page by page ID."
tags:
- documentation
- confluence
- knowledge-management
capability:
exposes:
- type: mcp
namespace: docs
port: 8080
tools:
- name: get-page-content
description: "Retrieve a Confluence page by ID."
inputParameters:
- name: page_id
in: body
type: string
description: "The Confluence page ID."
call: "confluence.get-page"
with:
page_id: "{{page_id}}"
outputParameters:
- name: title
type: string
mapping: "$.title"
- name: body
type: string
mapping: "$.body.storage.value"
consumes:
- type: http
namespace: confluence
baseUri: "https://broadcom.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: pages
path: "/content/{{page_id}}?expand=body.storage"
inputParameters:
- name: page_id
in: path
operations:
- name: get-page
method: GET
Returns the total number of pages in a Confluence space.
naftiko: "0.5"
info:
label: "Confluence Space Page Count Lookup"
description: "Returns the total number of pages in a Confluence space."
tags:
- collaboration
- confluence
capability:
exposes:
- type: mcp
namespace: wiki-info
port: 8080
tools:
- name: get-space-page-count
description: "Look up total page count for a Confluence space by space key."
inputParameters:
- name: space_key
in: body
type: string
description: "Confluence space key."
call: "confluence.get-space-content"
with:
space_key: "{{space_key}}"
outputParameters:
- name: page_count
type: number
mapping: "$.size"
consumes:
- type: http
namespace: confluence
baseUri: "https://broadcom.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: content
path: "/space/{{space_key}}/content/page"
inputParameters:
- name: space_key
in: path
operations:
- name: get-space-content
method: GET
When a Salesforce case is escalated, retrieves account details, creates a priority ServiceNow incident, and notifies the customer success team via Slack.
naftiko: "0.5"
info:
label: "Customer Escalation Response Orchestrator"
description: "When a Salesforce case is escalated, retrieves account details, creates a priority ServiceNow incident, and notifies the customer success team via Slack."
tags:
- support
- salesforce
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: customer-escalation
port: 8080
tools:
- name: handle-escalation
description: "Handle customer escalation by pulling Salesforce case details, opening a ServiceNow P1 incident, and alerting the CS team."
inputParameters:
- name: case_id
in: body
type: string
description: "Salesforce case ID."
steps:
- name: get-case
type: call
call: "salesforce.get-case"
with:
case_id: "{{case_id}}"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Customer escalation: {{get-case.subject}}"
urgency: "1"
impact: "1"
- name: notify-cs
type: call
call: "slack.post-message"
with:
channel: "#customer-success"
text: "Escalation for {{get-case.account_name}}: {{get-case.subject}}. ServiceNow: {{create-incident.number}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://broadcom.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: get-case
method: GET
- type: http
namespace: servicenow
baseUri: "https://broadcom.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
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
Monitors data center capacity via Datadog, creates a ServiceNow change request when thresholds are breached, and alerts the infrastructure team on Microsoft Teams.
naftiko: "0.5"
info:
label: "Data Center Capacity Alert Orchestrator"
description: "Monitors data center capacity via Datadog, creates a ServiceNow change request when thresholds are breached, and alerts the infrastructure team on Microsoft Teams."
tags:
- infrastructure
- datadog
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: dc-capacity
port: 8080
tools:
- name: handle-capacity-alert
description: "When data center capacity threshold is breached, create a ServiceNow change request and alert the infra team on Teams."
inputParameters:
- name: datacenter_id
in: body
type: string
description: "Data center identifier."
- name: metric_name
in: body
type: string
description: "Capacity metric name."
steps:
- name: get-metric
type: call
call: "datadog.query-metric"
with:
datacenter_id: "{{datacenter_id}}"
metric: "{{metric_name}}"
- name: create-change
type: call
call: "servicenow.create-change"
with:
short_description: "Capacity threshold breached in {{datacenter_id}}"
category: "infrastructure"
- name: notify-teams
type: call
call: "teams.post-message"
with:
channel: "Infrastructure Alerts"
text: "DC {{datacenter_id}} capacity alert. Change request: {{create-change.number}}"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: query
path: "/query"
operations:
- name: query-metric
method: GET
- type: http
namespace: servicenow
baseUri: "https://broadcom.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: change-requests
path: "/table/change_request"
operations:
- name: create-change
method: POST
- type: http
namespace: teams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.teams_token"
resources:
- name: messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: post-message
method: POST
When a Datadog alert fires, enriches it with service metadata, triggers a PagerDuty incident, and posts context to Slack.
naftiko: "0.5"
info:
label: "Datadog Alert to PagerDuty Escalation Orchestrator"
description: "When a Datadog alert fires, enriches it with service metadata, triggers a PagerDuty incident, and posts context to Slack."
tags:
- observability
- datadog
- pagerduty
- slack
capability:
exposes:
- type: mcp
namespace: alert-escalation
port: 8080
tools:
- name: escalate-datadog-alert
description: "Escalate a Datadog alert by triggering PagerDuty and posting context to Slack."
inputParameters:
- name: monitor_id
in: body
type: string
description: "Datadog monitor ID."
- name: service_name
in: body
type: string
description: "Affected service name."
steps:
- name: get-monitor
type: call
call: "datadog.get-monitor-details"
with:
monitor_id: "{{monitor_id}}"
- name: trigger-incident
type: call
call: "pagerduty.create-incident"
with:
service_name: "{{service_name}}"
title: "Alert: {{get-monitor.name}}"
- name: post-context
type: call
call: "slack.post-message"
with:
channel: "#incidents"
text: "PagerDuty incident created for {{service_name}}: {{get-monitor.name}}. PD: {{trigger-incident.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: monitors
path: "/monitor/{{monitor_id}}"
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor-details
method: GET
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: bearer
token: "$secrets.pagerduty_token"
resources:
- name: incidents
path: "/incidents"
operations:
- name: create-incident
method: POST
- type: http
namespace: 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
When a Datadog monitor for production semiconductor or VMware infrastructure crosses a critical threshold, creates a PagerDuty incident and posts a Slack alert for on-call response.
naftiko: "0.5"
info:
label: "Datadog Infrastructure Alert Escalation"
description: "When a Datadog monitor for production semiconductor or VMware infrastructure crosses a critical threshold, creates a PagerDuty incident and posts a Slack alert for on-call response."
tags:
- observability
- datadog
- pagerduty
- slack
- monitoring
- incident-response
capability:
exposes:
- type: mcp
namespace: observability-ops
port: 8080
tools:
- name: escalate-monitor-alert
description: "Given a Datadog monitor ID in ALERT state and PagerDuty service ID, fetch monitor details, trigger a PagerDuty incident, and post a Slack alert. Use for production monitors covering networking chips, VMware infrastructure, or enterprise software SLAs."
inputParameters:
- name: monitor_id
in: body
type: integer
description: "The Datadog monitor ID in ALERT state."
- name: pagerduty_service_id
in: body
type: string
description: "The PagerDuty service ID to route the incident to."
steps:
- name: get-monitor
type: call
call: "datadog.get-monitor"
with:
monitor_id: "{{monitor_id}}"
- name: create-incident
type: call
call: "pagerduty.create-incident"
with:
title: "{{get-monitor.name}} — ALERT"
service_id: "{{pagerduty_service_id}}"
body: "Monitor: {{get-monitor.name}}\nQuery: {{get-monitor.query}}"
- name: alert-slack
type: call
call: "slack.post-message"
with:
channel: "infrastructure-alerts"
text: "Datadog ALERT: {{get-monitor.name}} | PagerDuty incident created for {{pagerduty_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: monitors
path: "/monitor/{{monitor_id}}"
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
- 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
- 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
Queries Datadog APM for the p95 latency of a specified service over the last hour.
naftiko: "0.5"
info:
label: "Datadog Service Latency Lookup"
description: "Queries Datadog APM for the p95 latency of a specified service over the last hour."
tags:
- observability
- datadog
- apm
capability:
exposes:
- type: mcp
namespace: monitoring
port: 8080
tools:
- name: get-service-latency
description: "Retrieve p95 latency for a service from Datadog APM."
inputParameters:
- name: service_name
in: body
type: string
description: "The Datadog service name."
call: "datadog.query-metrics"
with:
query: "trace.http.request.duration.by.service.95p{service:{{service_name}}}"
outputParameters:
- name: p95_latency_ms
type: number
mapping: "$.series[0].pointlist[-1][1]"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
headerName: "DD-API-KEY"
resources:
- name: metrics
path: "/query"
operations:
- name: query-metrics
method: GET
Fetches current SLO compliance metrics from Datadog for all production services and publishes a compliance summary to the engineering Confluence space and Slack channel.
naftiko: "0.5"
info:
label: "Datadog SLO Compliance Report"
description: "Fetches current SLO compliance metrics from Datadog for all production services and publishes a compliance summary to the engineering Confluence space and Slack channel."
tags:
- observability
- datadog
- confluence
- slack
- reporting
- slo
capability:
exposes:
- type: mcp
namespace: slo-reporting
port: 8080
tools:
- name: publish-slo-report
description: "Fetch all SLO metrics from Datadog for production Broadcom services and publish a structured compliance report to Confluence, then announce in the engineering Slack channel. Use weekly before reliability review meetings."
inputParameters:
- name: confluence_page_id
in: body
type: string
description: "The Confluence page ID where the SLO report will be published."
steps:
- name: get-slos
type: call
call: "datadog.list-slos"
with:
tags: "env:production"
- name: update-report
type: call
call: "confluence.update-page"
with:
page_id: "{{confluence_page_id}}"
content: "SLO Report: {{get-slos.count}} SLOs tracked in production."
- name: notify-engineering
type: call
call: "slack.post-message"
with:
channel: "engineering-reliability"
text: "Weekly SLO report published to Confluence. {{get-slos.count}} SLOs tracked. Review: {{update-report.url}}"
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: slos
path: "/slo"
operations:
- name: list-slos
method: GET
- type: http
namespace: confluence
baseUri: "https://broadcom.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: pages
path: "/content/{{page_id}}"
inputParameters:
- name: page_id
in: path
operations:
- name: update-page
method: PUT
- 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
Detects performance regressions via Dynatrace, creates a Jira performance bug, and notifies the development team via Slack.
naftiko: "0.5"
info:
label: "Dynatrace Performance Regression Orchestrator"
description: "Detects performance regressions via Dynatrace, creates a Jira performance bug, and notifies the development team via Slack."
tags:
- observability
- dynatrace
- jira
- slack
capability:
exposes:
- type: mcp
namespace: perf-regression
port: 8080
tools:
- name: handle-perf-regression
description: "Detect Dynatrace performance regressions, open Jira bugs, and alert the dev team on Slack."
inputParameters:
- name: entity_id
in: body
type: string
description: "Dynatrace entity ID."
- name: threshold_ms
in: body
type: number
description: "Response time threshold in milliseconds."
steps:
- name: get-metrics
type: call
call: "dynatrace.get-entity-metrics"
with:
entity_id: "{{entity_id}}"
- name: create-bug
type: call
call: "jira.create-issue"
with:
project: "PERF"
summary: "Performance regression for {{entity_id}}"
issue_type: "Bug"
- name: alert-devs
type: call
call: "slack.post-message"
with:
channel: "#performance"
text: "Performance regression detected for {{entity_id}}. Jira: {{create-bug.key}}"
consumes:
- type: http
namespace: dynatrace
baseUri: "https://broadcom.live.dynatrace.com/api/v2"
authentication:
type: bearer
token: "$secrets.dynatrace_token"
resources:
- name: metrics
path: "/metrics/query"
operations:
- name: get-entity-metrics
method: GET
- type: http
namespace: jira
baseUri: "https://broadcom.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: 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
When an employee termination is processed in Workday, deactivates their Okta account, closes open ServiceNow tickets, and notifies the IT offboarding team via Slack.
naftiko: "0.5"
info:
label: "Employee Offboarding Workflow"
description: "When an employee termination is processed in Workday, deactivates their Okta account, closes open ServiceNow tickets, and notifies the IT offboarding team via Slack."
tags:
- hr
- offboarding
- workday
- okta
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: trigger-offboarding
description: "Given a Workday employee ID and termination date, retrieve employee details, deactivate the Okta account, and post an IT offboarding notification to Slack. Invoke when an employee departure is confirmed."
inputParameters:
- name: workday_employee_id
in: body
type: string
description: "The Workday worker ID of the departing employee."
- name: termination_date
in: body
type: string
description: "The employee's final working day in ISO 8601 format."
steps:
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{workday_employee_id}}"
- name: deactivate-okta
type: call
call: "okta.deactivate-user"
with:
user_login: "{{get-employee.work_email}}"
- name: notify-it
type: call
call: "slack.post-message"
with:
channel: "it-offboarding"
text: "Offboarding initiated: {{get-employee.full_name}} ({{get-employee.work_email}}). Okta deactivated. Last day: {{termination_date}}."
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: "/broadcom/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: okta
baseUri: "https://broadcom.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: user-deactivate
path: "/users/{{user_login}}/lifecycle/deactivate"
inputParameters:
- name: user_login
in: path
operations:
- name: deactivate-user
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
When a new hire is created in Workday, opens a ServiceNow onboarding ticket, provisions Okta identity access, and sends a Slack welcome message to the employee and their manager.
naftiko: "0.5"
info:
label: "Employee Onboarding Orchestrator"
description: "When a new hire is created in Workday, opens a ServiceNow onboarding ticket, provisions Okta identity access, and sends a Slack welcome message to the employee and their manager."
tags:
- hr
- onboarding
- workday
- servicenow
- okta
- slack
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: retrieve employee details from Workday, open a ServiceNow onboarding ticket, provision Okta account, and send a Slack welcome. Invoke when a new hire is confirmed in Workday."
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's start date in ISO 8601 format."
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:
category: "hr_onboarding"
short_description: "New hire onboarding: {{get-employee.full_name}}"
assigned_group: "IT_Onboarding"
- name: provision-okta
type: call
call: "okta.create-user"
with:
first_name: "{{get-employee.first_name}}"
last_name: "{{get-employee.last_name}}"
email: "{{get-employee.work_email}}"
- name: send-welcome
type: call
call: "slack.post-message"
with:
channel: "{{get-employee.work_email}}"
text: "Welcome to Broadcom, {{get-employee.first_name}}! Your IT onboarding ticket is {{open-ticket.number}}. Start date: {{start_date}}."
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: "/broadcom/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: servicenow
baseUri: "https://broadcom.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://broadcom.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: users
path: "/users"
operations:
- name: create-user
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
When an employee changes roles in Workday, updates Okta group memberships, modifies ServiceNow access, and sends a transition checklist via Slack.
naftiko: "0.5"
info:
label: "Employee Role Transition Orchestrator"
description: "When an employee changes roles in Workday, updates Okta group memberships, modifies ServiceNow access, and sends a transition checklist via Slack."
tags:
- hr
- workday
- okta
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: role-transition
port: 8080
tools:
- name: process-role-transition
description: "Process employee role transition by updating Okta groups, ServiceNow access, and sending a Slack checklist."
inputParameters:
- name: employee_id
in: body
type: string
description: "Workday employee ID."
- name: new_role
in: body
type: string
description: "New role title."
steps:
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{employee_id}}"
- name: update-groups
type: call
call: "okta.update-groups"
with:
user_email: "{{get-employee.work_email}}"
role: "{{new_role}}"
- name: update-access
type: call
call: "servicenow.update-access"
with:
user: "{{get-employee.work_email}}"
role: "{{new_role}}"
- name: send-checklist
type: call
call: "slack.post-message"
with:
channel: "{{get-employee.work_email}}"
text: "Role transition to {{new_role}} initiated. Please review your access changes."
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: "/broadcom/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: okta
baseUri: "https://broadcom.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: groups
path: "/groups"
operations:
- name: update-groups
method: PUT
- type: http
namespace: servicenow
baseUri: "https://broadcom.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: access
path: "/table/sys_user_role"
operations:
- name: update-access
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
Runs quality gates for Broadcom ethernet controllers by pulling test results from Snowflake, checking Jira defects, and updating SAP quality records.
naftiko: "0.5"
info:
label: "Ethernet Controller Quality Gate Orchestrator"
description: "Runs quality gates for Broadcom ethernet controllers by pulling test results from Snowflake, checking Jira defects, and updating SAP quality records."
tags:
- manufacturing
- chip-design
- snowflake
- jira
- sap
capability:
exposes:
- type: mcp
namespace: quality
port: 8080
tools:
- name: run-quality-gate
description: "Orchestrate quality gate checks across Snowflake, Jira, and SAP."
inputParameters:
- name: product_id
in: body
type: string
description: "The ethernet controller product ID."
steps:
- name: get-test-results
type: call
call: "snowflake.execute-query"
with:
statement: "SELECT pass_rate, fail_count FROM quality_results WHERE product_id = '{{product_id}}'"
- name: get-defects
type: call
call: "jira.search-issues"
with:
jql: "project = ETHQUAL AND labels = {{product_id}} AND status != Closed"
- name: update-sap-quality
type: call
call: "sap.update-quality-inspection"
with:
product_id: "{{product_id}}"
pass_rate: "{{get-test-results.pass_rate}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://broadcom.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: jira
baseUri: "https://broadcom.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: search
path: "/search"
operations:
- name: search-issues
method: POST
- type: http
namespace: sap
baseUri: "https://broadcom-s4.sap.com/sap/opu/odata/sap/API_QUALITY_INSPECTION_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: inspections
path: "/A_QualityInspection"
operations:
- name: update-quality-inspection
method: PATCH
Scans firmware images for known vulnerabilities, creates a Jira ticket for critical findings, and notifies the engineering team via Slack.
naftiko: "0.5"
info:
label: "Firmware Vulnerability Scan and Patch Orchestrator"
description: "Scans firmware images for known vulnerabilities, creates a Jira ticket for critical findings, and notifies the engineering team via Slack."
tags:
- security
- firmware
- jira
- slack
capability:
exposes:
- type: mcp
namespace: firmware-security
port: 8080
tools:
- name: scan-and-patch-firmware
description: "Scan a firmware image for vulnerabilities, open a Jira issue for critical findings, and alert the team on Slack."
inputParameters:
- name: firmware_version
in: body
type: string
description: "Firmware version identifier."
- name: product_line
in: body
type: string
description: "Product line name."
steps:
- name: scan-firmware
type: call
call: "scanner.scan-image"
with:
firmware_version: "{{firmware_version}}"
product_line: "{{product_line}}"
- name: create-jira-ticket
type: call
call: "jira.create-issue"
with:
project: "FW-SEC"
summary: "Critical vulnerabilities in {{product_line}} firmware {{firmware_version}}"
issue_type: "Bug"
- name: notify-team
type: call
call: "slack.post-message"
with:
channel: "#firmware-security"
text: "Firmware scan complete for {{product_line}} v{{firmware_version}}. Jira: {{create-jira-ticket.key}}"
consumes:
- type: http
namespace: scanner
baseUri: "https://firmware-scanner.broadcom.com/api/v1"
authentication:
type: bearer
token: "$secrets.firmware_scanner_token"
resources:
- name: scans
path: "/scan"
operations:
- name: scan-image
method: POST
- type: http
namespace: jira
baseUri: "https://broadcom.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: 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
Validates that all GitHub Actions checks pass, runs security scan, and promotes the build to production with a ServiceNow change request.
naftiko: "0.5"
info:
label: "GitHub Actions Deployment Gate Orchestrator"
description: "Validates that all GitHub Actions checks pass, runs security scan, and promotes the build to production with a ServiceNow change request."
tags:
- cicd
- github
- servicenow
capability:
exposes:
- type: mcp
namespace: deployment-gate
port: 8080
tools:
- name: process-deployment-gate
description: "Validate GitHub Actions checks, run security scan, and promote to production with ServiceNow change."
inputParameters:
- name: repo
in: body
type: string
description: "GitHub repository (org/repo)."
- name: commit_sha
in: body
type: string
description: "Git commit SHA."
steps:
- name: check-status
type: call
call: "github.get-check-runs"
with:
repo: "{{repo}}"
sha: "{{commit_sha}}"
- name: create-change
type: call
call: "servicenow.create-change"
with:
short_description: "Production deployment for {{repo}} at {{commit_sha}}"
category: "deployment"
- name: trigger-deploy
type: call
call: "github.create-deployment"
with:
repo: "{{repo}}"
ref: "{{commit_sha}}"
environment: "production"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: check-runs
path: "/repos/{{repo}}/commits/{{sha}}/check-runs"
inputParameters:
- name: repo
in: path
- name: sha
in: path
operations:
- name: get-check-runs
method: GET
- name: create-deployment
method: POST
- type: http
namespace: servicenow
baseUri: "https://broadcom.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: change-requests
path: "/table/change_request"
operations:
- name: create-change
method: POST
On a new pull request in GitHub, triggers a security scan and posts results back as a PR review comment to enforce secure coding practices across semiconductor and infrastructure software codebases.
naftiko: "0.5"
info:
label: "GitHub Pull Request Security Scan Gate"
description: "On a new pull request in GitHub, triggers a security scan and posts results back as a PR review comment to enforce secure coding practices across semiconductor and infrastructure software codebases."
tags:
- devops
- security
- github
- code-quality
- vulnerability-management
capability:
exposes:
- type: mcp
namespace: security-scanning
port: 8080
tools:
- name: scan-pull-request
description: "Given a GitHub repository and pull request number, retrieve PR details, post a security review placeholder, and request review from the security team. Use when a PR targets main, release, or firmware branches."
inputParameters:
- name: repo
in: body
type: string
description: "The GitHub repository full name, e.g. 'broadcom/linux-kernel-patches'."
- name: pr_number
in: body
type: integer
description: "The GitHub pull request number."
- name: commit_sha
in: body
type: string
description: "The HEAD commit SHA of the pull request."
steps:
- name: get-pr
type: call
call: "github.get-pull-request"
with:
repo: "{{repo}}"
pull_number: "{{pr_number}}"
- name: post-review
type: call
call: "github-review.create-pr-review"
with:
repo: "{{repo}}"
pull_number: "{{pr_number}}"
commit_id: "{{commit_sha}}"
body: "Security review triggered for PR #{{pr_number}} in {{repo}}. Scanning {{get-pr.changed_files}} files."
event: "COMMENT"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: pull-requests
path: "/repos/{{repo}}/pulls/{{pull_number}}"
inputParameters:
- name: repo
in: path
- name: pull_number
in: path
operations:
- name: get-pull-request
method: GET
- type: http
namespace: github-review
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: pr-reviews
path: "/repos/{{repo}}/pulls/{{pull_number}}/reviews"
inputParameters:
- name: repo
in: path
- name: pull_number
in: path
operations:
- name: create-pr-review
method: POST
When a new GitHub release is tagged for a VMware or CA software product, compiles structured release notes from merged PRs and publishes to Confluence and the product Slack channel.
naftiko: "0.5"
info:
label: "GitHub Release Notes Publisher"
description: "When a new GitHub release is tagged for a VMware or CA software product, compiles structured release notes from merged PRs and publishes to Confluence and the product Slack channel."
tags:
- devops
- github
- confluence
- slack
- release-management
capability:
exposes:
- type: mcp
namespace: release-management
port: 8080
tools:
- name: publish-release-notes
description: "Given a GitHub repository and release tag, fetch merged PRs since the prior tag, compile structured release notes, publish to Confluence, and announce in the product Slack channel. Use when a VMware, CA, or infrastructure software release is cut."
inputParameters:
- name: repo
in: body
type: string
description: "The GitHub repository full name, e.g. 'broadcom/vsphere-client'."
- name: release_tag
in: body
type: string
description: "The release tag, e.g. 'v8.0.3'."
- name: confluence_space_key
in: body
type: string
description: "The Confluence space key for release notes, e.g. 'VMWREL'."
steps:
- name: get-prs
type: call
call: "github.list-merged-prs"
with:
repo: "{{repo}}"
- name: publish-notes
type: call
call: "confluence.create-page"
with:
space_key: "{{confluence_space_key}}"
title: "Release Notes: {{repo}} {{release_tag}}"
body: "Release {{release_tag}} — {{get-prs.count}} changes merged."
- name: announce
type: call
call: "slack.post-message"
with:
channel: "product-releases"
text: "{{repo}} {{release_tag}} released. Notes: {{publish-notes.url}}"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: pulls
path: "/repos/{{repo}}/pulls"
inputParameters:
- name: repo
in: path
operations:
- name: list-merged-prs
method: GET
- type: http
namespace: confluence
baseUri: "https://broadcom.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: pages
path: "/content"
operations:
- name: create-page
method: POST
- 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
When a developer joins a product team, grants them access to the relevant GitHub repositories and sends a Slack confirmation to the team lead.
naftiko: "0.5"
info:
label: "GitHub Repository Access Provisioning"
description: "When a developer joins a product team, grants them access to the relevant GitHub repositories and sends a Slack confirmation to the team lead."
tags:
- devops
- identity
- github
- slack
- access-management
capability:
exposes:
- type: mcp
namespace: dev-access
port: 8080
tools:
- name: provision-repo-access
description: "Given a GitHub username, repository name, and permission level, add the developer as a repository collaborator and notify the team lead in Slack. Use when a new engineer joins a Broadcom product team working on VMware, CA software, or semiconductor IP."
inputParameters:
- name: github_username
in: body
type: string
description: "The GitHub username of the developer."
- name: repo_name
in: body
type: string
description: "The full GitHub repository name, e.g. 'broadcom/esxi-kernel'."
- name: permission
in: body
type: string
description: "Permission level: 'read', 'triage', 'write', 'maintain', or 'admin'."
- name: team_lead_slack_id
in: body
type: string
description: "The Slack user ID of the team lead."
steps:
- name: add-collaborator
type: call
call: "github.add-repo-collaborator"
with:
repo: "{{repo_name}}"
username: "{{github_username}}"
permission: "{{permission}}"
- name: notify-lead
type: call
call: "slack.post-dm"
with:
channel: "{{team_lead_slack_id}}"
text: "{{github_username}} granted {{permission}} access to {{repo_name}}."
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: collaborators
path: "/repos/{{repo}}/collaborators/{{username}}"
inputParameters:
- name: repo
in: path
- name: username
in: path
operations:
- name: add-repo-collaborator
method: PUT
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: dm
path: "/chat.postMessage"
operations:
- name: post-dm
method: POST
Retrieves branch protection rules for a GitHub repository branch.
naftiko: "0.5"
info:
label: "GitHub Repository Branch Protection Lookup"
description: "Retrieves branch protection rules for a GitHub repository branch."
tags:
- devops
- github
- security
capability:
exposes:
- type: mcp
namespace: source-control
port: 8080
tools:
- name: get-branch-protection
description: "Look up branch protection rules for a repository branch."
inputParameters:
- name: repo_name
in: body
type: string
description: "Repository in org/repo format."
- name: branch
in: body
type: string
description: "The branch name."
call: "github.get-branch-protection"
with:
repo: "{{repo_name}}"
branch: "{{branch}}"
outputParameters:
- name: required_reviewers
type: number
mapping: "$.required_pull_request_reviews.required_approving_review_count"
- name: enforce_admins
type: boolean
mapping: "$.enforce_admins.enabled"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: branch-protection
path: "/repos/{{repo}}/branches/{{branch}}/protection"
inputParameters:
- name: repo
in: path
- name: branch
in: path
operations:
- name: get-branch-protection
method: GET
Retrieves the count of open Dependabot alerts for a GitHub repository.
naftiko: "0.5"
info:
label: "GitHub Repository Vulnerability Count Lookup"
description: "Retrieves the count of open Dependabot alerts for a GitHub repository."
tags:
- security
- github
capability:
exposes:
- type: mcp
namespace: repo-security
port: 8080
tools:
- name: get-vulnerability-count
description: "Look up open Dependabot alert count for a GitHub repository."
inputParameters:
- name: repo_name
in: body
type: string
description: "GitHub repository name (org/repo)."
call: "github.get-alerts"
with:
repo: "{{repo_name}}"
outputParameters:
- name: alert_count
type: number
mapping: "$.length"
- name: critical_count
type: number
mapping: "$.critical_count"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: dependabot-alerts
path: "/repos/{{repo}}/dependabot/alerts?state=open"
inputParameters:
- name: repo
in: path
operations:
- name: get-alerts
method: GET
Aggregates financial close data from SAP into Google Sheets, validates reconciliation totals, and distributes the report via email.
naftiko: "0.5"
info:
label: "Google Sheets Financial Close Orchestrator"
description: "Aggregates financial close data from SAP into Google Sheets, validates reconciliation totals, and distributes the report via email."
tags:
- finance
- sap
- google-sheets
- email
capability:
exposes:
- type: mcp
namespace: financial-close
port: 8080
tools:
- name: run-financial-close
description: "Aggregate SAP financial close data to Google Sheets, validate reconciliation, and email report."
inputParameters:
- name: fiscal_period
in: body
type: string
description: "Fiscal period (e.g., 2026-03)."
- name: company_code
in: body
type: string
description: "SAP company code."
steps:
- name: get-close-data
type: call
call: "sap.get-period-close"
with:
period: "{{fiscal_period}}"
company_code: "{{company_code}}"
- name: update-sheet
type: call
call: "sheets.update-spreadsheet"
with:
spreadsheet_id: "financial-close-2026"
data: "{{get-close-data.results}}"
- name: send-report
type: call
call: "email.send-message"
with:
to: "finance-team@broadcom.com"
subject: "Financial Close Report - {{fiscal_period}}"
body: "Close data published to Google Sheets."
consumes:
- type: http
namespace: sap
baseUri: "https://broadcom-s4.sap.com/sap/opu/odata/sap/FI_PERIOD_CLOSE_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: period-close
path: "/A_PeriodClose"
operations:
- name: get-period-close
method: GET
- type: http
namespace: sheets
baseUri: "https://sheets.googleapis.com/v4"
authentication:
type: bearer
token: "$secrets.google_sheets_token"
resources:
- name: spreadsheets
path: "/spreadsheets/{{spreadsheet_id}}/values:batchUpdate"
inputParameters:
- name: spreadsheet_id
in: path
operations:
- name: update-spreadsheet
method: POST
- type: http
namespace: email
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.graph_token"
resources:
- name: mail
path: "/me/sendMail"
operations:
- name: send-message
method: POST
Retrieves a snapshot of a Grafana dashboard panel for a given time range.
naftiko: "0.5"
info:
label: "Grafana Dashboard Snapshot Lookup"
description: "Retrieves a snapshot of a Grafana dashboard panel for a given time range."
tags:
- observability
- grafana
capability:
exposes:
- type: mcp
namespace: grafana-dashboards
port: 8080
tools:
- name: get-dashboard-snapshot
description: "Retrieve Grafana dashboard snapshot by dashboard UID."
inputParameters:
- name: dashboard_uid
in: body
type: string
description: "Grafana dashboard UID."
call: "grafana.get-dashboard"
with:
uid: "{{dashboard_uid}}"
outputParameters:
- name: title
type: string
mapping: "$.dashboard.title"
- name: panels
type: string
mapping: "$.dashboard.panels"
consumes:
- type: http
namespace: grafana
baseUri: "https://grafana.broadcom.com/api"
authentication:
type: bearer
token: "$secrets.grafana_token"
resources:
- name: dashboards
path: "/dashboards/uid/{{uid}}"
inputParameters:
- name: uid
in: path
operations:
- name: get-dashboard
method: GET
Discovers installed software via ServiceNow Discovery, reconciles against license entitlements, and creates remediation tasks in Jira.
naftiko: "0.5"
info:
label: "ITAM Software Discovery Orchestrator"
description: "Discovers installed software via ServiceNow Discovery, reconciles against license entitlements, and creates remediation tasks in Jira."
tags:
- compliance
- servicenow
- jira
capability:
exposes:
- type: mcp
namespace: itam-discovery
port: 8080
tools:
- name: discover-and-reconcile-software
description: "Discover installed software, reconcile licenses, and create Jira remediation tasks."
inputParameters:
- name: ci_class
in: body
type: string
description: "ServiceNow CI class name."
steps:
- name: get-installed-software
type: call
call: "servicenow.get-discovery-results"
with:
ci_class: "{{ci_class}}"
- name: reconcile-licenses
type: call
call: "servicenow.get-license-compliance"
with:
ci_class: "{{ci_class}}"
- name: create-remediation
type: call
call: "jira.create-issue"
with:
project: "ITAM"
summary: "License compliance remediation for {{ci_class}}"
issue_type: "Task"
consumes:
- type: http
namespace: servicenow
baseUri: "https://broadcom.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: discovery
path: "/table/cmdb_ci_software"
operations:
- name: get-discovery-results
method: GET
- name: get-license-compliance
method: GET
- type: http
namespace: jira
baseUri: "https://broadcom.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Retrieves Jira issue details including status, assignee, priority, and story points.
naftiko: "0.5"
info:
label: "Jira Issue Details Lookup"
description: "Retrieves Jira issue details including status, assignee, priority, and story points."
tags:
- project-management
- jira
- agile
capability:
exposes:
- type: mcp
namespace: project-mgmt
port: 8080
tools:
- name: get-issue-details
description: "Look up a Jira issue by key and return its details."
inputParameters:
- name: issue_key
in: body
type: string
description: "The Jira issue key."
call: "jira.get-issue"
with:
issue_key: "{{issue_key}}"
outputParameters:
- name: status
type: string
mapping: "$.fields.status.name"
- name: assignee
type: string
mapping: "$.fields.assignee.displayName"
- name: priority
type: string
mapping: "$.fields.priority.name"
consumes:
- type: http
namespace: jira
baseUri: "https://broadcom.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue/{{issue_key}}"
inputParameters:
- name: issue_key
in: path
operations:
- name: get-issue
method: GET
Validates Jira release readiness by checking unresolved issues, generating release notes in Confluence, and triggering a GitHub release.
naftiko: "0.5"
info:
label: "Jira Release Readiness Gate Orchestrator"
description: "Validates Jira release readiness by checking unresolved issues, generating release notes in Confluence, and triggering a GitHub release."
tags:
- cicd
- jira
- confluence
- github
capability:
exposes:
- type: mcp
namespace: release-gate
port: 8080
tools:
- name: validate-release-readiness
description: "Validate release by checking Jira issues, publishing Confluence notes, and creating a GitHub release."
inputParameters:
- name: project_key
in: body
type: string
description: "Jira project key."
- name: version
in: body
type: string
description: "Release version."
steps:
- name: check-issues
type: call
call: "jira.search-issues"
with:
jql: "project={{project_key}} AND fixVersion={{version}} AND resolution=Unresolved"
- name: create-release-notes
type: call
call: "confluence.create-page"
with:
space_key: "{{project_key}}"
title: "Release Notes - {{version}}"
- name: create-release
type: call
call: "github.create-release"
with:
tag: "v{{version}}"
name: "{{project_key}} {{version}}"
consumes:
- type: http
namespace: jira
baseUri: "https://broadcom.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: search
path: "/search"
operations:
- name: search-issues
method: GET
- type: http
namespace: confluence
baseUri: "https://broadcom.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: releases
path: "/repos/broadcom/{{repo}}/releases"
operations:
- name: create-release
method: POST
Generates a sprint planning digest for a Broadcom engineering project in Jira and posts the issue breakdown to the team Slack channel.
naftiko: "0.5"
info:
label: "Jira Sprint Planning Digest"
description: "Generates a sprint planning digest for a Broadcom engineering project in Jira and posts the issue breakdown to the team Slack channel."
tags:
- devops
- jira
- slack
- sprint-planning
- reporting
capability:
exposes:
- type: mcp
namespace: sprint-reporting
port: 8080
tools:
- name: digest-sprint-board
description: "Given a Jira project key and sprint ID, fetch all open issues grouped by priority and post a sprint digest to the team Slack channel. Use at the start of sprint planning for VMware, CA software, or semiconductor engineering teams."
inputParameters:
- name: project_key
in: body
type: string
description: "The Jira project key, e.g. 'VMWRC' or 'CAENG'."
- name: sprint_id
in: body
type: integer
description: "The Jira sprint ID."
- name: slack_channel
in: body
type: string
description: "The Slack channel to post the digest to."
steps:
- name: get-issues
type: call
call: "jira.search-issues"
with:
jql: "project={{project_key}} AND sprint={{sprint_id}} AND status != Done"
- name: post-digest
type: call
call: "slack.post-message"
with:
channel: "{{slack_channel}}"
text: "Sprint {{sprint_id}} digest for {{project_key}}: {{get-issues.total}} open issues."
consumes:
- type: http
namespace: jira
baseUri: "https://broadcom.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issue-search
path: "/search"
operations:
- name: search-issues
method: GET
- 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
Provisions a new Kubernetes namespace with resource quotas, configures RBAC via Okta groups, and logs the provisioning in ServiceNow.
naftiko: "0.5"
info:
label: "Kubernetes Namespace Provisioning Orchestrator"
description: "Provisions a new Kubernetes namespace with resource quotas, configures RBAC via Okta groups, and logs the provisioning in ServiceNow."
tags:
- infrastructure
- kubernetes
- okta
- servicenow
capability:
exposes:
- type: mcp
namespace: k8s-provisioning
port: 8080
tools:
- name: provision-namespace
description: "Provision a K8s namespace with quotas, configure RBAC via Okta, and log in ServiceNow."
inputParameters:
- name: namespace_name
in: body
type: string
description: "Kubernetes namespace name."
- name: team_name
in: body
type: string
description: "Team requesting the namespace."
steps:
- name: create-namespace
type: call
call: "k8s.create-namespace"
with:
name: "{{namespace_name}}"
team: "{{team_name}}"
- name: configure-rbac
type: call
call: "okta.assign-group"
with:
group_name: "k8s-{{namespace_name}}"
team: "{{team_name}}"
- name: log-provision
type: call
call: "servicenow.create-request"
with:
short_description: "K8s namespace provisioned: {{namespace_name}} for {{team_name}}"
consumes:
- type: http
namespace: k8s
baseUri: "https://k8s-api.broadcom.com"
authentication:
type: bearer
token: "$secrets.k8s_token"
resources:
- name: namespaces
path: "/api/v1/namespaces"
operations:
- name: create-namespace
method: POST
- type: http
namespace: okta
baseUri: "https://broadcom.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: groups
path: "/groups"
operations:
- name: assign-group
method: POST
- type: http
namespace: servicenow
baseUri: "https://broadcom.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
Retrieves follower count for the Broadcom LinkedIn company page.
naftiko: "0.5"
info:
label: "LinkedIn Company Follower Count Lookup"
description: "Retrieves follower count for the Broadcom LinkedIn company page."
tags:
- marketing
- linkedin
- social-media
capability:
exposes:
- type: mcp
namespace: social
port: 8080
tools:
- name: get-follower-stats
description: "Retrieve follower statistics for the Broadcom LinkedIn page."
inputParameters:
- name: time_range
in: body
type: string
description: "Time range for follower data."
call: "linkedin.get-follower-statistics"
with:
organization_id: "broadcom"
outputParameters:
- name: total_followers
type: number
mapping: "$.elements[0].followerCounts.organicFollowerCount"
consumes:
- type: http
namespace: linkedin
baseUri: "https://api.linkedin.com/v2"
authentication:
type: bearer
token: "$secrets.linkedin_token"
resources:
- name: follower-statistics
path: "/organizationalEntityFollowerStatistics?q=organizationalEntity&organizationalEntity=urn:li:organization:broadcom"
operations:
- name: get-follower-statistics
method: GET
Fetches engagement and follower metrics from Broadcom's LinkedIn company page for the reporting period and posts a digest to the corporate communications Slack channel.
naftiko: "0.5"
info:
label: "LinkedIn Company Page Performance Digest"
description: "Fetches engagement and follower metrics from Broadcom's LinkedIn company page for the reporting period and posts a digest to the corporate communications Slack channel."
tags:
- marketing
- social
- linkedin
- slack
- reporting
capability:
exposes:
- type: mcp
namespace: social-reporting
port: 8080
tools:
- name: digest-linkedin-performance
description: "Fetch follower growth and post engagement metrics from Broadcom's LinkedIn page for a given reporting period and post a summary to the corporate communications Slack channel. Use for weekly and monthly social performance reviews."
inputParameters:
- name: start_date
in: body
type: string
description: "The start of the reporting period in ISO 8601 format."
- name: end_date
in: body
type: string
description: "The end of the reporting period in ISO 8601 format."
steps:
- name: get-follower-stats
type: call
call: "linkedin.get-follower-stats"
with:
organization_id: "$secrets.broadcom_linkedin_org_id"
- name: get-share-stats
type: call
call: "linkedin-shares.get-share-stats"
with:
organization_id: "$secrets.broadcom_linkedin_org_id"
start: "{{start_date}}"
end: "{{end_date}}"
- name: post-digest
type: call
call: "slack.post-message"
with:
channel: "corporate-communications"
text: "LinkedIn digest ({{start_date}} to {{end_date}}): followers {{get-follower-stats.follower_count}}, impressions {{get-share-stats.impression_count}}, engagements {{get-share-stats.engagement_count}}."
consumes:
- type: http
namespace: linkedin
baseUri: "https://api.linkedin.com/v2"
authentication:
type: bearer
token: "$secrets.linkedin_token"
resources:
- name: follower-stats
path: "/organizationalEntityFollowerStatistics"
operations:
- name: get-follower-stats
method: GET
- type: http
namespace: linkedin-shares
baseUri: "https://api.linkedin.com/v2"
authentication:
type: bearer
token: "$secrets.linkedin_token"
resources:
- name: share-stats
path: "/organizationalEntityShareStatistics"
operations:
- name: get-share-stats
method: GET
- 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
Retrieves candidate applications from LinkedIn Recruiter, creates candidate profiles in Workday, and notifies hiring managers via Slack.
naftiko: "0.5"
info:
label: "LinkedIn Talent Pipeline Orchestrator"
description: "Retrieves candidate applications from LinkedIn Recruiter, creates candidate profiles in Workday, and notifies hiring managers via Slack."
tags:
- hr
- linkedin
- workday
- slack
capability:
exposes:
- type: mcp
namespace: talent-pipeline
port: 8080
tools:
- name: process-talent-pipeline
description: "Process LinkedIn talent pipeline by creating Workday profiles and notifying hiring managers."
inputParameters:
- name: job_posting_id
in: body
type: string
description: "LinkedIn job posting ID."
steps:
- name: get-applicants
type: call
call: "linkedin.get-applications"
with:
posting_id: "{{job_posting_id}}"
- name: create-candidates
type: call
call: "workday.create-candidate"
with:
source: "LinkedIn"
posting_id: "{{job_posting_id}}"
- name: notify-managers
type: call
call: "slack.post-message"
with:
channel: "#hiring"
text: "New LinkedIn applicants for posting {{job_posting_id}}: {{get-applicants.count}} candidates"
consumes:
- type: http
namespace: linkedin
baseUri: "https://api.linkedin.com/v2"
authentication:
type: bearer
token: "$secrets.linkedin_token"
resources:
- name: applications
path: "/jobApplications"
operations:
- name: get-applications
method: GET
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: candidates
path: "/broadcom/candidates"
operations:
- name: create-candidate
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
Runs Looker data quality checks, exports results to Google Sheets, and alerts data stewards via Slack.
naftiko: "0.5"
info:
label: "Looker Data Quality Report Orchestrator"
description: "Runs Looker data quality checks, exports results to Google Sheets, and alerts data stewards via Slack."
tags:
- analytics
- looker
- google-sheets
- slack
capability:
exposes:
- type: mcp
namespace: data-quality-report
port: 8080
tools:
- name: generate-data-quality-report
description: "Run Looker data quality checks, export to Google Sheets, and notify data stewards."
inputParameters:
- name: look_id
in: body
type: string
description: "Looker Look ID for data quality dashboard."
steps:
- name: run-look
type: call
call: "looker.run-look"
with:
look_id: "{{look_id}}"
- name: export-to-sheets
type: call
call: "sheets.update-spreadsheet"
with:
spreadsheet_id: "dq-report-2026"
data: "{{run-look.results}}"
- name: notify-stewards
type: call
call: "slack.post-message"
with:
channel: "#data-quality"
text: "Data quality report generated. Results: {{run-look.row_count}} issues found."
consumes:
- type: http
namespace: looker
baseUri: "https://broadcom.looker.com/api/4.0"
authentication:
type: bearer
token: "$secrets.looker_token"
resources:
- name: looks
path: "/looks/{{look_id}}/run/json"
inputParameters:
- name: look_id
in: path
operations:
- name: run-look
method: GET
- type: http
namespace: sheets
baseUri: "https://sheets.googleapis.com/v4"
authentication:
type: bearer
token: "$secrets.google_sheets_token"
resources:
- name: spreadsheets
path: "/spreadsheets/{{spreadsheet_id}}/values:batchUpdate"
inputParameters:
- name: spreadsheet_id
in: path
operations:
- name: update-spreadsheet
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
Retrieves recent messages from a Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Microsoft Teams Channel Message Lookup"
description: "Retrieves recent messages from a Microsoft Teams channel."
tags:
- collaboration
- microsoft-teams
- messaging
capability:
exposes:
- type: mcp
namespace: messaging
port: 8080
tools:
- name: get-channel-messages
description: "Retrieve last 10 messages from a Teams channel."
inputParameters:
- name: team_id
in: body
type: string
description: "The Teams team ID."
- name: channel_id
in: body
type: string
description: "The Teams channel ID."
call: "msteams.get-messages"
with:
team_id: "{{team_id}}"
channel_id: "{{channel_id}}"
outputParameters:
- name: messages
type: array
mapping: "$.value[*].body.content"
consumes:
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages?$top=10"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: get-messages
method: GET
Retrieves running configuration from Cisco switches, stores the backup in AWS S3, and logs the backup event in ServiceNow CMDB.
naftiko: "0.5"
info:
label: "Network Switch Config Backup Orchestrator"
description: "Retrieves running configuration from Cisco switches, stores the backup in AWS S3, and logs the backup event in ServiceNow CMDB."
tags:
- network
- cisco
- aws-s3
- servicenow
capability:
exposes:
- type: mcp
namespace: switch-backup
port: 8080
tools:
- name: backup-switch-config
description: "Back up Cisco switch running config to S3 and log in ServiceNow CMDB."
inputParameters:
- name: switch_hostname
in: body
type: string
description: "Cisco switch hostname."
steps:
- name: get-config
type: call
call: "cisco.get-running-config"
with:
hostname: "{{switch_hostname}}"
- name: store-backup
type: call
call: "s3.put-object"
with:
bucket: "broadcom-switch-backups"
key: "{{switch_hostname}}/running-config.txt"
- name: log-cmdb
type: call
call: "servicenow.update-ci"
with:
hostname: "{{switch_hostname}}"
last_backup: "{{store-backup.timestamp}}"
consumes:
- type: http
namespace: cisco
baseUri: "https://dnac.broadcom.com/dna/intent/api/v1"
authentication:
type: bearer
token: "$secrets.cisco_dnac_token"
resources:
- name: configs
path: "/network-device/config"
operations:
- name: get-running-config
method: GET
- type: http
namespace: s3
baseUri: "https://s3.amazonaws.com"
authentication:
type: bearer
token: "$secrets.aws_s3_token"
resources:
- name: objects
path: "/{{bucket}}/{{key}}"
operations:
- name: put-object
method: PUT
- type: http
namespace: servicenow
baseUri: "https://broadcom.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: cmdb
path: "/table/cmdb_ci_netgear"
operations:
- name: update-ci
method: PATCH
Orchestrates firmware releases for Broadcom network switch ASICs by verifying CI status in GitHub, creating a Jira release ticket, and publishing notes to Confluence.
naftiko: "0.5"
info:
label: "Network Switch Firmware Release Orchestrator"
description: "Orchestrates firmware releases for Broadcom network switch ASICs by verifying CI status in GitHub, creating a Jira release ticket, and publishing notes to Confluence."
tags:
- chip-design
- product-lifecycle
- github
- jira
- confluence
capability:
exposes:
- type: mcp
namespace: firmware-release
port: 8080
tools:
- name: release-switch-firmware
description: "Orchestrate network switch firmware release across GitHub, Jira, and Confluence."
inputParameters:
- name: repo_name
in: body
type: string
description: "The firmware repository name."
- name: version
in: body
type: string
description: "The firmware version."
steps:
- name: check-ci
type: call
call: "github.get-workflow-run"
with:
repo: "{{repo_name}}"
branch: "release/{{version}}"
- name: create-ticket
type: call
call: "jira.create-issue"
with:
project: "NETSW"
summary: "Firmware Release {{version}}"
issue_type: "Task"
- name: publish-notes
type: call
call: "confluence.create-page"
with:
space: "FIRMWARE"
title: "Release Notes - {{version}}"
body: "Firmware {{version}} released. CI: {{check-ci.conclusion}}. Jira: {{create-ticket.key}}."
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: workflow-runs
path: "/repos/{{repo}}/actions/runs?branch={{branch}}&per_page=1"
inputParameters:
- name: repo
in: path
- name: branch
in: query
operations:
- name: get-workflow-run
method: GET
- type: http
namespace: jira
baseUri: "https://broadcom.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: confluence
baseUri: "https://broadcom.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: pages
path: "/content"
operations:
- name: create-page
method: POST
Retrieves application health status and response time from New Relic APM.
naftiko: "0.5"
info:
label: "New Relic Application Health Lookup"
description: "Retrieves application health status and response time from New Relic APM."
tags:
- observability
- new-relic
capability:
exposes:
- type: mcp
namespace: apm-health
port: 8080
tools:
- name: get-app-health
description: "Look up New Relic application health by app ID."
inputParameters:
- name: app_id
in: body
type: string
description: "The New Relic application ID."
call: "newrelic.get-application"
with:
app_id: "{{app_id}}"
outputParameters:
- name: health_status
type: string
mapping: "$.application.health_status"
- name: response_time
type: number
mapping: "$.application.application_summary.response_time"
consumes:
- type: http
namespace: newrelic
baseUri: "https://api.newrelic.com/v2"
authentication:
type: apikey
key: "X-Api-Key"
value: "$secrets.newrelic_api_key"
placement: header
resources:
- name: applications
path: "/applications/{{app_id}}.json"
inputParameters:
- name: app_id
in: path
operations:
- name: get-application
method: GET
Lists users assigned to a specific Okta application.
naftiko: "0.5"
info:
label: "Okta Application Assignment Lookup"
description: "Lists users assigned to a specific Okta application."
tags:
- identity
- okta
capability:
exposes:
- type: mcp
namespace: iam-apps
port: 8080
tools:
- name: get-app-assignments
description: "Look up users assigned to an Okta application by app ID."
inputParameters:
- name: app_id
in: body
type: string
description: "Okta application ID."
call: "okta.get-app-users"
with:
app_id: "{{app_id}}"
outputParameters:
- name: user_count
type: number
mapping: "$.length"
- name: users
type: string
mapping: "$"
consumes:
- type: http
namespace: okta
baseUri: "https://broadcom.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: app-users
path: "/apps/{{app_id}}/users"
inputParameters:
- name: app_id
in: path
operations:
- name: get-app-users
method: GET
Fetches all users assigned to a critical enterprise application in Okta, generates an access review report, and creates a ServiceNow compliance review task.
naftiko: "0.5"
info:
label: "Okta User Access Review"
description: "Fetches all users assigned to a critical enterprise application in Okta, generates an access review report, and creates a ServiceNow compliance review task."
tags:
- identity
- security
- okta
- servicenow
- compliance
- access-management
capability:
exposes:
- type: mcp
namespace: identity-compliance
port: 8080
tools:
- name: run-access-review
description: "Given an Okta application ID and ServiceNow assignment group, list all users assigned to the application and create a ServiceNow access review task. Use for quarterly reviews of access to VMware Cloud Director, CA Clarity, and other enterprise applications."
inputParameters:
- name: okta_app_id
in: body
type: string
description: "The Okta application ID, e.g. '0oa1x2y3z4w5v6u7t8s9'."
- name: assignment_group
in: body
type: string
description: "The ServiceNow group to assign the review task."
steps:
- name: list-app-users
type: call
call: "okta.list-app-users"
with:
app_id: "{{okta_app_id}}"
- name: create-review-task
type: call
call: "servicenow.create-incident"
with:
category: "access_review"
short_description: "Access review: {{okta_app_id}} — {{list-app-users.count}} active users"
assigned_group: "{{assignment_group}}"
consumes:
- type: http
namespace: okta
baseUri: "https://broadcom.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: app-users
path: "/apps/{{app_id}}/users"
inputParameters:
- name: app_id
in: path
operations:
- name: list-app-users
method: GET
- type: http
namespace: servicenow
baseUri: "https://broadcom.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
Retrieves all group memberships for an Okta user by email address.
naftiko: "0.5"
info:
label: "Okta User Group Membership Lookup"
description: "Retrieves all group memberships for an Okta user by email address."
tags:
- identity
- okta
- access-management
capability:
exposes:
- type: mcp
namespace: identity
port: 8080
tools:
- name: get-user-groups
description: "Look up all Okta groups assigned to a user."
inputParameters:
- name: user_email
in: body
type: string
description: "The Okta user email address."
call: "okta.get-user-groups"
with:
user_id: "{{user_email}}"
outputParameters:
- name: groups
type: array
mapping: "$[*].profile.name"
consumes:
- type: http
namespace: okta
baseUri: "https://broadcom.okta.com/api/v1"
authentication:
type: bearer
token: "$secrets.okta_token"
resources:
- name: user-groups
path: "/users/{{user_id}}/groups"
inputParameters:
- name: user_id
in: path
operations:
- name: get-user-groups
method: GET
Retrieves the current on-call engineer for a PagerDuty escalation policy.
naftiko: "0.5"
info:
label: "PagerDuty On-Call Schedule Lookup"
description: "Retrieves the current on-call engineer for a PagerDuty escalation policy."
tags:
- operations
- pagerduty
capability:
exposes:
- type: mcp
namespace: oncall-ops
port: 8080
tools:
- name: get-oncall-engineer
description: "Look up current on-call engineer by PagerDuty escalation policy ID."
inputParameters:
- name: policy_id
in: body
type: string
description: "PagerDuty escalation policy ID."
call: "pagerduty.get-oncall"
with:
policy_id: "{{policy_id}}"
outputParameters:
- name: oncall_name
type: string
mapping: "$.oncalls[0].user.name"
- name: oncall_email
type: string
mapping: "$.oncalls[0].user.email"
consumes:
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: bearer
token: "$secrets.pagerduty_token"
resources:
- name: oncalls
path: "/oncalls?escalation_policy_ids[]={{policy_id}}"
inputParameters:
- name: policy_id
in: query
operations:
- name: get-oncall
method: GET
Queries Palo Alto Networks firewall threat logs for a specified source IP.
naftiko: "0.5"
info:
label: "Palo Alto Networks Threat Log Lookup"
description: "Queries Palo Alto Networks firewall threat logs for a specified source IP."
tags:
- security
- palo-alto-networks
- threat-detection
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: get-threat-logs
description: "Retrieve threat log entries for a source IP."
inputParameters:
- name: source_ip
in: body
type: string
description: "The source IP address."
call: "paloalto.query-threat-logs"
with:
source_ip: "{{source_ip}}"
outputParameters:
- name: threat_count
type: number
mapping: "$.result.log.logs.@count"
consumes:
- type: http
namespace: paloalto
baseUri: "https://broadcom-fw.panw.com/api"
authentication:
type: apiKey
key: "$secrets.paloalto_api_key"
headerName: "X-PAN-KEY"
resources:
- name: threat-logs
path: "/log?type=threat&query=(addr.src in {{source_ip}})"
inputParameters:
- name: source_ip
in: query
operations:
- name: query-threat-logs
method: GET
Retrieves upcoming patent filing deadlines from the IP management system, creates reminder tasks in Jira, and sends digest notifications via email.
naftiko: "0.5"
info:
label: "Patent Filing Deadline Tracker Orchestrator"
description: "Retrieves upcoming patent filing deadlines from the IP management system, creates reminder tasks in Jira, and sends digest notifications via email."
tags:
- legal
- jira
- email
capability:
exposes:
- type: mcp
namespace: ip-tracking
port: 8080
tools:
- name: track-patent-deadlines
description: "Track patent filing deadlines, create Jira reminders, and send email notifications."
inputParameters:
- name: days_ahead
in: body
type: number
description: "Number of days ahead to look for deadlines."
steps:
- name: get-deadlines
type: call
call: "ip-mgmt.get-upcoming-deadlines"
with:
days_ahead: "{{days_ahead}}"
- name: create-tasks
type: call
call: "jira.create-issue"
with:
project: "IP"
summary: "Patent filing deadlines in next {{days_ahead}} days"
issue_type: "Task"
- name: send-digest
type: call
call: "email.send-message"
with:
to: "ip-team@broadcom.com"
subject: "Patent Filing Deadline Digest"
body: "Upcoming deadlines: {{get-deadlines.count}} filings due"
consumes:
- type: http
namespace: ip-mgmt
baseUri: "https://ip-management.broadcom.com/api/v1"
authentication:
type: bearer
token: "$secrets.ip_mgmt_token"
resources:
- name: deadlines
path: "/deadlines"
operations:
- name: get-upcoming-deadlines
method: GET
- type: http
namespace: jira
baseUri: "https://broadcom.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: email
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.graph_token"
resources:
- name: mail
path: "/me/sendMail"
operations:
- name: send-message
method: POST
Checks the last refresh status for a Power BI dataset.
naftiko: "0.5"
info:
label: "Power BI Dataset Refresh Status Lookup"
description: "Checks the last refresh status for a Power BI dataset."
tags:
- analytics
- power-bi
- reporting
capability:
exposes:
- type: mcp
namespace: bi
port: 8080
tools:
- name: get-dataset-refresh-status
description: "Retrieve the last refresh status for a Power BI dataset."
inputParameters:
- name: dataset_id
in: body
type: string
description: "The Power BI dataset ID."
call: "powerbi.get-refresh-history"
with:
dataset_id: "{{dataset_id}}"
outputParameters:
- name: status
type: string
mapping: "$.value[0].status"
- name: end_time
type: string
mapping: "$.value[0].endTime"
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: dataset-refreshes
path: "/datasets/{{dataset_id}}/refreshes?$top=1"
inputParameters:
- name: dataset_id
in: path
operations:
- name: get-refresh-history
method: GET
Triggers a Power BI dataset refresh, validates data completeness from Snowflake, and sends a dashboard-ready notification to executives via email.
naftiko: "0.5"
info:
label: "Power BI Executive Dashboard Refresh Orchestrator"
description: "Triggers a Power BI dataset refresh, validates data completeness from Snowflake, and sends a dashboard-ready notification to executives via email."
tags:
- analytics
- power-bi
- snowflake
- email
capability:
exposes:
- type: mcp
namespace: exec-dashboard
port: 8080
tools:
- name: refresh-executive-dashboard
description: "Refresh Power BI executive dashboard, validate Snowflake data, and notify executives."
inputParameters:
- name: dataset_id
in: body
type: string
description: "Power BI dataset ID."
steps:
- name: refresh-dataset
type: call
call: "powerbi.trigger-refresh"
with:
dataset_id: "{{dataset_id}}"
- name: validate-data
type: call
call: "snowflake.run-validation"
with:
dataset_id: "{{dataset_id}}"
- name: notify-execs
type: call
call: "email.send-message"
with:
to: "executives@broadcom.com"
subject: "Executive Dashboard Updated"
body: "Dashboard refreshed. Data validation: {{validate-data.status}}"
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: dataset_id
in: path
operations:
- name: trigger-refresh
method: POST
- type: http
namespace: snowflake
baseUri: "https://broadcom.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-validation
method: POST
- type: http
namespace: email
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.graph_token"
resources:
- name: mail
path: "/me/sendMail"
operations:
- name: send-message
method: POST
Notifies customers of product EOL by pulling affected accounts from Salesforce, updating SAP material status, and alerting sales via Teams.
naftiko: "0.5"
info:
label: "Product End-of-Life Notification Orchestrator"
description: "Notifies customers of product EOL by pulling affected accounts from Salesforce, updating SAP material status, and alerting sales via Teams."
tags:
- product-lifecycle
- salesforce
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: product-lifecycle
port: 8080
tools:
- name: process-eol
description: "Orchestrate product EOL notification across Salesforce, SAP, and Teams."
inputParameters:
- name: product_id
in: body
type: string
description: "The product ID being discontinued."
steps:
- name: get-accounts
type: call
call: "salesforce.query"
with:
soql: "SELECT Name FROM Account WHERE Product__c = '{{product_id}}'"
- name: update-sap
type: call
call: "sap.update-material"
with:
material: "{{product_id}}"
status: "EOL"
- name: notify-sales
type: call
call: "msteams.send-message"
with:
channel: "sales"
message: "EOL: {{product_id}}. Affected accounts: {{get-accounts.totalSize}}."
consumes:
- type: http
namespace: salesforce
baseUri: "https://broadcom.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: query
path: "/query"
operations:
- name: query
method: GET
- type: http
namespace: sap
baseUri: "https://broadcom-s4.sap.com/sap/opu/odata/sap/API_PRODUCT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: materials
path: "/A_Product"
operations:
- name: update-material
method: PATCH
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/sales/channels/general/messages"
operations:
- name: send-message
method: POST
Validates product launch readiness by checking Jira release blockers, verifying documentation in Confluence, and scheduling the launch announcement in Slack.
naftiko: "0.5"
info:
label: "Product Launch Readiness Orchestrator"
description: "Validates product launch readiness by checking Jira release blockers, verifying documentation in Confluence, and scheduling the launch announcement in Slack."
tags:
- product
- jira
- confluence
- slack
capability:
exposes:
- type: mcp
namespace: launch-readiness
port: 8080
tools:
- name: check-launch-readiness
description: "Validate product launch readiness by checking Jira blockers, Confluence docs, and scheduling Slack announcement."
inputParameters:
- name: product_name
in: body
type: string
description: "Product name."
- name: release_version
in: body
type: string
description: "Release version."
steps:
- name: check-blockers
type: call
call: "jira.search-issues"
with:
jql: "project={{product_name}} AND type=Bug AND priority=Blocker AND fixVersion={{release_version}}"
- name: verify-docs
type: call
call: "confluence.get-page"
with:
space_key: "{{product_name}}"
title: "Release Notes {{release_version}}"
- name: schedule-announcement
type: call
call: "slack.post-message"
with:
channel: "#product-launches"
text: "{{product_name}} v{{release_version}} launch readiness: {{check-blockers.total}} blockers remaining"
consumes:
- type: http
namespace: jira
baseUri: "https://broadcom.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: search
path: "/search"
operations:
- name: search-issues
method: GET
- type: http
namespace: confluence
baseUri: "https://broadcom.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: content
path: "/content"
operations:
- name: get-page
method: GET
- 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
Pulls software license usage from ServiceNow SAM, compares against entitlements, and generates a compliance report in Confluence.
naftiko: "0.5"
info:
label: "Quarterly License Compliance Audit Orchestrator"
description: "Pulls software license usage from ServiceNow SAM, compares against entitlements, and generates a compliance report in Confluence."
tags:
- compliance
- servicenow
- confluence
capability:
exposes:
- type: mcp
namespace: license-audit
port: 8080
tools:
- name: run-license-audit
description: "Run quarterly license compliance audit by pulling usage data from ServiceNow and publishing results to Confluence."
inputParameters:
- name: audit_quarter
in: body
type: string
description: "Fiscal quarter (e.g., Q1-2026)."
- name: space_key
in: body
type: string
description: "Confluence space key for audit reports."
steps:
- name: get-license-usage
type: call
call: "servicenow.get-sam-report"
with:
quarter: "{{audit_quarter}}"
- name: publish-report
type: call
call: "confluence.create-page"
with:
space_key: "{{space_key}}"
title: "License Compliance Audit - {{audit_quarter}}"
body: "Usage report: {{get-license-usage.summary}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://broadcom.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: sam
path: "/table/sam_sw_license"
operations:
- name: get-sam-report
method: GET
- type: http
namespace: confluence
baseUri: "https://broadcom.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
Initiates an OpenShift cluster upgrade, monitors progress via Datadog, and posts status updates to Microsoft Teams.
naftiko: "0.5"
info:
label: "Red Hat OpenShift Cluster Upgrade Orchestrator"
description: "Initiates an OpenShift cluster upgrade, monitors progress via Datadog, and posts status updates to Microsoft Teams."
tags:
- infrastructure
- openshift
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: cluster-upgrade
port: 8080
tools:
- name: upgrade-openshift-cluster
description: "Upgrade an OpenShift cluster, monitor via Datadog, and post status to Teams."
inputParameters:
- name: cluster_name
in: body
type: string
description: "OpenShift cluster name."
- name: target_version
in: body
type: string
description: "Target OpenShift version."
steps:
- name: initiate-upgrade
type: call
call: "openshift.start-upgrade"
with:
cluster: "{{cluster_name}}"
version: "{{target_version}}"
- name: check-health
type: call
call: "datadog.get-cluster-health"
with:
cluster: "{{cluster_name}}"
- name: post-status
type: call
call: "teams.post-message"
with:
channel: "Platform Ops"
text: "OpenShift cluster {{cluster_name}} upgrade to {{target_version}} initiated. Health: {{check-health.status}}"
consumes:
- type: http
namespace: openshift
baseUri: "https://api.openshift.broadcom.com"
authentication:
type: bearer
token: "$secrets.openshift_token"
resources:
- name: clusters
path: "/apis/config.openshift.io/v1/clusterversions"
operations:
- name: start-upgrade
method: PATCH
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: monitors
path: "/monitor"
operations:
- name: get-cluster-health
method: GET
- type: http
namespace: teams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.teams_token"
resources:
- name: messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
operations:
- name: post-message
method: POST
Retrieves account details from Salesforce including name, industry, and annual revenue.
naftiko: "0.5"
info:
label: "Salesforce Account Details Lookup"
description: "Retrieves account details from Salesforce including name, industry, and annual revenue."
tags:
- sales
- salesforce
- crm
capability:
exposes:
- type: mcp
namespace: crm
port: 8080
tools:
- name: get-account-details
description: "Look up a Salesforce account by ID."
inputParameters:
- name: account_id
in: body
type: string
description: "The Salesforce account ID."
call: "salesforce.get-account"
with:
account_id: "{{account_id}}"
outputParameters:
- name: name
type: string
mapping: "$.Name"
- name: industry
type: string
mapping: "$.Industry"
- name: annual_revenue
type: number
mapping: "$.AnnualRevenue"
consumes:
- type: http
namespace: salesforce
baseUri: "https://broadcom.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{account_id}}"
inputParameters:
- name: account_id
in: path
operations:
- name: get-account
method: GET
Fetches Salesforce opportunities with upcoming renewal dates for VMware and CA enterprise customers, and posts a renewal digest to the account team Slack channel.
naftiko: "0.5"
info:
label: "Salesforce Customer Renewal Opportunity Tracker"
description: "Fetches Salesforce opportunities with upcoming renewal dates for VMware and CA enterprise customers, and posts a renewal digest to the account team Slack channel."
tags:
- crm
- sales
- salesforce
- slack
- account-management
- renewal
capability:
exposes:
- type: mcp
namespace: crm-reporting
port: 8080
tools:
- name: digest-renewal-opportunities
description: "Given a Salesforce territory and number of days to look ahead, fetch all opportunities with renewal dates within that window, and post a renewal digest to the account team Slack channel. Use weekly for enterprise renewal pipeline management."
inputParameters:
- name: territory
in: body
type: string
description: "The Salesforce territory or region filter, e.g. 'AMER-Enterprise'."
- name: days_ahead
in: body
type: integer
description: "Number of days ahead to look for upcoming renewals."
steps:
- name: get-renewals
type: call
call: "salesforce.search-renewal-opps"
with:
territory: "{{territory}}"
days_ahead: "{{days_ahead}}"
- name: post-digest
type: call
call: "slack.post-message"
with:
channel: "sales-renewals"
text: "Renewal digest for {{territory}}: {{get-renewals.count}} opportunities renewing in the next {{days_ahead}} days. Total value: ${{get-renewals.total_value}}."
consumes:
- type: http
namespace: salesforce
baseUri: "https://broadcom.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: opportunities
path: "/sobjects/Opportunity"
operations:
- name: search-renewal-opps
method: GET
- 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
Routes Salesforce opportunities above threshold to deal desk for approval, creates a Slack approval thread, and updates the opportunity stage upon approval.
naftiko: "0.5"
info:
label: "Salesforce Deal Desk Approval Orchestrator"
description: "Routes Salesforce opportunities above threshold to deal desk for approval, creates a Slack approval thread, and updates the opportunity stage upon approval."
tags:
- sales
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: deal-desk
port: 8080
tools:
- name: process-deal-approval
description: "Route Salesforce opportunities to deal desk, create Slack approval threads, and update opportunity stage."
inputParameters:
- name: opportunity_id
in: body
type: string
description: "Salesforce opportunity ID."
steps:
- name: get-opportunity
type: call
call: "salesforce.get-opportunity"
with:
opportunity_id: "{{opportunity_id}}"
- name: request-approval
type: call
call: "slack.post-message"
with:
channel: "#deal-desk"
text: "Deal approval requested: {{get-opportunity.name}} - ${{get-opportunity.amount}}"
- name: update-stage
type: call
call: "salesforce.update-opportunity"
with:
opportunity_id: "{{opportunity_id}}"
stage: "Pending Approval"
consumes:
- type: http
namespace: salesforce
baseUri: "https://broadcom.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
- name: update-opportunity
method: PATCH
- 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
When a new Salesforce lead is created from a trade show or enterprise event, enriches the record with firmographic data from ZoomInfo and assigns it to the correct field sales representative.
naftiko: "0.5"
info:
label: "Salesforce New Lead Enrichment"
description: "When a new Salesforce lead is created from a trade show or enterprise event, enriches the record with firmographic data from ZoomInfo and assigns it to the correct field sales representative."
tags:
- crm
- sales
- salesforce
- zoominfo
- lead-management
capability:
exposes:
- type: mcp
namespace: lead-enrichment
port: 8080
tools:
- name: enrich-new-lead
description: "Given a Salesforce lead ID, retrieve the lead, look up company firmographics from ZoomInfo, update the Salesforce lead with enriched data, and assign to the correct enterprise sales representative. Use for leads from VMware Explore, RSA, or other enterprise events."
inputParameters:
- name: lead_id
in: body
type: string
description: "The Salesforce Lead ID (18-character)."
steps:
- name: get-lead
type: call
call: "salesforce.get-lead"
with:
lead_id: "{{lead_id}}"
- name: enrich-company
type: call
call: "zoominfo.search-company"
with:
name: "{{get-lead.Company}}"
domain: "{{get-lead.Website}}"
- name: update-lead
type: call
call: "salesforce-update.update-lead"
with:
lead_id: "{{lead_id}}"
NumberOfEmployees: "{{enrich-company.employeeCount}}"
AnnualRevenue: "{{enrich-company.revenue}}"
Industry: "{{enrich-company.industry}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://broadcom.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: leads
path: "/sobjects/Lead/{{lead_id}}"
inputParameters:
- name: lead_id
in: path
operations:
- name: get-lead
method: GET
- type: http
namespace: zoominfo
baseUri: "https://api.zoominfo.com/search"
authentication:
type: bearer
token: "$secrets.zoominfo_token"
resources:
- name: company-search
path: "/company"
operations:
- name: search-company
method: POST
- type: http
namespace: salesforce-update
baseUri: "https://broadcom.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: lead-update
path: "/sobjects/Lead/{{lead_id}}"
inputParameters:
- name: lead_id
in: path
operations:
- name: update-lead
method: PATCH
Updates a Salesforce enterprise software opportunity to the next stage and notifies the account team via Slack when a deal milestone is confirmed.
naftiko: "0.5"
info:
label: "Salesforce Opportunity Stage Advancement"
description: "Updates a Salesforce enterprise software opportunity to the next stage and notifies the account team via Slack when a deal milestone is confirmed."
tags:
- crm
- sales
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: crm-ops
port: 8080
tools:
- name: advance-opportunity-stage
description: "Given a Salesforce opportunity ID and new stage name, update the opportunity and post a Slack notification to the sales team. Use when a VMware, CA, or semiconductor customer deal progresses to a new stage."
inputParameters:
- name: opportunity_id
in: body
type: string
description: "The Salesforce Opportunity ID (18-character)."
- name: new_stage
in: body
type: string
description: "The new pipeline stage, e.g. 'Proposal/Price Quote', 'Negotiation/Review', 'Closed Won'."
steps:
- name: update-opp
type: call
call: "salesforce.update-opportunity"
with:
opportunity_id: "{{opportunity_id}}"
StageName: "{{new_stage}}"
- name: notify-team
type: call
call: "slack.post-message"
with:
channel: "sales-wins"
text: "Opportunity {{opportunity_id}} advanced to: {{new_stage}}."
consumes:
- type: http
namespace: salesforce
baseUri: "https://broadcom.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: update-opportunity
method: PATCH
- 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
Retrieves contract status and expiration date from SAP Ariba.
naftiko: "0.5"
info:
label: "SAP Ariba Contract Status Lookup"
description: "Retrieves contract status and expiration date from SAP Ariba."
tags:
- procurement
- sap
- contract-management
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: get-contract-status
description: "Look up a contract in SAP Ariba."
inputParameters:
- name: contract_id
in: body
type: string
description: "The SAP Ariba contract ID."
call: "ariba.get-contract"
with:
contract_id: "{{contract_id}}"
outputParameters:
- name: status
type: string
mapping: "$.Status"
- name: expiration_date
type: string
mapping: "$.ExpirationDate"
consumes:
- type: http
namespace: ariba
baseUri: "https://openapi.ariba.com/api/contract-compliance/v1"
authentication:
type: bearer
token: "$secrets.ariba_token"
resources:
- name: contracts
path: "/contracts/{{contract_id}}"
inputParameters:
- name: contract_id
in: path
operations:
- name: get-contract
method: GET
When a new supplier is approved for a Broadcom manufacturing or EMS partner relationship, creates their profile in SAP Ariba and notifies the supply chain team via Slack.
naftiko: "0.5"
info:
label: "SAP Ariba Supplier Onboarding"
description: "When a new supplier is approved for a Broadcom manufacturing or EMS partner relationship, creates their profile in SAP Ariba and notifies the supply chain team via Slack."
tags:
- procurement
- sap-ariba
- slack
- supplier-management
- supply-chain
capability:
exposes:
- type: mcp
namespace: procurement-ops
port: 8080
tools:
- name: onboard-supplier
description: "Given a supplier name, DUNS number, and commodity code, create the supplier profile in SAP Ariba, trigger the qualification workflow, and notify the Broadcom supply chain team in Slack. Use when a new semiconductor supply chain or EMS partner is approved."
inputParameters:
- name: supplier_name
in: body
type: string
description: "The legal name of the supplier."
- name: duns_number
in: body
type: string
description: "The Dun & Bradstreet DUNS number for the supplier."
- name: commodity_code
in: body
type: string
description: "The commodity code for supplier classification."
steps:
- name: create-supplier
type: call
call: "ariba.create-supplier"
with:
name: "{{supplier_name}}"
duns: "{{duns_number}}"
commodity: "{{commodity_code}}"
- name: trigger-qualification
type: call
call: "ariba-qual.trigger-survey"
with:
supplier_id: "{{create-supplier.id}}"
- name: notify-supply-chain
type: call
call: "slack.post-message"
with:
channel: "supply-chain-ops"
text: "Supplier {{supplier_name}} onboarded in Ariba (ID: {{create-supplier.id}}). Qualification survey triggered."
consumes:
- type: http
namespace: ariba
baseUri: "https://openapi.ariba.com/api/supplier-management/v1"
authentication:
type: bearer
token: "$secrets.ariba_token"
resources:
- name: suppliers
path: "/suppliers"
operations:
- name: create-supplier
method: POST
- type: http
namespace: ariba-qual
baseUri: "https://openapi.ariba.com/api/supplier-management/v1"
authentication:
type: bearer
token: "$secrets.ariba_token"
resources:
- name: qualification-surveys
path: "/suppliers/{{supplier_id}}/qualificationSurveys"
inputParameters:
- name: supplier_id
in: path
operations:
- name: trigger-survey
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
Retrieves current budget utilization from SAP, calculates reallocation recommendations, and submits an approval request via ServiceNow.
naftiko: "0.5"
info:
label: "SAP Budget Reallocation Orchestrator"
description: "Retrieves current budget utilization from SAP, calculates reallocation recommendations, and submits an approval request via ServiceNow."
tags:
- finance
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: budget-realloc
port: 8080
tools:
- name: reallocate-budget
description: "Analyze SAP budget utilization, generate reallocation recommendations, and submit ServiceNow approval."
inputParameters:
- name: cost_center
in: body
type: string
description: "SAP cost center code."
- name: fiscal_year
in: body
type: string
description: "Fiscal year."
steps:
- name: get-budget
type: call
call: "sap.get-budget-utilization"
with:
cost_center: "{{cost_center}}"
fiscal_year: "{{fiscal_year}}"
- name: submit-approval
type: call
call: "servicenow.create-request"
with:
short_description: "Budget reallocation for {{cost_center}} FY{{fiscal_year}}"
category: "finance"
consumes:
- type: http
namespace: sap
baseUri: "https://broadcom-s4.sap.com/sap/opu/odata/sap/FI_BUDGET_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: budget
path: "/A_BudgetUtilization(CostCenter='{{cost_center}}')"
inputParameters:
- name: cost_center
in: path
operations:
- name: get-budget-utilization
method: GET
- type: http
namespace: servicenow
baseUri: "https://broadcom.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
Queries SAP S/4HANA for budget and actuals data by cost center for a given period and posts a variance summary to the finance leadership Slack channel.
naftiko: "0.5"
info:
label: "SAP Budget vs Actuals Variance Report"
description: "Queries SAP S/4HANA for budget and actuals data by cost center for a given period and posts a variance summary to the finance leadership Slack channel."
tags:
- finance
- erp
- sap
- reporting
- budgeting
capability:
exposes:
- type: mcp
namespace: finance-reporting
port: 8080
tools:
- name: publish-budget-variance
description: "Given a SAP controlling area and fiscal period, retrieve cost center actuals vs. budget and post a variance summary to the finance Slack channel. Use monthly for budget reviews."
inputParameters:
- name: controlling_area
in: body
type: string
description: "The SAP controlling area code."
- name: fiscal_period
in: body
type: string
description: "The fiscal period in YYYYMM format, e.g. '202603'."
steps:
- name: get-actuals
type: call
call: "sap.get-cost-center-actuals"
with:
controlling_area: "{{controlling_area}}"
period: "{{fiscal_period}}"
- name: post-summary
type: call
call: "slack.post-message"
with:
channel: "finance-leadership"
text: "Budget variance for period {{fiscal_period}}: Actuals {{get-actuals.total_actual}}, Budget {{get-actuals.total_budget}}. Variance: {{get-actuals.variance_pct}}%."
consumes:
- type: http
namespace: sap
baseUri: "https://broadcom-s4.sap.com/sap/opu/odata/sap/FCO_PI_CONTROLLING_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: cost-center-actuals
path: "/CostCenterActualsSet"
operations:
- name: get-cost-center-actuals
method: GET
- 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
Retrieves the approval status and total of an expense report in SAP Concur.
naftiko: "0.5"
info:
label: "SAP Concur Expense Status Lookup"
description: "Retrieves the approval status and total of an expense report in SAP Concur."
tags:
- finance
- sap-concur
- expense-management
capability:
exposes:
- type: mcp
namespace: expense
port: 8080
tools:
- name: get-expense-status
description: "Look up expense report status in SAP Concur."
inputParameters:
- name: report_id
in: body
type: string
description: "The expense report ID."
call: "concur.get-expense-report"
with:
report_id: "{{report_id}}"
outputParameters:
- name: status
type: string
mapping: "$.ApprovalStatusName"
- name: total
type: number
mapping: "$.Total"
consumes:
- type: http
namespace: concur
baseUri: "https://us.api.concursolutions.com/api/v3.0"
authentication:
type: bearer
token: "$secrets.concur_token"
resources:
- name: expense-reports
path: "/expense/reports/{{report_id}}"
inputParameters:
- name: report_id
in: path
operations:
- name: get-expense-report
method: GET
Retrieves current stock levels for a material number from SAP S/4HANA inventory management.
naftiko: "0.5"
info:
label: "SAP Inventory Stock Level Lookup"
description: "Retrieves current stock levels for a material number from SAP S/4HANA inventory management."
tags:
- supply-chain
- sap
- inventory
capability:
exposes:
- type: mcp
namespace: inventory
port: 8080
tools:
- name: get-stock-level
description: "Look up current stock for a material in SAP."
inputParameters:
- name: material_number
in: body
type: string
description: "The SAP material number."
call: "sap.get-material-stock"
with:
material_number: "{{material_number}}"
outputParameters:
- name: available_qty
type: string
mapping: "$.d.AvailableQuantity"
- name: reserved_qty
type: string
mapping: "$.d.ReservedQuantity"
consumes:
- type: http
namespace: sap
baseUri: "https://broadcom-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: material-stock
path: "/A_MatlStkInAcctMod(Material='{{material_number}}')"
inputParameters:
- name: material_number
in: path
operations:
- name: get-material-stock
method: GET
Retrieves the bill of materials for a semiconductor component from SAP S/4HANA.
naftiko: "0.5"
info:
label: "SAP Material Bill of Materials Lookup"
description: "Retrieves the bill of materials for a semiconductor component from SAP S/4HANA."
tags:
- manufacturing
- sap
- product-lifecycle
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: get-material-bom
description: "Look up bill of materials for a SAP material."
inputParameters:
- name: material_number
in: body
type: string
description: "The SAP material number."
- name: plant
in: body
type: string
description: "The SAP plant code."
call: "sap.get-bom"
with:
material: "{{material_number}}"
plant: "{{plant}}"
outputParameters:
- name: components
type: array
mapping: "$.d.results[*].Component"
consumes:
- type: http
namespace: sap
baseUri: "https://broadcom-s4.sap.com/sap/opu/odata/sap/API_BILL_OF_MATERIAL_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: bom
path: "/MaterialBOMItem?$filter=Material eq '{{material}}' and Plant eq '{{plant}}'"
inputParameters:
- name: material
in: query
- name: plant
in: query
operations:
- name: get-bom
method: GET
Detects material shortages from SAP MRP, creates an urgent purchase requisition, and notifies procurement via Slack.
naftiko: "0.5"
info:
label: "SAP Material Shortage Alert Orchestrator"
description: "Detects material shortages from SAP MRP, creates an urgent purchase requisition, and notifies procurement via Slack."
tags:
- supply-chain
- sap
- slack
capability:
exposes:
- type: mcp
namespace: material-shortage
port: 8080
tools:
- name: handle-material-shortage
description: "Detect SAP material shortages, create purchase requisitions, and alert procurement."
inputParameters:
- name: plant_code
in: body
type: string
description: "SAP plant code."
- name: material_number
in: body
type: string
description: "SAP material number."
steps:
- name: check-mrp
type: call
call: "sap.get-mrp-results"
with:
plant: "{{plant_code}}"
material: "{{material_number}}"
- name: create-pr
type: call
call: "sap.create-purchase-req"
with:
material: "{{material_number}}"
plant: "{{plant_code}}"
urgency: "high"
- name: notify-procurement
type: call
call: "slack.post-message"
with:
channel: "#procurement"
text: "Material shortage: {{material_number}} at plant {{plant_code}}. PR created: {{create-pr.number}}"
consumes:
- type: http
namespace: sap
baseUri: "https://broadcom-s4.sap.com/sap/opu/odata/sap/MM_MRP_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: mrp
path: "/A_MRPResult"
operations:
- name: get-mrp-results
method: GET
- name: create-purchase-req
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
Looks up a SAP S/4HANA purchase order by number, returning header status, vendor name, total value, and currency.
naftiko: "0.5"
info:
label: "SAP Purchase Order Lookup"
description: "Looks up a SAP S/4HANA purchase order by number, returning header status, vendor name, total value, and currency."
tags:
- finance
- erp
- sap
- procurement
capability:
exposes:
- type: mcp
namespace: erp
port: 8080
tools:
- name: get-purchase-order
description: "Given a SAP purchase order number, retrieve the PO header including status, vendor, total amount, and currency. Use for procurement validation and AP invoice matching."
inputParameters:
- name: po_number
in: body
type: string
description: "The SAP purchase order number, e.g. '4500034567'."
call: "sap.get-po"
with:
po_number: "{{po_number}}"
outputParameters:
- name: status
type: string
mapping: "$.d.OverallStatus"
- name: vendor
type: string
mapping: "$.d.Supplier.CompanyName"
- name: total_amount
type: string
mapping: "$.d.TotalAmount"
- name: currency
type: string
mapping: "$.d.TransactionCurrency"
consumes:
- type: http
namespace: sap
baseUri: "https://broadcom-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: purchase-orders
path: "/A_PurchaseOrder('{{po_number}}')"
inputParameters:
- name: po_number
in: path
operations:
- name: get-po
method: GET
Retrieves the current status and delivery details for a SAP purchase order by PO number.
naftiko: "0.5"
info:
label: "SAP Purchase Order Status Lookup"
description: "Retrieves the current status and delivery details for a SAP purchase order by PO number."
tags:
- procurement
- sap
- erp
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: get-po-status
description: "Look up a SAP purchase order by number and return status, vendor, and delivery date."
inputParameters:
- name: po_number
in: body
type: string
description: "The SAP purchase order number."
call: "sap.get-po"
with:
po_number: "{{po_number}}"
outputParameters:
- name: status
type: string
mapping: "$.d.OverallStatus"
- name: vendor
type: string
mapping: "$.d.Supplier.CompanyName"
- name: delivery_date
type: string
mapping: "$.d.DeliveryDate"
consumes:
- type: http
namespace: sap
baseUri: "https://broadcom-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: purchase-orders
path: "/A_PurchaseOrder('{{po_number}}')"
inputParameters:
- name: po_number
in: path
operations:
- name: get-po
method: GET
Retrieves the payment status of a vendor invoice from SAP.
naftiko: "0.5"
info:
label: "SAP Vendor Invoice Status Lookup"
description: "Retrieves the payment status of a vendor invoice from SAP."
tags:
- finance
- sap
capability:
exposes:
- type: mcp
namespace: vendor-finance
port: 8080
tools:
- name: get-invoice-status
description: "Look up SAP vendor invoice payment status by invoice number."
inputParameters:
- name: invoice_number
in: body
type: string
description: "The SAP vendor invoice number."
call: "sap.get-invoice"
with:
invoice_number: "{{invoice_number}}"
outputParameters:
- name: payment_status
type: string
mapping: "$.d.PaymentStatus"
- name: amount
type: number
mapping: "$.d.InvoiceAmount"
consumes:
- type: http
namespace: sap
baseUri: "https://broadcom-s4.sap.com/sap/opu/odata/sap/FI_VENDOR_INVOICE_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: invoices
path: "/A_VendorInvoice('{{invoice_number}}')"
inputParameters:
- name: invoice_number
in: path
operations:
- name: get-invoice
method: GET
When a security incident is detected, collects logs from Splunk, captures affected host snapshots from VMware, and creates a forensics case in ServiceNow.
naftiko: "0.5"
info:
label: "Security Incident Forensics Orchestrator"
description: "When a security incident is detected, collects logs from Splunk, captures affected host snapshots from VMware, and creates a forensics case in ServiceNow."
tags:
- security
- splunk
- vmware
- servicenow
capability:
exposes:
- type: mcp
namespace: incident-forensics
port: 8080
tools:
- name: collect-forensics
description: "Collect forensic evidence by gathering Splunk logs, VMware snapshots, and creating a ServiceNow forensics case."
inputParameters:
- name: incident_id
in: body
type: string
description: "Security incident identifier."
- name: host_name
in: body
type: string
description: "Affected host name."
steps:
- name: collect-logs
type: call
call: "splunk.export-search"
with:
query: "host={{host_name}} incident={{incident_id}}"
- name: take-snapshot
type: call
call: "vmware.create-snapshot"
with:
vm_name: "{{host_name}}"
description: "Forensics snapshot for incident {{incident_id}}"
- name: create-case
type: call
call: "servicenow.create-incident"
with:
short_description: "Forensics case for incident {{incident_id}}"
category: "security"
consumes:
- type: http
namespace: splunk
baseUri: "https://splunk.broadcom.com:8089/services"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: search
path: "/search/jobs/export"
operations:
- name: export-search
method: POST
- type: http
namespace: vmware
baseUri: "https://vcenter.broadcom.com/api/vcenter"
authentication:
type: bearer
token: "$secrets.vcenter_token"
resources:
- name: snapshots
path: "/vm/{{vm_id}}/snapshots"
operations:
- name: create-snapshot
method: POST
- type: http
namespace: servicenow
baseUri: "https://broadcom.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
Tracks wafer yield by querying SAP production data, pulling yield analytics from Snowflake, and updating ServiceNow CMDB records.
naftiko: "0.5"
info:
label: "Semiconductor Wafer Yield Tracking Orchestrator"
description: "Tracks wafer yield by querying SAP production data, pulling yield analytics from Snowflake, and updating ServiceNow CMDB records."
tags:
- manufacturing
- sap
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: fab-ops
port: 8080
tools:
- name: track-wafer-yield
description: "Orchestrate wafer yield tracking across SAP, Snowflake, and ServiceNow."
inputParameters:
- name: lot_id
in: body
type: string
description: "The wafer lot identifier."
steps:
- name: get-production-data
type: call
call: "sap.get-production-order"
with:
lot_id: "{{lot_id}}"
- name: get-yield-analytics
type: call
call: "snowflake.execute-query"
with:
statement: "SELECT yield_pct, defect_count FROM fab_yield WHERE lot_id = '{{lot_id}}'"
- name: update-cmdb
type: call
call: "servicenow.update-ci"
with:
ci_name: "LOT-{{lot_id}}"
yield: "{{get-yield-analytics.yield_pct}}"
consumes:
- type: http
namespace: sap
baseUri: "https://broadcom-s4.sap.com/sap/opu/odata/sap/API_PRODUCTION_ORDER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: production-orders
path: "/A_ProductionOrder"
operations:
- name: get-production-order
method: GET
- type: http
namespace: snowflake
baseUri: "https://broadcom.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
baseUri: "https://broadcom.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: cmdb
path: "/table/cmdb_ci"
operations:
- name: update-ci
method: PATCH
Retrieves incident status, priority, and assignment group from ServiceNow by ticket number.
naftiko: "0.5"
info:
label: "ServiceNow Incident Status Lookup"
description: "Retrieves incident status, priority, and assignment group from ServiceNow by ticket number."
tags:
- itsm
- servicenow
- incident-management
capability:
exposes:
- type: mcp
namespace: itsm
port: 8080
tools:
- name: get-incident-status
description: "Look up a ServiceNow incident and return its current state and assignment."
inputParameters:
- name: incident_number
in: body
type: string
description: "The ServiceNow incident number."
call: "servicenow.get-incident"
with:
incident_number: "{{incident_number}}"
outputParameters:
- name: state
type: string
mapping: "$.result.state"
- name: priority
type: string
mapping: "$.result.priority"
- name: assignment_group
type: string
mapping: "$.result.assignment_group.display_value"
consumes:
- type: http
namespace: servicenow
baseUri: "https://broadcom.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident?sysparm_query=number={{incident_number}}"
inputParameters:
- name: incident_number
in: query
operations:
- name: get-incident
method: GET
When a high-priority ServiceNow incident is raised for a critical enterprise software or infrastructure system, fetches on-call information from PagerDuty, assigns the ticket, and posts to the operations Slack channel.
naftiko: "0.5"
info:
label: "ServiceNow Incident Triage and On-Call Routing"
description: "When a high-priority ServiceNow incident is raised for a critical enterprise software or infrastructure system, fetches on-call information from PagerDuty, assigns the ticket, and posts to the operations Slack channel."
tags:
- itsm
- incident-response
- servicenow
- pagerduty
- slack
capability:
exposes:
- type: mcp
namespace: itsm-ops
port: 8080
tools:
- name: triage-incident
description: "Given a ServiceNow incident number and priority, fetch incident details, get the on-call engineer from PagerDuty, assign the ticket, and alert the operations Slack channel. Use for P1/P2 incidents on VMware, CA, or semiconductor product infrastructure."
inputParameters:
- name: incident_number
in: body
type: string
description: "The ServiceNow incident number, e.g. 'INC0099887'."
- name: priority
in: body
type: string
description: "Incident priority: 1 (Critical), 2 (High)."
steps:
- name: get-incident
type: call
call: "servicenow.get-incident"
with:
number: "{{incident_number}}"
- name: get-oncall
type: call
call: "pagerduty.get-oncall-user"
with:
schedule_id: "$secrets.pagerduty_it_schedule_id"
- name: assign-incident
type: call
call: "servicenow-assign.update-incident"
with:
sys_id: "{{get-incident.sys_id}}"
assigned_to: "{{get-oncall.user_email}}"
- name: alert-ops
type: call
call: "slack.post-message"
with:
channel: "it-incidents"
text: "P{{priority}} {{incident_number}}: {{get-incident.short_description}} — assigned to {{get-oncall.user_name}}."
consumes:
- type: http
namespace: servicenow
baseUri: "https://broadcom.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: get-incident
method: GET
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.pagerduty_token"
placement: header
resources:
- name: oncalls
path: "/oncalls"
operations:
- name: get-oncall-user
method: GET
- type: http
namespace: servicenow-assign
baseUri: "https://broadcom.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incident-update
path: "/table/incident/{{sys_id}}"
inputParameters:
- name: sys_id
in: path
operations:
- name: update-incident
method: PATCH
- 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
When wafer inspection detects defects above threshold, logs details in SAP quality module, creates a Jira defect ticket, and notifies fab managers via Slack.
naftiko: "0.5"
info:
label: "Silicon Wafer Defect Escalation Orchestrator"
description: "When wafer inspection detects defects above threshold, logs details in SAP quality module, creates a Jira defect ticket, and notifies fab managers via Slack."
tags:
- manufacturing
- sap
- jira
- slack
capability:
exposes:
- type: mcp
namespace: wafer-quality
port: 8080
tools:
- name: escalate-wafer-defect
description: "Escalate wafer defect by logging in SAP, opening a Jira ticket, and alerting fab managers."
inputParameters:
- name: wafer_lot_id
in: body
type: string
description: "Wafer lot identifier."
- name: defect_count
in: body
type: number
description: "Number of defects detected."
steps:
- name: log-quality
type: call
call: "sap.create-quality-notification"
with:
lot_id: "{{wafer_lot_id}}"
defect_count: "{{defect_count}}"
- name: create-defect
type: call
call: "jira.create-issue"
with:
project: "FAB"
summary: "Wafer defect escalation for lot {{wafer_lot_id}}"
description: "Defect count: {{defect_count}}"
- name: alert-managers
type: call
call: "slack.post-message"
with:
channel: "#fab-alerts"
text: "Wafer lot {{wafer_lot_id}} has {{defect_count}} defects. Jira: {{create-defect.key}}"
consumes:
- type: http
namespace: sap
baseUri: "https://broadcom-s4.sap.com/sap/opu/odata/sap/QM_NOTIFICATION_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: notifications
path: "/A_QualityNotification"
operations:
- name: create-quality-notification
method: POST
- type: http
namespace: jira
baseUri: "https://broadcom.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: 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
Monitors Snowflake for stale or failed data pipeline runs supporting sales, finance, and product analytics, and creates Jira tasks for SLA breaches.
naftiko: "0.5"
info:
label: "Snowflake Data Pipeline Health Monitor"
description: "Monitors Snowflake for stale or failed data pipeline runs supporting sales, finance, and product analytics, and creates Jira tasks for SLA breaches."
tags:
- data
- analytics
- snowflake
- jira
- monitoring
- data-quality
capability:
exposes:
- type: mcp
namespace: data-ops
port: 8080
tools:
- name: check-pipeline-health
description: "Given a Snowflake pipeline name and SLA threshold in minutes, verify the pipeline completed within SLA and create a Jira task if breached. Use for monitoring sales, finance, and product analytics data pipelines."
inputParameters:
- name: pipeline_name
in: body
type: string
description: "The Snowflake task name, e.g. 'BROADCOM_REVENUE_DAILY_LOAD'."
- name: sla_minutes
in: body
type: integer
description: "Maximum allowed minutes since last successful pipeline run."
steps:
- name: check-run
type: call
call: "snowflake.query-task-history"
with:
task_name: "{{pipeline_name}}"
- name: create-task
type: call
call: "jira.create-issue"
with:
project_key: "DATA"
issuetype: "Task"
summary: "SLA breach: {{pipeline_name}} exceeded {{sla_minutes}} minutes"
description: "Pipeline: {{pipeline_name}}\nLast success: {{check-run.last_success_time}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://broadcom.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: task-history
path: "/databases/broadcom/schemas/monitoring/tasks/{{task_name}}/history"
inputParameters:
- name: task_name
in: path
operations:
- name: query-task-history
method: GET
- type: http
namespace: jira
baseUri: "https://broadcom.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Checks Snowflake task execution status, validates row counts against source systems, and creates a Jira ticket for any data discrepancies.
naftiko: "0.5"
info:
label: "Snowflake ETL Pipeline Health Orchestrator"
description: "Checks Snowflake task execution status, validates row counts against source systems, and creates a Jira ticket for any data discrepancies."
tags:
- data
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: etl-health
port: 8080
tools:
- name: check-etl-pipeline-health
description: "Check Snowflake ETL pipeline health, validate row counts, and create Jira tickets for discrepancies."
inputParameters:
- name: pipeline_name
in: body
type: string
description: "ETL pipeline name."
steps:
- name: get-task-status
type: call
call: "snowflake.get-task-history"
with:
pipeline: "{{pipeline_name}}"
- name: validate-counts
type: call
call: "snowflake.run-validation-query"
with:
pipeline: "{{pipeline_name}}"
- name: create-ticket
type: call
call: "jira.create-issue"
with:
project: "DATA"
summary: "ETL discrepancy in {{pipeline_name}}"
issue_type: "Bug"
consumes:
- type: http
namespace: snowflake
baseUri: "https://broadcom.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: get-task-history
method: POST
- name: run-validation-query
method: POST
- type: http
namespace: jira
baseUri: "https://broadcom.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Checks the execution status and row count of a Snowflake query by statement handle.
naftiko: "0.5"
info:
label: "Snowflake Query Execution Status Lookup"
description: "Checks the execution status and row count of a Snowflake query by statement handle."
tags:
- data
- snowflake
capability:
exposes:
- type: mcp
namespace: data-warehouse
port: 8080
tools:
- name: get-query-status
description: "Look up Snowflake query execution status by statement handle."
inputParameters:
- name: statement_handle
in: body
type: string
description: "Snowflake SQL statement handle."
call: "snowflake.get-statement"
with:
handle: "{{statement_handle}}"
outputParameters:
- name: status
type: string
mapping: "$.statementStatusUrl"
- name: row_count
type: number
mapping: "$.resultSetMetaData.numRows"
consumes:
- type: http
namespace: snowflake
baseUri: "https://broadcom.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements/{{handle}}"
inputParameters:
- name: handle
in: path
operations:
- name: get-statement
method: GET
Queries Snowflake for the current row count of a specified analytics table.
naftiko: "0.5"
info:
label: "Snowflake Table Row Count Lookup"
description: "Queries Snowflake for the current row count of a specified analytics table."
tags:
- data-engineering
- snowflake
- analytics
capability:
exposes:
- type: mcp
namespace: data-ops
port: 8080
tools:
- name: get-table-row-count
description: "Execute a count query against a Snowflake table."
inputParameters:
- name: table_name
in: body
type: string
description: "Fully qualified Snowflake table name."
call: "snowflake.execute-query"
with:
statement: "SELECT COUNT(*) as row_count FROM {{table_name}}"
outputParameters:
- name: row_count
type: number
mapping: "$.data[0][0]"
consumes:
- type: http
namespace: snowflake
baseUri: "https://broadcom.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-query
method: POST
When SolarWinds detects a network outage, creates a ServiceNow major incident, notifies the NOC via Slack, and initiates automated diagnostics.
naftiko: "0.5"
info:
label: "SolarWinds Network Outage Response Orchestrator"
description: "When SolarWinds detects a network outage, creates a ServiceNow major incident, notifies the NOC via Slack, and initiates automated diagnostics."
tags:
- network
- solarwinds
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: network-outage
port: 8080
tools:
- name: respond-to-outage
description: "Respond to SolarWinds network outage by creating ServiceNow incident, alerting NOC, and running diagnostics."
inputParameters:
- name: node_name
in: body
type: string
description: "SolarWinds node name."
- name: alert_severity
in: body
type: string
description: "Alert severity level."
steps:
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Network outage: {{node_name}}"
urgency: "1"
impact: "1"
- name: notify-noc
type: call
call: "slack.post-message"
with:
channel: "#noc-alerts"
text: "Network outage detected: {{node_name}} ({{alert_severity}}). Incident: {{create-incident.number}}"
- name: run-diagnostics
type: call
call: "solarwinds.run-diagnostics"
with:
node_name: "{{node_name}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://broadcom.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
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: solarwinds
baseUri: "https://solarwinds.broadcom.com/api/v2"
authentication:
type: basic
username: "$secrets.solarwinds_user"
password: "$secrets.solarwinds_password"
resources:
- name: diagnostics
path: "/nodes/{{node_name}}/diagnostics"
inputParameters:
- name: node_name
in: path
operations:
- name: run-diagnostics
method: POST
Queries Splunk for recent security events matching a given search query.
naftiko: "0.5"
info:
label: "Splunk Security Event Lookup"
description: "Queries Splunk for recent security events matching a given search query."
tags:
- security
- splunk
capability:
exposes:
- type: mcp
namespace: security-events
port: 8080
tools:
- name: search-security-events
description: "Search Splunk for security events by query string."
inputParameters:
- name: search_query
in: body
type: string
description: "Splunk search query string."
call: "splunk.search-events"
with:
query: "{{search_query}}"
outputParameters:
- name: event_count
type: number
mapping: "$.results.length"
- name: events
type: string
mapping: "$.results"
consumes:
- type: http
namespace: splunk
baseUri: "https://splunk.broadcom.com:8089/services"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: search
path: "/search/jobs/export"
inputParameters:
- name: query
in: query
operations:
- name: search-events
method: GET
Checks SSL certificate expiry dates, initiates renewal requests, and updates the certificate inventory in ServiceNow CMDB.
naftiko: "0.5"
info:
label: "SSL Certificate Renewal Orchestrator"
description: "Checks SSL certificate expiry dates, initiates renewal requests, and updates the certificate inventory in ServiceNow CMDB."
tags:
- security
- servicenow
capability:
exposes:
- type: mcp
namespace: cert-renewal
port: 8080
tools:
- name: renew-ssl-certificates
description: "Check expiring SSL certificates, initiate renewal, and update ServiceNow CMDB."
inputParameters:
- name: domain
in: body
type: string
description: "Domain name to check."
- name: days_before_expiry
in: body
type: number
description: "Days before expiry threshold."
steps:
- name: check-cert
type: call
call: "cert-mgmt.check-expiry"
with:
domain: "{{domain}}"
threshold_days: "{{days_before_expiry}}"
- name: request-renewal
type: call
call: "cert-mgmt.request-renewal"
with:
domain: "{{domain}}"
- name: update-cmdb
type: call
call: "servicenow.update-ci"
with:
name: "{{domain}}"
renewal_status: "pending"
consumes:
- type: http
namespace: cert-mgmt
baseUri: "https://cert-manager.broadcom.com/api/v1"
authentication:
type: bearer
token: "$secrets.cert_mgmt_token"
resources:
- name: certificates
path: "/certificates"
operations:
- name: check-expiry
method: GET
- name: request-renewal
method: POST
- type: http
namespace: servicenow
baseUri: "https://broadcom.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: cmdb
path: "/table/cmdb_ci_certificate"
operations:
- name: update-ci
method: PATCH
Handles supply chain disruptions by querying SAP for affected POs, identifying impacted Salesforce accounts, and alerting supply chain ops via Teams.
naftiko: "0.5"
info:
label: "Supply Chain Disruption Alert Orchestrator"
description: "Handles supply chain disruptions by querying SAP for affected POs, identifying impacted Salesforce accounts, and alerting supply chain ops via Teams."
tags:
- supply-chain
- sap
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: supply-chain
port: 8080
tools:
- name: handle-disruption
description: "Orchestrate supply chain disruption response across SAP, Salesforce, and Teams."
inputParameters:
- name: supplier_id
in: body
type: string
description: "The SAP supplier ID."
- name: disruption_type
in: body
type: string
description: "Type of disruption."
steps:
- name: get-affected-pos
type: call
call: "sap.search-purchase-orders"
with:
supplier: "{{supplier_id}}"
- name: get-impacted-accounts
type: call
call: "salesforce.query"
with:
soql: "SELECT Id, Name FROM Account WHERE Supplier_ID__c = '{{supplier_id}}'"
- name: send-alert
type: call
call: "msteams.send-message"
with:
channel: "supply-chain-ops"
message: "Disruption: {{disruption_type}} from {{supplier_id}}. POs: {{get-affected-pos.count}}, Accounts: {{get-impacted-accounts.totalSize}}."
consumes:
- type: http
namespace: sap
baseUri: "https://broadcom-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: purchase-orders
path: "/A_PurchaseOrder?$filter=Supplier eq '{{supplier}}'"
inputParameters:
- name: supplier
in: query
operations:
- name: search-purchase-orders
method: GET
- type: http
namespace: salesforce
baseUri: "https://broadcom.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: query
path: "/query"
operations:
- name: query
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/supply-chain-ops/channels/general/messages"
operations:
- name: send-message
method: POST
Creates a new Terraform Cloud workspace for a project, links the GitHub repository, and notifies the infrastructure team via Slack.
naftiko: "0.5"
info:
label: "Terraform Cloud Workspace Provisioner"
description: "Creates a new Terraform Cloud workspace for a project, links the GitHub repository, and notifies the infrastructure team via Slack."
tags:
- cloud
- infrastructure
- terraform
- github
- slack
capability:
exposes:
- type: mcp
namespace: infra-provisioning
port: 8080
tools:
- name: provision-terraform-workspace
description: "Given a workspace name, GitHub repository, and Terraform organization, create a Terraform Cloud workspace linked to the repository and notify the infrastructure team in Slack. Use when a new VMware Cloud, semiconductor test, or enterprise software project needs cloud infrastructure."
inputParameters:
- name: workspace_name
in: body
type: string
description: "The desired Terraform Cloud workspace name, e.g. 'broadcom-vcenter-prod'."
- name: github_repo
in: body
type: string
description: "The GitHub repository to link, e.g. 'broadcom/vsphere-automation'."
- name: tf_org
in: body
type: string
description: "The Terraform Cloud organization name."
steps:
- name: create-workspace
type: call
call: "terraform.create-workspace"
with:
name: "{{workspace_name}}"
organization: "{{tf_org}}"
- name: link-vcs
type: call
call: "terraform-vcs.configure-vcs"
with:
workspace_id: "{{create-workspace.id}}"
repo: "{{github_repo}}"
- name: notify-infra
type: call
call: "slack.post-message"
with:
channel: "infrastructure"
text: "Terraform workspace {{workspace_name}} created and linked to {{github_repo}}. ID: {{create-workspace.id}}."
consumes:
- type: http
namespace: terraform
baseUri: "https://app.terraform.io/api/v2"
authentication:
type: bearer
token: "$secrets.terraform_token"
resources:
- name: workspaces
path: "/organizations/{{organization}}/workspaces"
inputParameters:
- name: organization
in: path
operations:
- name: create-workspace
method: POST
- type: http
namespace: terraform-vcs
baseUri: "https://app.terraform.io/api/v2"
authentication:
type: bearer
token: "$secrets.terraform_token"
resources:
- name: workspace-vcs
path: "/workspaces/{{workspace_id}}/relationships/vars"
inputParameters:
- name: workspace_id
in: path
operations:
- name: configure-vcs
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
Retrieves the current state version and resource count for a Terraform Cloud workspace.
naftiko: "0.5"
info:
label: "Terraform Workspace State Lookup"
description: "Retrieves the current state version and resource count for a Terraform Cloud workspace."
tags:
- infrastructure
- terraform
capability:
exposes:
- type: mcp
namespace: iac-state
port: 8080
tools:
- name: get-workspace-state
description: "Look up Terraform Cloud workspace state by workspace ID."
inputParameters:
- name: workspace_id
in: body
type: string
description: "Terraform Cloud workspace ID."
call: "terraform.get-state"
with:
workspace_id: "{{workspace_id}}"
outputParameters:
- name: state_version
type: string
mapping: "$.data.attributes.serial"
- name: resource_count
type: number
mapping: "$.data.attributes.resource-count"
consumes:
- type: http
namespace: terraform
baseUri: "https://app.terraform.io/api/v2"
authentication:
type: bearer
token: "$secrets.terraform_token"
resources:
- name: state-versions
path: "/workspaces/{{workspace_id}}/current-state-version"
inputParameters:
- name: workspace_id
in: path
operations:
- name: get-state
method: GET
Reviews vendor compliance by checking SAP Ariba certifications, querying delivery metrics in Snowflake, and publishing a report to Confluence.
naftiko: "0.5"
info:
label: "Vendor Compliance Review Orchestrator"
description: "Reviews vendor compliance by checking SAP Ariba certifications, querying delivery metrics in Snowflake, and publishing a report to Confluence."
tags:
- supply-chain
- procurement
- sap
- snowflake
- confluence
capability:
exposes:
- type: mcp
namespace: vendor-compliance
port: 8080
tools:
- name: review-vendor-compliance
description: "Orchestrate vendor compliance review across SAP Ariba, Snowflake, and Confluence."
inputParameters:
- name: vendor_id
in: body
type: string
description: "The vendor ID."
steps:
- name: get-certifications
type: call
call: "ariba.get-supplier-profile"
with:
vendor_id: "{{vendor_id}}"
- name: get-metrics
type: call
call: "snowflake.execute-query"
with:
statement: "SELECT on_time_rate, quality_rate FROM vendor_performance WHERE vendor_id = '{{vendor_id}}'"
- name: publish-report
type: call
call: "confluence.create-page"
with:
space: "PROCUREMENT"
title: "Vendor Compliance - {{vendor_id}}"
body: "On-time: {{get-metrics.on_time_rate}}%, Quality: {{get-metrics.quality_rate}}%."
consumes:
- type: http
namespace: ariba
baseUri: "https://openapi.ariba.com/api/supplier-management/v1"
authentication:
type: bearer
token: "$secrets.ariba_token"
resources:
- name: suppliers
path: "/suppliers/{{vendor_id}}"
inputParameters:
- name: vendor_id
in: path
operations:
- name: get-supplier-profile
method: GET
- type: http
namespace: snowflake
baseUri: "https://broadcom.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: confluence
baseUri: "https://broadcom.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: pages
path: "/content"
operations:
- name: create-page
method: POST
Pulls vendor compliance data from SAP Ariba, runs a risk scoring model, and publishes assessment results to Confluence.
naftiko: "0.5"
info:
label: "Vendor Risk Assessment Orchestrator"
description: "Pulls vendor compliance data from SAP Ariba, runs a risk scoring model, and publishes assessment results to Confluence."
tags:
- procurement
- sap-ariba
- confluence
capability:
exposes:
- type: mcp
namespace: vendor-risk
port: 8080
tools:
- name: assess-vendor-risk
description: "Assess vendor risk by pulling SAP Ariba data, scoring risk, and publishing results to Confluence."
inputParameters:
- name: vendor_id
in: body
type: string
description: "SAP Ariba vendor ID."
- name: assessment_year
in: body
type: string
description: "Assessment year."
steps:
- name: get-vendor-data
type: call
call: "ariba.get-vendor-profile"
with:
vendor_id: "{{vendor_id}}"
- name: score-risk
type: call
call: "risk-engine.calculate-score"
with:
vendor_id: "{{vendor_id}}"
compliance_data: "{{get-vendor-data.compliance_status}}"
- name: publish-assessment
type: call
call: "confluence.create-page"
with:
space_key: "VRISK"
title: "Vendor Risk Assessment - {{get-vendor-data.vendor_name}} - {{assessment_year}}"
body: "Risk score: {{score-risk.score}}"
consumes:
- type: http
namespace: ariba
baseUri: "https://openapi.ariba.com/api/supplier-management/v1"
authentication:
type: bearer
token: "$secrets.ariba_token"
resources:
- name: vendors
path: "/suppliers/{{vendor_id}}"
inputParameters:
- name: vendor_id
in: path
operations:
- name: get-vendor-profile
method: GET
- type: http
namespace: risk-engine
baseUri: "https://risk-api.broadcom.com/v1"
authentication:
type: bearer
token: "$secrets.risk_engine_token"
resources:
- name: scoring
path: "/score"
operations:
- name: calculate-score
method: POST
- type: http
namespace: confluence
baseUri: "https://broadcom.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
Retrieves the power state and resource allocation for a VMware virtual machine.
naftiko: "0.5"
info:
label: "VMware vCenter VM Status Lookup"
description: "Retrieves the power state and resource allocation for a VMware virtual machine."
tags:
- infrastructure
- vmware
capability:
exposes:
- type: mcp
namespace: vmware-infra
port: 8080
tools:
- name: get-vm-status
description: "Look up VM power state and CPU/memory allocation by VM name."
inputParameters:
- name: vm_name
in: body
type: string
description: "The VMware virtual machine name."
call: "vcenter.get-vm"
with:
vm_name: "{{vm_name}}"
outputParameters:
- name: power_state
type: string
mapping: "$.value[0].power_state"
- name: cpu_count
type: number
mapping: "$.value[0].cpu_count"
consumes:
- type: http
namespace: vcenter
baseUri: "https://vcenter.broadcom.com/api/vcenter"
authentication:
type: bearer
token: "$secrets.vcenter_token"
resources:
- name: vms
path: "/vm?filter.names={{vm_name}}"
inputParameters:
- name: vm_name
in: query
operations:
- name: get-vm
method: GET
Decommissions a VMware VM by powering it off, archiving disks to S3, removing DNS records from Cloudflare, and closing the ServiceNow CI record.
naftiko: "0.5"
info:
label: "VMware VM Lifecycle Decommission Orchestrator"
description: "Decommissions a VMware VM by powering it off, archiving disks to S3, removing DNS records from Cloudflare, and closing the ServiceNow CI record."
tags:
- infrastructure
- vmware
- aws-s3
- cloudflare
- servicenow
capability:
exposes:
- type: mcp
namespace: vm-decommission
port: 8080
tools:
- name: decommission-vm
description: "Decommission a VMware VM by powering off, archiving disks to S3, removing DNS, and closing ServiceNow CI."
inputParameters:
- name: vm_name
in: body
type: string
description: "VMware virtual machine name."
steps:
- name: power-off
type: call
call: "vmware.power-off-vm"
with:
vm_name: "{{vm_name}}"
- name: archive-disks
type: call
call: "s3.put-object"
with:
bucket: "broadcom-vm-archives"
key: "{{vm_name}}/disk-backup.vmdk"
- name: remove-dns
type: call
call: "cloudflare.delete-record"
with:
hostname: "{{vm_name}}.broadcom.com"
- name: close-ci
type: call
call: "servicenow.update-ci"
with:
name: "{{vm_name}}"
status: "retired"
consumes:
- type: http
namespace: vmware
baseUri: "https://vcenter.broadcom.com/api/vcenter"
authentication:
type: bearer
token: "$secrets.vcenter_token"
resources:
- name: vms
path: "/vm/{{vm_id}}/power"
operations:
- name: power-off-vm
method: POST
- type: http
namespace: s3
baseUri: "https://s3.amazonaws.com"
authentication:
type: bearer
token: "$secrets.aws_s3_token"
resources:
- name: objects
path: "/{{bucket}}/{{key}}"
operations:
- name: put-object
method: PUT
- type: http
namespace: cloudflare
baseUri: "https://api.cloudflare.com/client/v4"
authentication:
type: bearer
token: "$secrets.cloudflare_token"
resources:
- name: dns
path: "/zones/{{zone_id}}/dns_records"
operations:
- name: delete-record
method: DELETE
- type: http
namespace: servicenow
baseUri: "https://broadcom.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: cmdb
path: "/table/cmdb_ci_server"
operations:
- name: update-ci
method: PATCH
Retrieves compensation band details for a job profile from Workday.
naftiko: "0.5"
info:
label: "Workday Compensation Band Lookup"
description: "Retrieves compensation band details for a job profile from Workday."
tags:
- hr
- workday
capability:
exposes:
- type: mcp
namespace: hr-compensation
port: 8080
tools:
- name: get-compensation-band
description: "Look up Workday compensation band by job profile ID."
inputParameters:
- name: job_profile_id
in: body
type: string
description: "Workday job profile ID."
call: "workday.get-comp-band"
with:
job_profile_id: "{{job_profile_id}}"
outputParameters:
- name: min_salary
type: number
mapping: "$.compensation.minimum"
- name: max_salary
type: number
mapping: "$.compensation.maximum"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: compensation
path: "/broadcom/compensationBands/{{job_profile_id}}"
inputParameters:
- name: job_profile_id
in: path
operations:
- name: get-comp-band
method: GET
Retrieves employee details from Workday including name, title, department, and manager.
naftiko: "0.5"
info:
label: "Workday Employee Directory Lookup"
description: "Retrieves employee details from Workday including name, title, department, and manager."
tags:
- hr
- workday
- directory
capability:
exposes:
- type: mcp
namespace: hr-directory
port: 8080
tools:
- name: get-employee-details
description: "Look up a Workday employee by worker ID and return their profile information."
inputParameters:
- name: worker_id
in: body
type: string
description: "The Workday worker ID."
call: "workday.get-worker"
with:
worker_id: "{{worker_id}}"
outputParameters:
- name: full_name
type: string
mapping: "$.worker.descriptor"
- name: title
type: string
mapping: "$.worker.businessTitle"
- name: department
type: string
mapping: "$.worker.supervisoryOrganization.descriptor"
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: "/broadcom/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
Pulls current headcount from Workday, compares against hiring plan targets, and publishes a gap analysis to Confluence.
naftiko: "0.5"
info:
label: "Workday Headcount Forecast Orchestrator"
description: "Pulls current headcount from Workday, compares against hiring plan targets, and publishes a gap analysis to Confluence."
tags:
- hr
- workday
- confluence
capability:
exposes:
- type: mcp
namespace: headcount-forecast
port: 8080
tools:
- name: generate-headcount-forecast
description: "Generate headcount forecast by comparing Workday actuals to hiring plan and publishing to Confluence."
inputParameters:
- name: department
in: body
type: string
description: "Department name."
- name: fiscal_quarter
in: body
type: string
description: "Fiscal quarter."
steps:
- name: get-headcount
type: call
call: "workday.get-headcount"
with:
department: "{{department}}"
- name: publish-analysis
type: call
call: "confluence.create-page"
with:
space_key: "HR"
title: "Headcount Forecast - {{department}} - {{fiscal_quarter}}"
body: "Current headcount: {{get-headcount.total}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: headcount
path: "/broadcom/headcountReport"
operations:
- name: get-headcount
method: GET
- type: http
namespace: confluence
baseUri: "https://broadcom.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
Returns current headcount by department and cost center from Workday for finance and HR reporting.
naftiko: "0.5"
info:
label: "Workday Headcount Snapshot"
description: "Returns current headcount by department and cost center from Workday for finance and HR reporting."
tags:
- hr
- finance
- workday
- reporting
- headcount
capability:
exposes:
- type: mcp
namespace: hr-reporting
port: 8080
tools:
- name: get-headcount-snapshot
description: "Returns all active Broadcom employees grouped by department and cost center from Workday. Use for headcount planning, finance budgeting, and workforce analytics."
call: "workday.list-workers"
outputParameters:
- name: employees
type: array
mapping: "$.data[*]"
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: "/broadcom/workers"
operations:
- name: list-workers
method: GET
Initiates a performance review cycle in Workday for a Broadcom division, creates a Jira tracking epic, and notifies HR business partners via Slack.
naftiko: "0.5"
info:
label: "Workday Performance Review Cycle Kickoff"
description: "Initiates a performance review cycle in Workday for a Broadcom division, creates a Jira tracking epic, and notifies HR business partners via Slack."
tags:
- hr
- performance-management
- workday
- jira
- slack
capability:
exposes:
- type: mcp
namespace: hr-performance
port: 8080
tools:
- name: kickoff-review-cycle
description: "Given a Workday division ID and review period, initiate the performance review process, create a Jira epic to track progress, and notify HR BPs in Slack. Use at the start of each semi-annual performance review cycle."
inputParameters:
- name: division_id
in: body
type: string
description: "The Workday division ID, e.g. 'DIV-VMWARE-CLOUD' or 'DIV-SEMICONDUCTOR'."
- name: review_period
in: body
type: string
description: "The review period label, e.g. 'H1-2026'."
steps:
- name: initiate-review
type: call
call: "workday.create-review-process"
with:
division_id: "{{division_id}}"
period: "{{review_period}}"
- name: create-epic
type: call
call: "jira.create-issue"
with:
project_key: "HR"
issuetype: "Epic"
summary: "Performance Review {{review_period}} — {{division_id}}"
- name: notify-hrbp
type: call
call: "slack.post-message"
with:
channel: "hrbp-team"
text: "Performance review {{review_period}} initiated for {{division_id}}. Jira epic: {{create-epic.key}}."
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: review-processes
path: "/broadcom/performanceManagement/reviewProcesses"
operations:
- name: create-review-process
method: POST
- type: http
namespace: jira
baseUri: "https://broadcom.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: 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
Retrieves cloud recording details for a Zoom meeting.
naftiko: "0.5"
info:
label: "Zoom Meeting Recording Lookup"
description: "Retrieves cloud recording details for a Zoom meeting."
tags:
- collaboration
- zoom
- meetings
capability:
exposes:
- type: mcp
namespace: collaboration
port: 8080
tools:
- name: get-meeting-recordings
description: "Look up cloud recordings for a Zoom meeting."
inputParameters:
- name: meeting_id
in: body
type: string
description: "The Zoom meeting ID."
call: "zoom.get-recordings"
with:
meeting_id: "{{meeting_id}}"
outputParameters:
- name: recording_count
type: number
mapping: "$.recording_count"
consumes:
- type: http
namespace: zoom
baseUri: "https://api.zoom.us/v2"
authentication:
type: bearer
token: "$secrets.zoom_token"
resources:
- name: recordings
path: "/meetings/{{meeting_id}}/recordings"
inputParameters:
- name: meeting_id
in: path
operations:
- name: get-recordings
method: GET
After a Zoom webinar ends, retrieves registrant data, creates leads in Salesforce, and triggers a follow-up email campaign via HubSpot.
naftiko: "0.5"
info:
label: "Zoom Webinar Lead Capture Orchestrator"
description: "After a Zoom webinar ends, retrieves registrant data, creates leads in Salesforce, and triggers a follow-up email campaign via HubSpot."
tags:
- marketing
- zoom
- salesforce
- hubspot
capability:
exposes:
- type: mcp
namespace: webinar-leads
port: 8080
tools:
- name: capture-webinar-leads
description: "Capture Zoom webinar leads, create Salesforce records, and trigger HubSpot follow-up."
inputParameters:
- name: webinar_id
in: body
type: string
description: "Zoom webinar ID."
steps:
- name: get-registrants
type: call
call: "zoom.get-webinar-registrants"
with:
webinar_id: "{{webinar_id}}"
- name: create-leads
type: call
call: "salesforce.create-lead"
with:
source: "Zoom Webinar {{webinar_id}}"
- name: trigger-campaign
type: call
call: "hubspot.enroll-contacts"
with:
workflow_id: "webinar-followup"
webinar_id: "{{webinar_id}}"
consumes:
- type: http
namespace: zoom
baseUri: "https://api.zoom.us/v2"
authentication:
type: bearer
token: "$secrets.zoom_token"
resources:
- name: webinars
path: "/webinars/{{webinar_id}}/registrants"
inputParameters:
- name: webinar_id
in: path
operations:
- name: get-webinar-registrants
method: GET
- type: http
namespace: salesforce
baseUri: "https://broadcom.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: hubspot
baseUri: "https://api.hubapi.com"
authentication:
type: bearer
token: "$secrets.hubspot_token"
resources:
- name: workflows
path: "/automation/v4/workflows"
operations:
- name: enroll-contacts
method: POST