BAE Systems Capabilities
Naftiko 0.5 capability definitions for BAE Systems - 100 capabilities showing integration workflows and service orchestrations.
Collects access entitlements, routes for review, revokes expired access, and creates audit records.
naftiko: "0.5"
info:
label: "Access Review Certification Pipeline"
description: "Collects access entitlements, routes for review, revokes expired access, and creates audit records."
tags:
- security
- okta
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: access_review_certification_pipeline
description: "Orchestrate access review certification pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-okta
type: call
call: "okta.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-okta.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Access Review Certification Pipeline step 3 complete."
consumes:
- type: http
namespace: okta
baseUri: "https://bae-systems.okta.com/api/v1"
authentication:
type: apiKey
key: "$secrets.okta_api_token"
header: "Authorization"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: okta-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://bae-systems.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Checks the execution status of an Ansible Automation Platform job template run. Returns job status, host summary, and elapsed time.
naftiko: "0.5"
info:
label: "Ansible Playbook Execution Status"
description: "Checks the execution status of an Ansible Automation Platform job template run. Returns job status, host summary, and elapsed time."
tags:
- automation
- configuration-management
- ansible-automation-platform
capability:
exposes:
- type: mcp
namespace: ansible-jobs
port: 8080
tools:
- name: get-job-status
description: "Get the status of an Ansible Automation Platform job by ID. Returns status, elapsed time, and host counts."
inputParameters:
- name: job_id
in: body
type: string
description: "The Ansible Automation Platform job ID."
call: "ansible.get-job"
with:
job_id: "{{job_id}}"
outputParameters:
- name: status
type: string
mapping: "$.status"
- name: elapsed
type: number
mapping: "$.elapsed"
- name: host_status_counts
type: object
mapping: "$.host_status_counts"
consumes:
- type: http
namespace: ansible
baseUri: "https://ansible-tower.baesystems.com/api/v2"
authentication:
type: bearer
token: "$secrets.ansible_tower_token"
resources:
- name: jobs
path: "/jobs/{{job_id}}"
inputParameters:
- name: job_id
in: path
operations:
- name: get-job
method: GET
Identifies deprecated API consumers, sends migration notices, tracks adoption, and reports progress.
naftiko: "0.5"
info:
label: "API Deprecation Notice Pipeline"
description: "Identifies deprecated API consumers, sends migration notices, tracks adoption, and reports progress."
tags:
- engineering
- datadog
- jira
- slack
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: api_deprecation_notice_pipeline
description: "Orchestrate api deprecation notice pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-datadog
type: call
call: "datadog.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-jira
type: call
call: "jira.process-resource"
with:
data: "{{get-datadog.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "API Deprecation Notice Pipeline step 3 complete."
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
header: "DD-API-KEY"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: datadog-op
method: POST
- type: http
namespace: jira
baseUri: "https://bae-systems.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
When a new document is uploaded to SharePoint, scans content with Microsoft Defender for classification, checks ITAR export control markings, logs compliance status in ServiceNow, and alerts the export compliance officer in Teams.
naftiko: "0.5"
info:
label: "Automated ITAR Compliance Check Pipeline"
description: "When a new document is uploaded to SharePoint, scans content with Microsoft Defender for classification, checks ITAR export control markings, logs compliance status in ServiceNow, and alerts the export compliance officer in Teams."
tags:
- compliance
- itar
- sharepoint
- microsoft-defender
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: itar-compliance
port: 8080
tools:
- name: check-itar-compliance
description: "Given a SharePoint document URL, scan for classification markings, verify ITAR compliance, log results, and notify the compliance officer."
inputParameters:
- name: site_id
in: body
type: string
description: "The SharePoint site ID."
- name: document_path
in: body
type: string
description: "The document path within the SharePoint site."
steps:
- name: get-document-metadata
type: call
call: "sharepoint.get-item"
with:
site_id: "{{site_id}}"
item_path: "{{document_path}}"
- name: scan-classification
type: call
call: "defender.scan-content"
with:
content_url: "{{get-document-metadata.download_url}}"
- name: log-compliance-check
type: call
call: "servicenow.create-record"
with:
table: "u_itar_compliance_log"
fields:
document_name: "{{get-document-metadata.name}}"
classification: "{{scan-classification.classification_label}}"
itar_markings_found: "{{scan-classification.itar_detected}}"
- name: notify-compliance-officer
type: call
call: "msteams.send-channel-message"
with:
channel_id: "export-compliance"
text: "ITAR Check: {{get-document-metadata.name}}. Classification: {{scan-classification.classification_label}}. ITAR: {{scan-classification.itar_detected}}. Log: {{log-compliance-check.sys_id}}."
consumes:
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: items
path: "/{{site_id}}/drive/root:/{{item_path}}"
inputParameters:
- name: site_id
in: path
- name: item_path
in: path
operations:
- name: get-item
method: GET
- type: http
namespace: defender
baseUri: "https://api.securitycenter.microsoft.com/api"
authentication:
type: bearer
token: "$secrets.defender_token"
resources:
- name: content-scan
path: "/files/scan"
operations:
- name: scan-content
method: POST
- type: http
namespace: servicenow
baseUri: "https://baesystems.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: records
path: "/table/{{table}}"
inputParameters:
- name: table
in: path
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Pulls penetration test findings from Burp Suite, correlates with Nessus vulnerability data, creates Jira remediation stories for each critical finding, and posts a summary to the security engineering Teams channel.
naftiko: "0.5"
info:
label: "Automated Penetration Test Report Pipeline"
description: "Pulls penetration test findings from Burp Suite, correlates with Nessus vulnerability data, creates Jira remediation stories for each critical finding, and posts a summary to the security engineering Teams channel."
tags:
- cybersecurity
- penetration-testing
- burp-suite
- nessus
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: pentest-reporting
port: 8080
tools:
- name: process-pentest-findings
description: "Given a Burp Suite scan ID and Nessus scan ID, correlate findings, create Jira stories for critical items, and notify security engineering."
inputParameters:
- name: burp_scan_id
in: body
type: string
description: "The Burp Suite Enterprise scan identifier."
- name: nessus_scan_id
in: body
type: string
description: "The Nessus scan identifier for the same target."
steps:
- name: get-burp-findings
type: call
call: "burpsuite.get-scan-results"
with:
scan_id: "{{burp_scan_id}}"
- name: get-nessus-findings
type: call
call: "nessus.get-scan-results"
with:
scan_id: "{{nessus_scan_id}}"
- name: create-remediation-story
type: call
call: "jira.create-issue"
with:
project: "SECENG"
issuetype: "Story"
summary: "Pentest finding: {{get-burp-findings.top_issue_name}}"
description: "Burp severity: {{get-burp-findings.top_issue_severity}}. Nessus correlated: {{get-nessus-findings.correlated_count}} findings."
- name: notify-seceng
type: call
call: "msteams.send-channel-message"
with:
channel_id: "security-engineering"
text: "Pentest complete: {{get-burp-findings.total_issues}} Burp findings, {{get-nessus-findings.finding_count}} Nessus findings. Jira: {{create-remediation-story.key}}."
consumes:
- type: http
namespace: burpsuite
baseUri: "https://burp-enterprise.baesystems.com/api"
authentication:
type: apikey
header: "Authorization"
value: "$secrets.burpsuite_api_key"
resources:
- name: scans
path: "/scans/{{scan_id}}/results"
inputParameters:
- name: scan_id
in: path
operations:
- name: get-scan-results
method: GET
- type: http
namespace: nessus
baseUri: "https://nessus.baesystems.com/scans"
authentication:
type: apikey
header: "X-ApiKeys"
value: "$secrets.nessus_api_keys"
resources:
- name: scan-results
path: "/{{scan_id}}"
inputParameters:
- name: scan_id
in: path
operations:
- name: get-scan-results
method: GET
- type: http
namespace: jira
baseUri: "https://bae-systems.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Triggers an Azure Data Factory pipeline for defense data lake ingestion, monitors completion, launches a Databricks analytics job on the ingested data, and notifies the data team in Teams.
naftiko: "0.5"
info:
label: "Azure Data Factory to Databricks Analytics Pipeline"
description: "Triggers an Azure Data Factory pipeline for defense data lake ingestion, monitors completion, launches a Databricks analytics job on the ingested data, and notifies the data team in Teams."
tags:
- data-engineering
- analytics
- azure-data-factory
- databricks
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: adf-databricks-pipeline
port: 8080
tools:
- name: run-ingestion-analytics
description: "Given an ADF pipeline name and Databricks job ID, trigger ingestion, run analytics, and notify the data team."
inputParameters:
- name: factory_name
in: body
type: string
description: "The Azure Data Factory name."
- name: pipeline_name
in: body
type: string
description: "The ADF pipeline name."
- name: databricks_job_id
in: body
type: string
description: "The Databricks job ID for downstream analytics."
steps:
- name: trigger-adf
type: call
call: "adf.trigger-pipeline"
with:
factory_name: "{{factory_name}}"
pipeline_name: "{{pipeline_name}}"
- name: run-analytics
type: call
call: "databricks.run-job"
with:
job_id: "{{databricks_job_id}}"
parameters:
adf_run_id: "{{trigger-adf.run_id}}"
- name: notify-team
type: call
call: "msteams.send-channel-message"
with:
channel_id: "data-engineering"
text: "Ingestion pipeline {{pipeline_name}} triggered (run: {{trigger-adf.run_id}}). Databricks analytics job: {{run-analytics.run_id}}."
consumes:
- type: http
namespace: adf
baseUri: "https://management.azure.com"
authentication:
type: bearer
token: "$secrets.azure_mgmt_token"
resources:
- name: pipelines
path: "/subscriptions/default/resourceGroups/data-rg/providers/Microsoft.DataFactory/factories/{{factory_name}}/pipelines/{{pipeline_name}}/createRun"
inputParameters:
- name: factory_name
in: path
- name: pipeline_name
in: path
operations:
- name: trigger-pipeline
method: POST
- type: http
namespace: databricks
baseUri: "https://baesystems.cloud.databricks.com/api/2.1"
authentication:
type: bearer
token: "$secrets.databricks_token"
resources:
- name: jobs
path: "/jobs/run-now"
operations:
- name: run-job
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Checks the latest Azure DevOps pipeline build status for a defense software project. Returns build result, duration, and triggering commit.
naftiko: "0.5"
info:
label: "Azure DevOps Build Status"
description: "Checks the latest Azure DevOps pipeline build status for a defense software project. Returns build result, duration, and triggering commit."
tags:
- engineering
- ci-cd
- azure-devops
capability:
exposes:
- type: mcp
namespace: devops-builds
port: 8080
tools:
- name: get-latest-build
description: "Get the latest Azure DevOps build for a given pipeline definition. Returns build status, result, and source commit."
inputParameters:
- name: project_name
in: body
type: string
description: "The Azure DevOps project name."
- name: definition_id
in: body
type: string
description: "The pipeline definition ID."
call: "azuredevops.get-builds"
with:
project: "{{project_name}}"
definitions: "{{definition_id}}"
top: "1"
outputParameters:
- name: build_number
type: string
mapping: "$.value[0].buildNumber"
- name: result
type: string
mapping: "$.value[0].result"
- name: source_version
type: string
mapping: "$.value[0].sourceVersion"
consumes:
- type: http
namespace: azuredevops
baseUri: "https://dev.azure.com/baesystems"
authentication:
type: basic
username: ""
password: "$secrets.azure_devops_pat"
resources:
- name: builds
path: "/{{project}}/_apis/build/builds"
inputParameters:
- name: project
in: path
operations:
- name: get-builds
method: GET
When Azure Monitor fires a critical alert, correlates with Datadog metrics, creates a ServiceNow incident, assigns to SRE via Jira, and notifies the operations channel in Teams.
naftiko: "0.5"
info:
label: "Azure Monitor Alert Resolution Pipeline"
description: "When Azure Monitor fires a critical alert, correlates with Datadog metrics, creates a ServiceNow incident, assigns to SRE via Jira, and notifies the operations channel in Teams."
tags:
- monitoring
- incident-response
- azure-monitor
- datadog
- servicenow
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: alert-resolution
port: 8080
tools:
- name: resolve-azure-alert
description: "Given an Azure Monitor alert ID, correlate with Datadog, create ServiceNow incident, assign via Jira, and notify ops."
inputParameters:
- name: alert_id
in: body
type: string
description: "The Azure Monitor alert rule ID."
- name: resource_id
in: body
type: string
description: "The affected Azure resource ID."
steps:
- name: get-alert-details
type: call
call: "azuremonitor.get-alert"
with:
alert_id: "{{alert_id}}"
- name: get-correlated-metrics
type: call
call: "datadog.query-metrics"
with:
query: "avg:system.cpu.user{resource_id:{{resource_id}}}"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Azure Alert: {{get-alert-details.alert_name}}"
category: "infrastructure"
priority: "{{get-alert-details.severity}}"
- name: assign-oncall
type: call
call: "jira.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "On-call: {{get-alert-details.alert_name}}"
description: "ServiceNow: {{create-incident.number}}. Resource: {{resource_id}}."
- name: notify-ops
type: call
call: "msteams.send-channel-message"
with:
channel_id: "infrastructure-ops"
text: "ALERT: {{get-alert-details.alert_name}}. Severity: {{get-alert-details.severity}}. ServiceNow: {{create-incident.number}}. Jira: {{assign-oncall.key}}."
consumes:
- type: http
namespace: azuremonitor
baseUri: "https://management.azure.com"
authentication:
type: bearer
token: "$secrets.azure_mgmt_token"
resources:
- name: alerts
path: "/{{alert_id}}"
inputParameters:
- name: alert_id
in: path
operations:
- name: get-alert
method: GET
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
header: "DD-API-KEY"
value: "$secrets.datadog_api_key"
resources:
- name: metrics
path: "/query"
operations:
- name: query-metrics
method: GET
- type: http
namespace: servicenow
baseUri: "https://baesystems.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: jira
baseUri: "https://bae-systems.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Retrieves current monitoring alert status. Used by BAE Systems teams.
naftiko: "0.5"
info:
label: "BAE Systems Alert Status Check"
description: "Retrieves current monitoring alert status. Used by BAE Systems teams."
tags:
- defense
- powerbi
capability:
exposes:
- type: mcp
namespace: powerbi
port: 8080
tools:
- name: get-alert_status_check
description: "Retrieves current monitoring alert status. Used by BAE Systems teams."
inputParameters:
- name: alert_id
in: body
type: string
description: "The alert_id to look up."
call: "powerbi.get-alert_id"
with:
alert_id: "{{alert_id}}"
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: bae_alert_status_check
method: GET
Checks availability of an API endpoint. Used by BAE Systems teams.
naftiko: "0.5"
info:
label: "BAE Systems API Endpoint Status"
description: "Checks availability of an API endpoint. Used by BAE Systems teams."
tags:
- defense
- elasticsearch
capability:
exposes:
- type: mcp
namespace: elasticsearc
port: 8080
tools:
- name: get-api_endpoint_status
description: "Checks availability of an API endpoint. Used by BAE Systems teams."
inputParameters:
- name: endpoint_url
in: body
type: string
description: "The endpoint_url to look up."
call: "elasticsearch.get-endpoint_url"
with:
endpoint_url: "{{endpoint_url}}"
consumes:
- type: http
namespace: elasticsearch
baseUri: "https://bae-systems-es.com:9200"
authentication:
type: bearer
token: "$secrets.elasticsearch_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: bae_api_endpoint_status
method: GET
Processes access requests, validates need-to-know, grants permissions, and creates audit records.
naftiko: "0.5"
info:
label: "Classified Document Access Pipeline"
description: "Processes access requests, validates need-to-know, grants permissions, and creates audit records."
tags:
- security
- servicenow
- okta
- slack
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: bae_classified_document_access_pipeline
description: "Orchestrate classified document access pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-servicenow
type: call
call: "servicenow.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-okta
type: call
call: "okta.process-resource"
with:
data: "{{get-servicenow.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Classified Document Access Pipeline step 3 complete."
consumes:
- type: http
namespace: servicenow
baseUri: "https://bae-systems.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: okta
baseUri: "https://bae-systems.okta.com/api/v1"
authentication:
type: apiKey
key: "$secrets.okta_api_token"
header: "Authorization"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: okta-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Retrieves compliance check status. Used by BAE Systems teams.
naftiko: "0.5"
info:
label: "BAE Systems Compliance Check Status"
description: "Retrieves compliance check status. Used by BAE Systems teams."
tags:
- defense
- pagerduty
capability:
exposes:
- type: mcp
namespace: pagerduty
port: 8080
tools:
- name: get-compliance_check_status
description: "Retrieves compliance check status. Used by BAE Systems teams."
inputParameters:
- name: check_id
in: body
type: string
description: "The check_id to look up."
call: "pagerduty.get-check_id"
with:
check_id: "{{check_id}}"
consumes:
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: bearer
token: "$secrets.pagerduty_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: bae_compliance_check_status
method: GET
Searches application logs for matching patterns. Used by BAE Systems teams.
naftiko: "0.5"
info:
label: "BAE Systems Log Search Query"
description: "Searches application logs for matching patterns. Used by BAE Systems teams."
tags:
- defense
- confluence
capability:
exposes:
- type: mcp
namespace: confluence
port: 8080
tools:
- name: get-log_search_query
description: "Searches application logs for matching patterns. Used by BAE Systems teams."
inputParameters:
- name: search_query
in: body
type: string
description: "The search_query to look up."
call: "confluence.get-search_query"
with:
search_query: "{{search_query}}"
consumes:
- type: http
namespace: confluence
baseUri: "https://bae-systems.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: bae_confluence_log_search_quer
method: GET
Queries cost and spending data. Used by BAE Systems teams.
naftiko: "0.5"
info:
label: "BAE Systems Cost Report Query"
description: "Queries cost and spending data. Used by BAE Systems teams."
tags:
- defense
- workday
capability:
exposes:
- type: mcp
namespace: workday
port: 8080
tools:
- name: get-cost_report_query
description: "Queries cost and spending data. Used by BAE Systems teams."
inputParameters:
- name: cost_center
in: body
type: string
description: "The cost_center to look up."
call: "workday.get-cost_center"
with:
cost_center: "{{cost_center}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/bae-systems"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: bae_cost_report_query
method: GET
Executes threat hunting queries, analyzes indicators, creates investigation cases, and alerts SOC.
naftiko: "0.5"
info:
label: "Cybersecurity Threat Hunt Pipeline"
description: "Executes threat hunting queries, analyzes indicators, creates investigation cases, and alerts SOC."
tags:
- cybersecurity
- splunk
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: cybersecurity
port: 8080
tools:
- name: bae_cybersecurity_threat_hunt_pipeline
description: "Orchestrate cybersecurity threat hunt pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-splunk
type: call
call: "splunk.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-splunk.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Cybersecurity Threat Hunt Pipeline step 3 complete."
consumes:
- type: http
namespace: splunk
baseUri: "https://bae-systems-splunk.com/services"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: splunk-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://bae-systems.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Executes a read-only analytics query. Used by BAE Systems teams.
naftiko: "0.5"
info:
label: "BAE Systems Database Query Runner"
description: "Executes a read-only analytics query. Used by BAE Systems teams."
tags:
- defense
- kubernetes
capability:
exposes:
- type: mcp
namespace: kubernetes
port: 8080
tools:
- name: get-database_query_runner
description: "Executes a read-only analytics query. Used by BAE Systems teams."
inputParameters:
- name: sql_query
in: body
type: string
description: "The sql_query to look up."
call: "kubernetes.get-sql_query"
with:
sql_query: "{{sql_query}}"
consumes:
- type: http
namespace: k8s
baseUri: "https://bae-systems-k8s.com/api/v1"
authentication:
type: bearer
token: "$secrets.k8s_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: bae_database_query_runner
method: GET
Tracks contract deliverables, validates completions, generates progress reports, and notifies program managers.
naftiko: "0.5"
info:
label: "Defense Contract Milestone Pipeline"
description: "Tracks contract deliverables, validates completions, generates progress reports, and notifies program managers."
tags:
- programs
- jira
- confluence
- powerbi
capability:
exposes:
- type: mcp
namespace: programs
port: 8080
tools:
- name: bae_defense_contract_milestone_pipeline
description: "Orchestrate defense contract milestone pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-jira
type: call
call: "jira.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-confluence
type: call
call: "confluence.process-resource"
with:
data: "{{get-jira.result}}"
- name: create-powerbi
type: call
call: "powerbi.create-resource"
with:
channel: "{{notification_channel}}"
text: "Defense Contract Milestone Pipeline step 3 complete."
consumes:
- type: http
namespace: jira
baseUri: "https://bae-systems.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: confluence
baseUri: "https://bae-systems.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: confluence-op
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: powerbi-op
method: POST
Checks status of a recent deployment. Used by BAE Systems teams.
naftiko: "0.5"
info:
label: "BAE Systems Deployment Status Check"
description: "Checks status of a recent deployment. Used by BAE Systems teams."
tags:
- defense
- salesforce
capability:
exposes:
- type: mcp
namespace: salesforce
port: 8080
tools:
- name: get-deployment_status_check
description: "Checks status of a recent deployment. Used by BAE Systems teams."
inputParameters:
- name: deployment_id
in: body
type: string
description: "The deployment_id to look up."
call: "salesforce.get-deployment_id"
with:
deployment_id: "{{deployment_id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://bae-systems.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: bae_deployment_status_check
method: GET
Retrieves a document from knowledge management. Used by BAE Systems teams.
naftiko: "0.5"
info:
label: "BAE Systems Document Retrieval"
description: "Retrieves a document from knowledge management. Used by BAE Systems teams."
tags:
- defense
- github
capability:
exposes:
- type: mcp
namespace: github
port: 8080
tools:
- name: get-document_retrieval
description: "Retrieves a document from knowledge management. Used by BAE Systems teams."
inputParameters:
- name: document_id
in: body
type: string
description: "The document_id to look up."
call: "github.get-document_id"
with:
document_id: "{{document_id}}"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: bae_document_retrieval
method: GET
Provisions new employee accounts, assigns training, creates IT tickets, and notifies managers.
naftiko: "0.5"
info:
label: "Employee Onboarding Automation Pipeline"
description: "Provisions new employee accounts, assigns training, creates IT tickets, and notifies managers."
tags:
- hr
- workday
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: bae_employee_onboarding_automation
description: "Orchestrate employee onboarding automation pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-workday
type: call
call: "workday.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-workday.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Employee Onboarding Automation Pipeline step 3 complete."
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/bae-systems"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: workday-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://bae-systems.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Checks the health status of a monitored service. Used by BAE Systems teams.
naftiko: "0.5"
info:
label: "BAE Systems Service Health Check"
description: "Checks the health status of a monitored service. Used by BAE Systems teams."
tags:
- defense
- jira
capability:
exposes:
- type: mcp
namespace: jira
port: 8080
tools:
- name: get-service_health_check
description: "Checks the health status of a monitored service. Used by BAE Systems teams."
inputParameters:
- name: health_target
in: body
type: string
description: "The health_target to look up."
call: "jira.get-health_target"
with:
health_target: "{{health_target}}"
consumes:
- type: http
namespace: jira
baseUri: "https://bae-systems.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: bae_jira_service_health_check
method: GET
Searches application logs for matching patterns. Used by BAE Systems teams.
naftiko: "0.5"
info:
label: "BAE Systems Log Search Query"
description: "Searches application logs for matching patterns. Used by BAE Systems teams."
tags:
- defense
- confluence
capability:
exposes:
- type: mcp
namespace: confluence
port: 8080
tools:
- name: get-log_search_query
description: "Searches application logs for matching patterns. Used by BAE Systems teams."
inputParameters:
- name: search_query
in: body
type: string
description: "The search_query to look up."
call: "confluence.get-search_query"
with:
search_query: "{{search_query}}"
consumes:
- type: http
namespace: confluence
baseUri: "https://bae-systems.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: bae_log_search_query
method: GET
Queries metric values from a monitoring dashboard. Used by BAE Systems teams.
naftiko: "0.5"
info:
label: "BAE Systems Metric Dashboard Query"
description: "Queries metric values from a monitoring dashboard. Used by BAE Systems teams."
tags:
- defense
- servicenow
capability:
exposes:
- type: mcp
namespace: servicenow
port: 8080
tools:
- name: get-metric_dashboard_query
description: "Queries metric values from a monitoring dashboard. Used by BAE Systems teams."
inputParameters:
- name: metric_name
in: body
type: string
description: "The metric_name to look up."
call: "servicenow.get-metric_name"
with:
metric_name: "{{metric_name}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://bae-systems.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: bae_metric_dashboard_query
method: GET
Checks the current status of a project. Used by BAE Systems teams.
naftiko: "0.5"
info:
label: "BAE Systems Project Status Check"
description: "Checks the current status of a project. Used by BAE Systems teams."
tags:
- defense
- grafana
capability:
exposes:
- type: mcp
namespace: grafana
port: 8080
tools:
- name: get-project_status_check
description: "Checks the current status of a project. Used by BAE Systems teams."
inputParameters:
- name: project_key
in: body
type: string
description: "The project_key to look up."
call: "grafana.get-project_key"
with:
project_key: "{{project_key}}"
consumes:
- type: http
namespace: grafana
baseUri: "https://bae-systems-grafana.com/api"
authentication:
type: bearer
token: "$secrets.grafana_api_key"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: bae_project_status_check
method: GET
Retrieves code repository information. Used by BAE Systems teams.
naftiko: "0.5"
info:
label: "BAE Systems Repository Info Lookup"
description: "Retrieves code repository information. Used by BAE Systems teams."
tags:
- defense
- okta
capability:
exposes:
- type: mcp
namespace: okta
port: 8080
tools:
- name: get-repository_info_lookup
description: "Retrieves code repository information. Used by BAE Systems teams."
inputParameters:
- name: repo_name
in: body
type: string
description: "The repo_name to look up."
call: "okta.get-repo_name"
with:
repo_name: "{{repo_name}}"
consumes:
- type: http
namespace: okta
baseUri: "https://bae-systems.okta.com/api/v1"
authentication:
type: apiKey
key: "$secrets.okta_api_token"
header: "Authorization"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: bae_repository_info_lookup
method: GET
Validates clearance status, checks access requirements, updates access control, and notifies security.
naftiko: "0.5"
info:
label: "Security Clearance Verification Pipeline"
description: "Validates clearance status, checks access requirements, updates access control, and notifies security."
tags:
- security
- servicenow
- okta
- slack
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: bae_security_clearance_verification_pipe
description: "Orchestrate security clearance verification pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-servicenow
type: call
call: "servicenow.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-okta
type: call
call: "okta.process-resource"
with:
data: "{{get-servicenow.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Security Clearance Verification Pipeline step 3 complete."
consumes:
- type: http
namespace: servicenow
baseUri: "https://bae-systems.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: okta
baseUri: "https://bae-systems.okta.com/api/v1"
authentication:
type: apiKey
key: "$secrets.okta_api_token"
header: "Authorization"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: okta-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Detects security incidents, enriches with context, creates response tickets, and notifies the SOC.
naftiko: "0.5"
info:
label: "Security Incident Response Pipeline"
description: "Detects security incidents, enriches with context, creates response tickets, and notifies the SOC."
tags:
- security
- splunk
- servicenow
- pagerduty
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: bae_security_incident_response_pipeline
description: "Orchestrate security incident response pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-splunk
type: call
call: "splunk.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-splunk.result}}"
- name: create-pagerduty
type: call
call: "pagerduty.create-resource"
with:
channel: "{{notification_channel}}"
text: "Security Incident Response Pipeline step 3 complete."
consumes:
- type: http
namespace: splunk
baseUri: "https://bae-systems-splunk.com/services"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: splunk-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://bae-systems.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: bearer
token: "$secrets.pagerduty_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: pagerduty-op
method: POST
Retrieves vulnerability scan results. Used by BAE Systems teams.
naftiko: "0.5"
info:
label: "BAE Systems Security Scan Results"
description: "Retrieves vulnerability scan results. Used by BAE Systems teams."
tags:
- defense
- slack
capability:
exposes:
- type: mcp
namespace: slack
port: 8080
tools:
- name: get-security_scan_results
description: "Retrieves vulnerability scan results. Used by BAE Systems teams."
inputParameters:
- name: scan_id
in: body
type: string
description: "The scan_id to look up."
call: "slack.get-scan_id"
with:
scan_id: "{{scan_id}}"
consumes:
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: bae_security_scan_results
method: GET
Checks the health status of a monitored service. Used by BAE Systems teams.
naftiko: "0.5"
info:
label: "BAE Systems Service Health Check"
description: "Checks the health status of a monitored service. Used by BAE Systems teams."
tags:
- defense
- jira
capability:
exposes:
- type: mcp
namespace: jira
port: 8080
tools:
- name: get-service_health_check
description: "Checks the health status of a monitored service. Used by BAE Systems teams."
inputParameters:
- name: health_target
in: body
type: string
description: "The health_target to look up."
call: "jira.get-health_target"
with:
health_target: "{{health_target}}"
consumes:
- type: http
namespace: jira
baseUri: "https://bae-systems.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: bae_service_health_check
method: GET
Queries metric values from a monitoring dashboard. Used by BAE Systems teams.
naftiko: "0.5"
info:
label: "BAE Systems Metric Dashboard Query"
description: "Queries metric values from a monitoring dashboard. Used by BAE Systems teams."
tags:
- defense
- servicenow
capability:
exposes:
- type: mcp
namespace: servicenow
port: 8080
tools:
- name: get-metric_dashboard_query
description: "Queries metric values from a monitoring dashboard. Used by BAE Systems teams."
inputParameters:
- name: metric_name
in: body
type: string
description: "The metric_name to look up."
call: "servicenow.get-metric_name"
with:
metric_name: "{{metric_name}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://bae-systems.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: bae_servicenow_metric_dashboar
method: GET
Orchestrates integration tests, collects results, flags failures, and notifies test engineers.
naftiko: "0.5"
info:
label: "System Integration Test Pipeline"
description: "Orchestrates integration tests, collects results, flags failures, and notifies test engineers."
tags:
- engineering
- jira
- confluence
- slack
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: bae_system_integration_test_pipeline
description: "Orchestrate system integration test pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-jira
type: call
call: "jira.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-confluence
type: call
call: "confluence.process-resource"
with:
data: "{{get-jira.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "System Integration Test Pipeline step 3 complete."
consumes:
- type: http
namespace: jira
baseUri: "https://bae-systems.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: confluence
baseUri: "https://bae-systems.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: confluence-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Retrieves the details of a support ticket. Used by BAE Systems teams.
naftiko: "0.5"
info:
label: "BAE Systems Ticket Details Lookup"
description: "Retrieves the details of a support ticket. Used by BAE Systems teams."
tags:
- defense
- datadog
capability:
exposes:
- type: mcp
namespace: datadog
port: 8080
tools:
- name: get-ticket_details_lookup
description: "Retrieves the details of a support ticket. Used by BAE Systems teams."
inputParameters:
- name: ticket_id
in: body
type: string
description: "The ticket_id to look up."
call: "datadog.get-ticket_id"
with:
ticket_id: "{{ticket_id}}"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
header: "DD-API-KEY"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: bae_ticket_details_lookup
method: GET
Retrieves user account details from the directory. Used by BAE Systems teams.
naftiko: "0.5"
info:
label: "BAE Systems User Account Lookup"
description: "Retrieves user account details from the directory. Used by BAE Systems teams."
tags:
- defense
- splunk
capability:
exposes:
- type: mcp
namespace: splunk
port: 8080
tools:
- name: get-user_account_lookup
description: "Retrieves user account details from the directory. Used by BAE Systems teams."
inputParameters:
- name: user_id
in: body
type: string
description: "The user_id to look up."
call: "splunk.get-user_id"
with:
user_id: "{{user_id}}"
consumes:
- type: http
namespace: splunk
baseUri: "https://bae-systems-splunk.com/services"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: bae_user_account_lookup
method: GET
Analyzes resource utilization trends, forecasts capacity needs, creates procurement requests, and reports.
naftiko: "0.5"
info:
label: "Capacity Planning Forecast Pipeline"
description: "Analyzes resource utilization trends, forecasts capacity needs, creates procurement requests, and reports."
tags:
- infrastructure
- grafana
- snowflake
- powerbi
capability:
exposes:
- type: mcp
namespace: infrastructure
port: 8080
tools:
- name: capacity_planning_forecast_pipeline
description: "Orchestrate capacity planning forecast pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-grafana
type: call
call: "grafana.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-confluence
type: call
call: "confluence.process-resource"
with:
data: "{{get-grafana.result}}"
- name: create-powerbi
type: call
call: "powerbi.create-resource"
with:
channel: "{{notification_channel}}"
text: "Capacity Planning Forecast Pipeline step 3 complete."
consumes:
- type: http
namespace: grafana
baseUri: "https://bae-systems-grafana.com/api"
authentication:
type: bearer
token: "$secrets.grafana_api_key"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: grafana-op
method: POST
- type: http
namespace: confluence
baseUri: "https://bae-systems.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: confluence-op
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: powerbi-op
method: POST
Validates change requests, routes for approval, schedules implementation, and notifies stakeholders.
naftiko: "0.5"
info:
label: "Change Management Approval Pipeline"
description: "Validates change requests, routes for approval, schedules implementation, and notifies stakeholders."
tags:
- itsm
- servicenow
- jira
- slack
capability:
exposes:
- type: mcp
namespace: itsm
port: 8080
tools:
- name: change_management_approval_pipeline
description: "Orchestrate change management approval pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-servicenow
type: call
call: "servicenow.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-jira
type: call
call: "jira.process-resource"
with:
data: "{{get-servicenow.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Change Management Approval Pipeline step 3 complete."
consumes:
- type: http
namespace: servicenow
baseUri: "https://bae-systems.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: jira
baseUri: "https://bae-systems.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
When a GitHub Actions workflow fails, fetches failure logs, creates a Jira bug ticket assigned to the committing developer, and notifies the engineering team in Microsoft Teams with failure details.
naftiko: "0.5"
info:
label: "CI/CD Pipeline Failure Triage"
description: "When a GitHub Actions workflow fails, fetches failure logs, creates a Jira bug ticket assigned to the committing developer, and notifies the engineering team in Microsoft Teams with failure details."
tags:
- ci-cd
- engineering
- github-actions
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: cicd-triage
port: 8080
tools:
- name: triage-pipeline-failure
description: "Given a GitHub Actions workflow run ID, fetch failure details, create a Jira bug, and notify the team."
inputParameters:
- name: owner
in: body
type: string
description: "The GitHub repository owner."
- name: repo
in: body
type: string
description: "The GitHub repository name."
- name: run_id
in: body
type: string
description: "The GitHub Actions workflow run ID."
steps:
- name: get-run
type: call
call: "github.get-workflow-run"
with:
owner: "{{owner}}"
repo: "{{repo}}"
run_id: "{{run_id}}"
- name: create-bug
type: call
call: "jira.create-issue"
with:
project: "ENG"
issuetype: "Bug"
summary: "CI Failure: {{get-run.name}} on {{get-run.head_branch}}"
description: "Workflow {{get-run.name}} failed at {{get-run.updated_at}}. Commit: {{get-run.head_sha}}. Author: {{get-run.actor_login}}."
- name: notify-team
type: call
call: "msteams.send-channel-message"
with:
channel_id: "engineering-ci"
text: "CI FAILURE: {{get-run.name}} on {{repo}}/{{get-run.head_branch}}. Author: {{get-run.actor_login}}. Jira: {{create-bug.key}}."
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: workflow-runs
path: "/repos/{{owner}}/{{repo}}/actions/runs/{{run_id}}"
inputParameters:
- name: owner
in: path
- name: repo
in: path
- name: run_id
in: path
operations:
- name: get-workflow-run
method: GET
- type: http
namespace: jira
baseUri: "https://bae-systems.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Processes access requests, validates need-to-know, grants permissions, and creates audit records.
naftiko: "0.5"
info:
label: "Classified Document Access Pipeline"
description: "Processes access requests, validates need-to-know, grants permissions, and creates audit records."
tags:
- security
- servicenow
- okta
- slack
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: classified_document_access_pipeline
description: "Orchestrate classified document access pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-servicenow
type: call
call: "servicenow.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-okta
type: call
call: "okta.process-resource"
with:
data: "{{get-servicenow.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Classified Document Access Pipeline step 3 complete."
consumes:
- type: http
namespace: servicenow
baseUri: "https://bae-systems.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: okta
baseUri: "https://bae-systems.okta.com/api/v1"
authentication:
type: apiKey
key: "$secrets.okta_api_token"
header: "Authorization"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: okta-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
When a cleared employee requests access to a classified environment, validates clearance in Azure Active Directory, opens a ServiceNow access request, and notifies the security officer in Microsoft Teams.
naftiko: "0.5"
info:
label: "Classified Environment Access Request"
description: "When a cleared employee requests access to a classified environment, validates clearance in Azure Active Directory, opens a ServiceNow access request, and notifies the security officer in Microsoft Teams."
tags:
- security
- access-control
- azure-active-directory
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: classified-access
port: 8080
tools:
- name: request-classified-access
description: "Given an employee UPN and environment name, validate clearance attributes in Azure AD, open a ServiceNow access request, and notify the facility security officer."
inputParameters:
- name: employee_upn
in: body
type: string
description: "The employee Azure AD user principal name."
- name: environment_name
in: body
type: string
description: "The classified environment identifier."
- name: justification
in: body
type: string
description: "Business justification for the access request."
steps:
- name: get-user-clearance
type: call
call: "azuread.get-user"
with:
upn: "{{employee_upn}}"
- name: open-access-request
type: call
call: "servicenow.create-request"
with:
short_description: "Classified access request: {{environment_name}} — {{get-user-clearance.display_name}}"
description: "Employee {{employee_upn}} requests access to {{environment_name}}. Clearance level: {{get-user-clearance.extension_clearanceLevel}}. Justification: {{justification}}"
category: "security_access"
assigned_group: "Facility_Security"
- name: notify-fso
type: call
call: "msteams.send-channel-message"
with:
channel_id: "facility-security"
text: "Access Request: {{get-user-clearance.display_name}} requesting {{environment_name}} access. Clearance: {{get-user-clearance.extension_clearanceLevel}}. Ticket: {{open-access-request.number}}."
consumes:
- type: http
namespace: azuread
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: users
path: "/users/{{upn}}"
inputParameters:
- name: upn
in: path
operations:
- name: get-user
method: GET
- type: http
namespace: servicenow
baseUri: "https://baesystems.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
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Collects audit events, validates against policies, generates compliance reports, and notifies auditors.
naftiko: "0.5"
info:
label: "Compliance Audit Trail Pipeline"
description: "Collects audit events, validates against policies, generates compliance reports, and notifies auditors."
tags:
- compliance
- elasticsearch
- confluence
- slack
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: compliance_audit_trail_pipeline
description: "Orchestrate compliance audit trail pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-elasticsearch
type: call
call: "elasticsearch.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-confluence
type: call
call: "confluence.process-resource"
with:
data: "{{get-elasticsearch.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Compliance Audit Trail Pipeline step 3 complete."
consumes:
- type: http
namespace: elasticsearch
baseUri: "https://bae-systems-es.com:9200"
authentication:
type: bearer
token: "$secrets.elasticsearch_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: elasticsearch-op
method: POST
- type: http
namespace: confluence
baseUri: "https://bae-systems.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: confluence-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Searches Confluence for engineering documents by keyword and returns page titles, space keys, and URLs. Used by systems engineers to find technical documentation.
naftiko: "0.5"
info:
label: "Confluence Engineering Document Lookup"
description: "Searches Confluence for engineering documents by keyword and returns page titles, space keys, and URLs. Used by systems engineers to find technical documentation."
tags:
- engineering
- documentation
- confluence
capability:
exposes:
- type: mcp
namespace: eng-docs
port: 8080
tools:
- name: search-confluence
description: "Search Confluence for engineering documentation by keyword. Returns matching page titles, space keys, and direct URLs."
inputParameters:
- name: search_term
in: body
type: string
description: "The search keyword or phrase."
call: "confluence.search-content"
with:
cql: "text~\"{{search_term}}\" AND type=page"
outputParameters:
- name: results
type: array
mapping: "$.results"
- name: total_size
type: integer
mapping: "$.totalSize"
consumes:
- type: http
namespace: confluence
baseUri: "https://bae-systems.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: search
path: "/content/search"
operations:
- name: search-content
method: GET
Tracks spending against budgets, forecasts overruns, creates alerts, and notifies finance leaders.
naftiko: "0.5"
info:
label: "Cost Center Budget Tracking Pipeline"
description: "Tracks spending against budgets, forecasts overruns, creates alerts, and notifies finance leaders."
tags:
- finance
- snowflake
- powerbi
- slack
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: cost_center_budget_tracking
description: "Orchestrate cost center budget tracking pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-jira
type: call
call: "jira.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-powerbi
type: call
call: "powerbi.process-resource"
with:
data: "{{get-jira.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Cost Center Budget Tracking Pipeline step 3 complete."
consumes:
- type: http
namespace: jira
baseUri: "https://bae-systems.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: powerbi-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Aggregates customer data from multiple sources, deduplicates, enriches profiles, and syncs to CRM.
naftiko: "0.5"
info:
label: "Customer 360 Data Sync Pipeline"
description: "Aggregates customer data from multiple sources, deduplicates, enriches profiles, and syncs to CRM."
tags:
- data
- snowflake
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: data
port: 8080
tools:
- name: customer_360_data_sync_pipeline
description: "Orchestrate customer 360 data sync pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-jira
type: call
call: "jira.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-salesforce
type: call
call: "salesforce.process-resource"
with:
data: "{{get-jira.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Customer 360 Data Sync Pipeline step 3 complete."
consumes:
- type: http
namespace: jira
baseUri: "https://bae-systems.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: salesforce
baseUri: "https://bae-systems.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: salesforce-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
On detection of a security incident, isolates the affected endpoint via Tanium, blocks malicious IPs in Palo Alto Networks firewall, creates a forensic investigation ticket in Jira, logs the incident in ServiceNow, and alerts the CIRT in Teams.
naftiko: "0.5"
info:
label: "Cybersecurity Incident Response Orchestrator"
description: "On detection of a security incident, isolates the affected endpoint via Tanium, blocks malicious IPs in Palo Alto Networks firewall, creates a forensic investigation ticket in Jira, logs the incident in ServiceNow, and alerts the CIRT in Teams."
tags:
- cybersecurity
- incident-response
- tanium
- palo-alto-networks
- jira
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: incident-response
port: 8080
tools:
- name: orchestrate-incident-response
description: "Given an affected hostname and malicious IP, isolate the endpoint, block the IP, create investigation and incident tickets, and alert the CIRT."
inputParameters:
- name: hostname
in: body
type: string
description: "The affected endpoint hostname."
- name: malicious_ip
in: body
type: string
description: "The malicious IP address to block."
- name: incident_summary
in: body
type: string
description: "Brief description of the security incident."
steps:
- name: isolate-endpoint
type: call
call: "tanium.isolate-host"
with:
hostname: "{{hostname}}"
- name: block-ip
type: call
call: "paloalto.add-to-blocklist"
with:
ip_address: "{{malicious_ip}}"
description: "Blocked due to incident: {{incident_summary}}"
- name: create-investigation
type: call
call: "jira.create-issue"
with:
project: "CIRT"
issuetype: "Task"
summary: "Forensic investigation: {{hostname}} — {{incident_summary}}"
description: "Endpoint {{hostname}} isolated. IP {{malicious_ip}} blocked. Tanium: {{isolate-endpoint.action_id}}."
- name: log-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Security Incident: {{incident_summary}}"
category: "security"
priority: "1"
description: "Host: {{hostname}}. IP: {{malicious_ip}}. Jira: {{create-investigation.key}}."
- name: alert-cirt
type: call
call: "msteams.send-channel-message"
with:
channel_id: "cirt-alerts"
text: "INCIDENT: {{incident_summary}}. Host: {{hostname}} (isolated). IP: {{malicious_ip}} (blocked). Jira: {{create-investigation.key}}. ServiceNow: {{log-incident.number}}."
consumes:
- type: http
namespace: tanium
baseUri: "https://tanium.baesystems.com/api/v2"
authentication:
type: bearer
token: "$secrets.tanium_token"
resources:
- name: actions
path: "/actions"
operations:
- name: isolate-host
method: POST
- type: http
namespace: paloalto
baseUri: "https://firewall.baesystems.com/restapi/v10.2"
authentication:
type: apikey
header: "X-PAN-KEY"
value: "$secrets.paloalto_firewall_key"
resources:
- name: blocklist
path: "/Objects/AddressObjects"
operations:
- name: add-to-blocklist
method: POST
- type: http
namespace: jira
baseUri: "https://bae-systems.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: servicenow
baseUri: "https://baesystems.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Executes threat hunting queries, analyzes indicators, creates investigation cases, and alerts SOC.
naftiko: "0.5"
info:
label: "Cybersecurity Threat Hunt Pipeline"
description: "Executes threat hunting queries, analyzes indicators, creates investigation cases, and alerts SOC."
tags:
- cybersecurity
- splunk
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: cybersecurity
port: 8080
tools:
- name: cybersecurity_threat_hunt_pipeline
description: "Orchestrate cybersecurity threat hunt pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-splunk
type: call
call: "splunk.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-splunk.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Cybersecurity Threat Hunt Pipeline step 3 complete."
consumes:
- type: http
namespace: splunk
baseUri: "https://bae-systems-splunk.com/services"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: splunk-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://bae-systems.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Pulls critical vulnerabilities from Nessus scans, creates ServiceNow security incidents for each, assigns to the appropriate remediation team via Jira, and alerts the CISO team in Microsoft Teams.
naftiko: "0.5"
info:
label: "Cybersecurity Vulnerability Triage Pipeline"
description: "Pulls critical vulnerabilities from Nessus scans, creates ServiceNow security incidents for each, assigns to the appropriate remediation team via Jira, and alerts the CISO team in Microsoft Teams."
tags:
- cybersecurity
- vulnerability-management
- nessus
- servicenow
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: vuln-triage
port: 8080
tools:
- name: triage-critical-vulnerabilities
description: "Given a Nessus scan ID, retrieve critical findings, open ServiceNow incidents, create Jira remediation tasks, and notify the CISO team."
inputParameters:
- name: scan_id
in: body
type: string
description: "The Nessus scan identifier."
- name: severity_threshold
in: body
type: string
description: "Minimum severity level to triage (e.g., critical, high)."
steps:
- name: get-scan-results
type: call
call: "nessus.get-scan-results"
with:
scan_id: "{{scan_id}}"
severity: "{{severity_threshold}}"
- name: create-security-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Critical vulnerability: {{get-scan-results.top_finding_name}}"
category: "security"
priority: "1"
description: "Nessus scan {{scan_id}} found {{get-scan-results.finding_count}} critical vulnerabilities. Top finding: {{get-scan-results.top_finding_name}} on {{get-scan-results.affected_hosts_count}} hosts."
- name: create-remediation-task
type: call
call: "jira.create-issue"
with:
project: "SECREM"
issuetype: "Task"
summary: "Remediate: {{get-scan-results.top_finding_name}}"
description: "ServiceNow incident: {{create-security-incident.number}}. Affected hosts: {{get-scan-results.affected_hosts_count}}."
- name: notify-ciso
type: call
call: "msteams.send-channel-message"
with:
channel_id: "ciso-alerts"
text: "CRITICAL: {{get-scan-results.finding_count}} vulnerabilities found in scan {{scan_id}}. Incident {{create-security-incident.number}} opened. Jira task: {{create-remediation-task.key}}."
consumes:
- type: http
namespace: nessus
baseUri: "https://nessus.baesystems.com/scans"
authentication:
type: apikey
header: "X-ApiKeys"
value: "$secrets.nessus_api_keys"
resources:
- name: scan-results
path: "/{{scan_id}}"
inputParameters:
- name: scan_id
in: path
operations:
- name: get-scan-results
method: GET
- type: http
namespace: servicenow
baseUri: "https://baesystems.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: jira
baseUri: "https://bae-systems.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Runs data quality checks, scores datasets, creates remediation tickets, and publishes scorecards.
naftiko: "0.5"
info:
label: "Data Quality Monitoring Pipeline"
description: "Runs data quality checks, scores datasets, creates remediation tickets, and publishes scorecards."
tags:
- data-quality
- snowflake
- jira
- grafana
capability:
exposes:
- type: mcp
namespace: data-quality
port: 8080
tools:
- name: data_quality_monitoring_pipeline
description: "Orchestrate data quality monitoring pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-jira
type: call
call: "jira.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-jira
type: call
call: "jira.process-resource"
with:
data: "{{get-jira.result}}"
- name: create-grafana
type: call
call: "grafana.create-resource"
with:
channel: "{{notification_channel}}"
text: "Data Quality Monitoring Pipeline step 3 complete."
consumes:
- type: http
namespace: jira
baseUri: "https://bae-systems.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: jira
baseUri: "https://bae-systems.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: grafana
baseUri: "https://bae-systems-grafana.com/api"
authentication:
type: bearer
token: "$secrets.grafana_api_key"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: grafana-op
method: POST
Triggers a Databricks ML pipeline for defense sensor data analysis, stores results in Amazon S3, refreshes the Power BI analytics dashboard, and notifies the data science team in Teams.
naftiko: "0.5"
info:
label: "Databricks Defense Analytics Pipeline"
description: "Triggers a Databricks ML pipeline for defense sensor data analysis, stores results in Amazon S3, refreshes the Power BI analytics dashboard, and notifies the data science team in Teams."
tags:
- data-science
- machine-learning
- databricks
- amazon-s3
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ml-pipeline
port: 8080
tools:
- name: run-analytics-pipeline
description: "Given a Databricks job ID and data parameters, run the ML pipeline, store results, refresh dashboard, and notify the team."
inputParameters:
- name: job_id
in: body
type: string
description: "The Databricks job identifier."
- name: input_path
in: body
type: string
description: "The S3 path to input sensor data."
steps:
- name: run-job
type: call
call: "databricks.run-job"
with:
job_id: "{{job_id}}"
parameters:
input_path: "{{input_path}}"
- name: store-results
type: call
call: "s3.put-object"
with:
bucket: "bae-analytics-results"
key: "ml-output/{{run-job.run_id}}/results.parquet"
- name: refresh-dashboard
type: call
call: "powerbi.trigger-refresh"
with:
workspace_id: "defense-analytics"
dataset_id: "sensor-analysis"
- name: notify-team
type: call
call: "msteams.send-channel-message"
with:
channel_id: "data-science"
text: "ML Pipeline complete. Job: {{run-job.run_id}}. Results: s3://bae-analytics-results/ml-output/{{run-job.run_id}}/. Dashboard refreshed."
consumes:
- type: http
namespace: databricks
baseUri: "https://baesystems.cloud.databricks.com/api/2.1"
authentication:
type: bearer
token: "$secrets.databricks_token"
resources:
- name: jobs
path: "/jobs/run-now"
operations:
- name: run-job
method: POST
- type: http
namespace: s3
baseUri: "https://bae-analytics-results.s3.amazonaws.com"
authentication:
type: aws-sigv4
region: "us-east-1"
access_key: "$secrets.aws_access_key"
secret_key: "$secrets.aws_secret_key"
resources:
- name: objects
path: "/{{key}}"
inputParameters:
- name: key
in: path
operations:
- name: put-object
method: PUT
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/groups/{{workspace_id}}/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: workspace_id
in: path
- name: dataset_id
in: path
operations:
- name: trigger-refresh
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Queries Datadog for current host metrics including CPU, memory, and disk utilization for a given infrastructure tag. Used by SRE teams managing defense application infrastructure.
naftiko: "0.5"
info:
label: "Datadog Infrastructure Monitor"
description: "Queries Datadog for current host metrics including CPU, memory, and disk utilization for a given infrastructure tag. Used by SRE teams managing defense application infrastructure."
tags:
- monitoring
- infrastructure
- datadog
capability:
exposes:
- type: mcp
namespace: infra-monitoring
port: 8080
tools:
- name: get-host-metrics
description: "Query Datadog for host-level CPU, memory, and disk metrics filtered by infrastructure tag."
inputParameters:
- name: host_tag
in: body
type: string
description: "The Datadog host tag to filter by (e.g., env:production)."
call: "datadog.query-metrics"
with:
query: "avg:system.cpu.user{{{host_tag}}}"
from: "-1h"
outputParameters:
- name: series
type: array
mapping: "$.series"
- name: query
type: string
mapping: "$.query"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
header: "DD-API-KEY"
value: "$secrets.datadog_api_key"
resources:
- name: metrics
path: "/query"
operations:
- name: query-metrics
method: GET
Pulls contract deliverable status from SAP, correlates with Microsoft Project schedule milestones, updates Jira tracking epics, and sends a summary to the contracts team in Microsoft Teams.
naftiko: "0.5"
info:
label: "Defense Contract Deliverable Tracking"
description: "Pulls contract deliverable status from SAP, correlates with Microsoft Project schedule milestones, updates Jira tracking epics, and sends a summary to the contracts team in Microsoft Teams."
tags:
- contract-management
- defense
- sap
- microsoft-project
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: contract-deliverables
port: 8080
tools:
- name: track-contract-deliverables
description: "Given a contract number, pull deliverable status from SAP, check schedule adherence, update Jira tracking, and notify the contracts team."
inputParameters:
- name: contract_number
in: body
type: string
description: "The defense contract number."
- name: program_id
in: body
type: string
description: "The associated program identifier."
steps:
- name: get-contract-items
type: call
call: "sap.get-contract-items"
with:
contract_number: "{{contract_number}}"
- name: get-schedule
type: call
call: "msproject.get-project-tasks"
with:
project_id: "{{program_id}}"
- name: update-tracking
type: call
call: "jira.update-issue"
with:
issue_key: "{{program_id}}-CDRL"
fields:
description: "Contract {{contract_number}}: {{get-contract-items.delivered_count}}/{{get-contract-items.total_count}} deliverables complete. Schedule variance: {{get-schedule.variance_days}} days."
- name: notify-contracts
type: call
call: "msteams.send-channel-message"
with:
channel_id: "contracts-management"
text: "Contract {{contract_number}} deliverable update: {{get-contract-items.delivered_count}}/{{get-contract-items.total_count}} complete. Schedule variance: {{get-schedule.variance_days}} days."
consumes:
- type: http
namespace: sap
baseUri: "https://bae-s4.sap.com/sap/opu/odata/sap/API_SALES_CONTRACT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: contract-items
path: "/A_SalesContract('{{contract_number}}')/to_Item"
inputParameters:
- name: contract_number
in: path
operations:
- name: get-contract-items
method: GET
- type: http
namespace: msproject
baseUri: "https://graph.microsoft.com/v1.0/planner"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: project-tasks
path: "/plans/{{project_id}}/tasks"
inputParameters:
- name: project_id
in: path
operations:
- name: get-project-tasks
method: GET
- type: http
namespace: jira
baseUri: "https://bae-systems.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: update-issue
method: PUT
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Tracks contract deliverables, validates completions, generates progress reports, and notifies program managers.
naftiko: "0.5"
info:
label: "Defense Contract Milestone Pipeline"
description: "Tracks contract deliverables, validates completions, generates progress reports, and notifies program managers."
tags:
- programs
- jira
- confluence
- powerbi
capability:
exposes:
- type: mcp
namespace: programs
port: 8080
tools:
- name: defense_contract_milestone_pipeline
description: "Orchestrate defense contract milestone pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-jira
type: call
call: "jira.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-confluence
type: call
call: "confluence.process-resource"
with:
data: "{{get-jira.result}}"
- name: create-powerbi
type: call
call: "powerbi.create-resource"
with:
channel: "{{notification_channel}}"
text: "Defense Contract Milestone Pipeline step 3 complete."
consumes:
- type: http
namespace: jira
baseUri: "https://bae-systems.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: confluence
baseUri: "https://bae-systems.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: confluence-op
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: powerbi-op
method: POST
Pulls earned value management data from SAP for a defense contract, compares with Microsoft Project schedule data, generates a CPI/SPI dashboard refresh in Power BI, and notifies program leadership in Teams.
naftiko: "0.5"
info:
label: "Defense Program Earned Value Analysis"
description: "Pulls earned value management data from SAP for a defense contract, compares with Microsoft Project schedule data, generates a CPI/SPI dashboard refresh in Power BI, and notifies program leadership in Teams."
tags:
- program-management
- earned-value
- sap
- microsoft-project
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: evm-analysis
port: 8080
tools:
- name: analyze-earned-value
description: "Given a contract number, pull EVM data from SAP, correlate with schedule, refresh Power BI dashboard, and notify leadership."
inputParameters:
- name: contract_number
in: body
type: string
description: "The defense contract number."
- name: reporting_period
in: body
type: string
description: "The reporting period in YYYY-MM format."
steps:
- name: get-evm-data
type: call
call: "sap.get-evm-metrics"
with:
contract_number: "{{contract_number}}"
period: "{{reporting_period}}"
- name: get-schedule-status
type: call
call: "msproject.get-project-summary"
with:
project_id: "{{contract_number}}"
- name: refresh-dashboard
type: call
call: "powerbi.trigger-refresh"
with:
workspace_id: "evm-dashboards"
dataset_id: "{{contract_number}}-evm"
- name: notify-leadership
type: call
call: "msteams.send-channel-message"
with:
channel_id: "program-leadership"
text: "EVM Report for {{contract_number}} ({{reporting_period}}): CPI={{get-evm-data.cpi}}, SPI={{get-evm-data.spi}}. BCWP=${{get-evm-data.bcwp}}. Schedule: {{get-schedule-status.overall_status}}."
consumes:
- type: http
namespace: sap
baseUri: "https://bae-s4.sap.com/sap/opu/odata/sap/API_PROJECT_COST_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: evm-metrics
path: "/A_ProjectEVMData(contract='{{contract_number}}',period='{{period}}')"
inputParameters:
- name: contract_number
in: path
- name: period
in: path
operations:
- name: get-evm-metrics
method: GET
- type: http
namespace: msproject
baseUri: "https://graph.microsoft.com/v1.0/planner"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: project-summary
path: "/plans/{{project_id}}"
inputParameters:
- name: project_id
in: path
operations:
- name: get-project-summary
method: GET
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/groups/{{workspace_id}}/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: workspace_id
in: path
- name: dataset_id
in: path
operations:
- name: trigger-refresh
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Retrieves program milestone data from Microsoft Project, cross-references with Jira epics for engineering deliverables, and posts a consolidated status update to Microsoft Teams for the program management office.
naftiko: "0.5"
info:
label: "Defense Program Milestone Tracker"
description: "Retrieves program milestone data from Microsoft Project, cross-references with Jira epics for engineering deliverables, and posts a consolidated status update to Microsoft Teams for the program management office."
tags:
- program-management
- defense
- microsoft-project
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: program-milestones
port: 8080
tools:
- name: track-program-milestones
description: "Given a program ID, pull milestone schedule from Microsoft Project, correlate with Jira epic status, and post a consolidated update to the program management Teams channel."
inputParameters:
- name: program_id
in: body
type: string
description: "The internal BAE Systems program identifier."
- name: teams_channel_id
in: body
type: string
description: "The Microsoft Teams channel ID for the program management office."
steps:
- name: get-milestones
type: call
call: "msproject.get-project-tasks"
with:
project_id: "{{program_id}}"
- name: get-epics
type: call
call: "jira.search-issues"
with:
jql: "project={{program_id}} AND issuetype=Epic"
- name: post-status
type: call
call: "msteams.send-channel-message"
with:
channel_id: "{{teams_channel_id}}"
text: "Program {{program_id}} Milestone Update: {{get-milestones.summary}}. Engineering Epics: {{get-epics.total}} total, {{get-epics.done_count}} complete."
consumes:
- type: http
namespace: msproject
baseUri: "https://graph.microsoft.com/v1.0/planner"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: project-tasks
path: "/plans/{{project_id}}/tasks"
inputParameters:
- name: project_id
in: path
operations:
- name: get-project-tasks
method: GET
- type: http
namespace: jira
baseUri: "https://bae-systems.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: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Pulls subcontractor data from SAP, verifies NIST 800-171 compliance attestation in SharePoint, checks for cybersecurity incidents via Splunk, and generates an audit record in ServiceNow with Teams notification.
naftiko: "0.5"
info:
label: "Defense Subcontractor Compliance Audit Pipeline"
description: "Pulls subcontractor data from SAP, verifies NIST 800-171 compliance attestation in SharePoint, checks for cybersecurity incidents via Splunk, and generates an audit record in ServiceNow with Teams notification."
tags:
- compliance
- supply-chain
- nist
- sap
- sharepoint
- splunk
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: subcontractor-audit
port: 8080
tools:
- name: audit-subcontractor-compliance
description: "Given a SAP vendor number, verify NIST compliance docs, check for security incidents, and file an audit record."
inputParameters:
- name: vendor_number
in: body
type: string
description: "The SAP vendor number for the subcontractor."
- name: contract_number
in: body
type: string
description: "The associated prime contract number."
steps:
- name: get-vendor-info
type: call
call: "sap.get-vendor"
with:
vendor_number: "{{vendor_number}}"
- name: check-nist-attestation
type: call
call: "sharepoint.search-files"
with:
query: "{{get-vendor-info.company_name}} NIST 800-171"
site_id: "supplier-compliance"
- name: check-security-events
type: call
call: "splunk.create-search"
with:
search: "index=security sourcetype=vendor_incidents vendor=\"{{get-vendor-info.company_name}}\""
earliest_time: "-90d"
latest_time: "now"
- name: create-audit-record
type: call
call: "servicenow.create-record"
with:
table: "u_compliance_audit"
fields:
vendor_name: "{{get-vendor-info.company_name}}"
contract: "{{contract_number}}"
nist_docs_found: "{{check-nist-attestation.total_count}}"
security_incidents: "{{check-security-events.event_count}}"
- name: notify-compliance
type: call
call: "msteams.send-channel-message"
with:
channel_id: "compliance-audits"
text: "Subcontractor Audit: {{get-vendor-info.company_name}}. NIST docs: {{check-nist-attestation.total_count}}. Incidents: {{check-security-events.event_count}}. Audit: {{create-audit-record.sys_id}}."
consumes:
- type: http
namespace: sap
baseUri: "https://bae-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: vendors
path: "/A_Supplier('{{vendor_number}}')"
inputParameters:
- name: vendor_number
in: path
operations:
- name: get-vendor
method: GET
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: search
path: "/{{site_id}}/drive/root/search(q='{{query}}')"
inputParameters:
- name: site_id
in: path
- name: query
in: path
operations:
- name: search-files
method: GET
- type: http
namespace: splunk
baseUri: "https://splunk.baesystems.com:8089/services"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: searches
path: "/search/jobs"
operations:
- name: create-search
method: POST
- type: http
namespace: servicenow
baseUri: "https://baesystems.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: records
path: "/table/{{table}}"
inputParameters:
- name: table
in: path
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Evaluates a supplier by pulling vendor data from SAP, checking compliance records in SharePoint, querying Palo Alto Networks for threat indicators, and filing a risk assessment in ServiceNow.
naftiko: "0.5"
info:
label: "Defense Supplier Risk Assessment Pipeline"
description: "Evaluates a supplier by pulling vendor data from SAP, checking compliance records in SharePoint, querying Palo Alto Networks for threat indicators, and filing a risk assessment in ServiceNow."
tags:
- supply-chain
- risk-management
- sap
- sharepoint
- palo-alto-networks
- servicenow
capability:
exposes:
- type: mcp
namespace: supplier-risk
port: 8080
tools:
- name: assess-supplier-risk
description: "Given a SAP vendor number and supplier domain, pull vendor data, check compliance docs, scan for threats, and file a risk assessment."
inputParameters:
- name: vendor_number
in: body
type: string
description: "The SAP vendor master number."
- name: supplier_domain
in: body
type: string
description: "The supplier primary internet domain."
steps:
- name: get-vendor
type: call
call: "sap.get-vendor"
with:
vendor_number: "{{vendor_number}}"
- name: get-compliance-docs
type: call
call: "sharepoint.search-files"
with:
query: "{{get-vendor.company_name}} compliance"
site_id: "supplier-compliance"
- name: check-threat-intel
type: call
call: "paloalto.query-domain"
with:
domain: "{{supplier_domain}}"
- name: file-assessment
type: call
call: "servicenow.create-assessment"
with:
short_description: "Supplier Risk Assessment: {{get-vendor.company_name}}"
description: "Vendor: {{vendor_number}}. Compliance docs found: {{get-compliance-docs.total_count}}. Threat score: {{check-threat-intel.risk_score}}. Domain: {{supplier_domain}}."
category: "vendor_risk"
assigned_group: "Supply_Chain_Risk"
consumes:
- type: http
namespace: sap
baseUri: "https://bae-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: vendors
path: "/A_Supplier('{{vendor_number}}')"
inputParameters:
- name: vendor_number
in: path
operations:
- name: get-vendor
method: GET
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: search
path: "/{{site_id}}/drive/root/search(q='{{query}}')"
inputParameters:
- name: site_id
in: path
- name: query
in: path
operations:
- name: search-files
method: GET
- type: http
namespace: paloalto
baseUri: "https://autofocus.paloaltonetworks.com/api/v1.0"
authentication:
type: apikey
header: "apiKey"
value: "$secrets.paloalto_api_key"
resources:
- name: domains
path: "/tic?indicatorType=domain&indicatorValue={{domain}}"
inputParameters:
- name: domain
in: query
operations:
- name: query-domain
method: POST
- type: http
namespace: servicenow
baseUri: "https://baesystems.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: assessments
path: "/table/asmt_assessment"
operations:
- name: create-assessment
method: POST
Pulls system requirements from Jira, maps to test cases in Azure DevOps, and generates a traceability gap report in Confluence.
naftiko: "0.5"
info:
label: "Defense System Requirements Traceability"
description: "Pulls system requirements from Jira, maps to test cases in Azure DevOps, and generates a traceability gap report in Confluence."
tags:
- systems-engineering
- requirements-management
- jira
- azure-devops
- confluence
capability:
exposes:
- type: mcp
namespace: requirements-trace
port: 8080
tools:
- name: trace-requirements
description: "Given a Jira project key, map requirements to test cases and publish a gap report to Confluence."
inputParameters:
- name: jira_project
in: body
type: string
description: "The Jira project key containing system requirements."
- name: devops_project
in: body
type: string
description: "The Azure DevOps project containing test cases."
- name: confluence_space
in: body
type: string
description: "The Confluence space key for the traceability report."
steps:
- name: get-requirements
type: call
call: "jira.search-issues"
with:
jql: "project={{jira_project}} AND issuetype=Requirement"
- name: get-test-cases
type: call
call: "azuredevops.get-test-plans"
with:
project: "{{devops_project}}"
- name: publish-report
type: call
call: "confluence.create-page"
with:
space_key: "{{confluence_space}}"
title: "Requirements Traceability Report — {{jira_project}}"
body: "Total requirements: {{get-requirements.total}}. Test cases: {{get-test-cases.count}}. Coverage: {{get-test-cases.coverage_percentage}}%."
consumes:
- type: http
namespace: jira
baseUri: "https://bae-systems.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: azuredevops
baseUri: "https://dev.azure.com/baesystems"
authentication:
type: basic
username: ""
password: "$secrets.azure_devops_pat"
resources:
- name: test-plans
path: "/{{project}}/_apis/test/plans"
inputParameters:
- name: project
in: path
operations:
- name: get-test-plans
method: GET
- type: http
namespace: confluence
baseUri: "https://bae-systems.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
When a cleared employee submits a travel request through SAP Concur, validates against Workday employment data, checks travel destination against export control lists via SharePoint, and routes approval through Microsoft Teams.
naftiko: "0.5"
info:
label: "Defense Travel Request Pipeline"
description: "When a cleared employee submits a travel request through SAP Concur, validates against Workday employment data, checks travel destination against export control lists via SharePoint, and routes approval through Microsoft Teams."
tags:
- travel
- compliance
- sap-concur
- workday
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: travel-requests
port: 8080
tools:
- name: process-travel-request
description: "Given a Concur travel request ID and employee ID, validate employment, check export compliance, and route for approval."
inputParameters:
- name: request_id
in: body
type: string
description: "The SAP Concur travel request ID."
- name: employee_id
in: body
type: string
description: "The Workday employee ID of the traveler."
steps:
- name: get-travel-request
type: call
call: "concur.get-travel-request"
with:
request_id: "{{request_id}}"
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{employee_id}}"
- name: check-export-controls
type: call
call: "sharepoint.search-files"
with:
query: "{{get-travel-request.destination_country}} export control"
site_id: "export-compliance"
- name: route-approval
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{get-employee.manager_email}}"
text: "Travel Approval Required: {{get-employee.full_name}} to {{get-travel-request.destination_country}} ({{get-travel-request.travel_dates}}). Export control docs: {{check-export-controls.total_count}}."
consumes:
- type: http
namespace: concur
baseUri: "https://www.concursolutions.com/api/v3.0"
authentication:
type: bearer
token: "$secrets.concur_token"
resources:
- name: travel-requests
path: "/travelrequest/requests/{{request_id}}"
inputParameters:
- name: request_id
in: path
operations:
- name: get-travel-request
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: workers
path: "/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: search
path: "/{{site_id}}/drive/root/search(q='{{query}}')"
inputParameters:
- name: site_id
in: path
- name: query
in: path
operations:
- name: search-files
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Tests DR procedures, validates backup integrity, generates readiness reports, and notifies leadership.
naftiko: "0.5"
info:
label: "Disaster Recovery Readiness Pipeline"
description: "Tests DR procedures, validates backup integrity, generates readiness reports, and notifies leadership."
tags:
- disaster-recovery
- servicenow
- confluence
- pagerduty
capability:
exposes:
- type: mcp
namespace: disaster-recovery
port: 8080
tools:
- name: disaster_recovery_readiness_pipeline
description: "Orchestrate disaster recovery readiness pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-servicenow
type: call
call: "servicenow.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-confluence
type: call
call: "confluence.process-resource"
with:
data: "{{get-servicenow.result}}"
- name: create-pagerduty
type: call
call: "pagerduty.create-resource"
with:
channel: "{{notification_channel}}"
text: "Disaster Recovery Readiness Pipeline step 3 complete."
consumes:
- type: http
namespace: servicenow
baseUri: "https://bae-systems.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: confluence
baseUri: "https://bae-systems.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: confluence-op
method: POST
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: bearer
token: "$secrets.pagerduty_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: pagerduty-op
method: POST
Promotes a Docker container image from staging to production registry, runs a Nessus vulnerability scan on the image, creates a Jira release ticket, and notifies the release management team in Teams.
naftiko: "0.5"
info:
label: "Docker Image Promotion Pipeline"
description: "Promotes a Docker container image from staging to production registry, runs a Nessus vulnerability scan on the image, creates a Jira release ticket, and notifies the release management team in Teams."
tags:
- devsecops
- container-security
- docker
- nessus
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: image-promotion
port: 8080
tools:
- name: promote-container-image
description: "Given an image repository and tag, scan for vulnerabilities, create a release ticket, and notify the team."
inputParameters:
- name: repository
in: body
type: string
description: "The container image repository name."
- name: tag
in: body
type: string
description: "The image tag to promote."
- name: target_environment
in: body
type: string
description: "The target environment (e.g., production)."
steps:
- name: scan-image
type: call
call: "nessus.scan-container"
with:
repository: "{{repository}}"
tag: "{{tag}}"
- name: create-release-ticket
type: call
call: "jira.create-issue"
with:
project: "REL"
issuetype: "Task"
summary: "Promote {{repository}}:{{tag}} to {{target_environment}}"
description: "Vulnerability scan: {{scan-image.critical_count}} critical, {{scan-image.high_count}} high. Total: {{scan-image.total_count}}."
- name: notify-release-mgmt
type: call
call: "msteams.send-channel-message"
with:
channel_id: "release-management"
text: "Image promotion: {{repository}}:{{tag}} to {{target_environment}}. Vulns: {{scan-image.critical_count}} critical. Jira: {{create-release-ticket.key}}."
consumes:
- type: http
namespace: nessus
baseUri: "https://nessus.baesystems.com"
authentication:
type: apikey
header: "X-ApiKeys"
value: "$secrets.nessus_api_keys"
resources:
- name: container-scans
path: "/container/scan"
operations:
- name: scan-container
method: POST
- type: http
namespace: jira
baseUri: "https://bae-systems.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Searches Elasticsearch for application or security logs by index pattern and query string. Returns matching log entries for defense systems troubleshooting.
naftiko: "0.5"
info:
label: "Elasticsearch Log Search"
description: "Searches Elasticsearch for application or security logs by index pattern and query string. Returns matching log entries for defense systems troubleshooting."
tags:
- observability
- log-management
- elasticsearch
capability:
exposes:
- type: mcp
namespace: log-search
port: 8080
tools:
- name: search-logs
description: "Search Elasticsearch for log entries matching a query. Returns hits with timestamps and message content."
inputParameters:
- name: index_pattern
in: body
type: string
description: "The Elasticsearch index pattern (e.g., logs-defense-*)."
- name: query_string
in: body
type: string
description: "The Lucene query string to search for."
call: "elasticsearch.search"
with:
index: "{{index_pattern}}"
q: "{{query_string}}"
outputParameters:
- name: total_hits
type: integer
mapping: "$.hits.total.value"
- name: hits
type: array
mapping: "$.hits.hits"
consumes:
- type: http
namespace: elasticsearch
baseUri: "https://elasticsearch.baesystems.com:9200"
authentication:
type: basic
username: "$secrets.elasticsearch_user"
password: "$secrets.elasticsearch_password"
resources:
- name: search
path: "/{{index}}/_search"
inputParameters:
- name: index
in: path
operations:
- name: search
method: GET
On new cleared hire creation in Workday, provisions Azure AD account with clearance attributes, opens a ServiceNow onboarding ticket, creates a SharePoint folder for personnel security documents, and sends a Teams welcome message.
naftiko: "0.5"
info:
label: "Employee Clearance Onboarding Pipeline"
description: "On new cleared hire creation in Workday, provisions Azure AD account with clearance attributes, opens a ServiceNow onboarding ticket, creates a SharePoint folder for personnel security documents, and sends a Teams welcome message."
tags:
- hr
- onboarding
- security-clearance
- workday
- azure-active-directory
- servicenow
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: clearance-onboarding
port: 8080
tools:
- name: onboard-cleared-employee
description: "Given a Workday employee ID and clearance level, provision Azure AD account, open onboarding ticket, create document folder, and send welcome message."
inputParameters:
- name: workday_employee_id
in: body
type: string
description: "The Workday worker ID for the new hire."
- name: clearance_level
in: body
type: string
description: "The security clearance level (e.g., Secret, Top Secret)."
- name: start_date
in: body
type: string
description: "The employee start date in YYYY-MM-DD format."
steps:
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{workday_employee_id}}"
- name: provision-ad
type: call
call: "azuread.create-user"
with:
display_name: "{{get-employee.full_name}}"
mail: "{{get-employee.work_email}}"
clearance_level: "{{clearance_level}}"
- name: open-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Cleared employee onboarding: {{get-employee.full_name}}"
category: "hr_onboarding"
assigned_group: "IT_Security_Onboarding"
description: "Cleared onboarding for {{get-employee.full_name}} starting {{start_date}}. Clearance: {{clearance_level}}."
- name: create-folder
type: call
call: "sharepoint.create-folder"
with:
site_id: "personnel-security"
folder_path: "ClearedPersonnel/{{get-employee.full_name}}_{{start_date}}"
- name: send-welcome
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{get-employee.work_email}}"
text: "Welcome to BAE Systems, {{get-employee.first_name}}! Your onboarding ticket is {{open-ticket.number}}. Personnel security docs folder: {{create-folder.url}}."
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: azuread
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: users
path: "/users"
operations:
- name: create-user
method: POST
- type: http
namespace: servicenow
baseUri: "https://baesystems.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive-items
path: "/{{site_id}}/drive/root:/{{folder_path}}"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: create-folder
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Provisions new employee accounts, assigns training, creates IT tickets, and notifies managers.
naftiko: "0.5"
info:
label: "Employee Onboarding Automation Pipeline"
description: "Provisions new employee accounts, assigns training, creates IT tickets, and notifies managers."
tags:
- hr
- workday
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: employee_onboarding_automation
description: "Orchestrate employee onboarding automation pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-workday
type: call
call: "workday.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-workday.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Employee Onboarding Automation Pipeline step 3 complete."
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/bae-systems"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: workday-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://bae-systems.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
When an engineering change order is created in Sparx Enterprise Architect, creates a Jira epic for implementation tracking, uploads the change package to SharePoint, and notifies the configuration control board in Microsoft Teams.
naftiko: "0.5"
info:
label: "Engineering Change Order Workflow"
description: "When an engineering change order is created in Sparx Enterprise Architect, creates a Jira epic for implementation tracking, uploads the change package to SharePoint, and notifies the configuration control board in Microsoft Teams."
tags:
- systems-engineering
- change-management
- sparx-enterprise-architect
- jira
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: eng-change-orders
port: 8080
tools:
- name: process-change-order
description: "Given an engineering change order ID and affected system, create a Jira epic, upload change documentation to SharePoint, and notify the CCB."
inputParameters:
- name: eco_id
in: body
type: string
description: "The engineering change order identifier."
- name: affected_system
in: body
type: string
description: "The system or subsystem affected by the change."
- name: change_description
in: body
type: string
description: "Summary description of the engineering change."
steps:
- name: create-epic
type: call
call: "jira.create-issue"
with:
project: "ENGCHG"
issuetype: "Epic"
summary: "ECO {{eco_id}}: {{affected_system}} — {{change_description}}"
description: "Engineering Change Order {{eco_id}} for {{affected_system}}. {{change_description}}"
- name: upload-docs
type: call
call: "sharepoint.upload-file"
with:
site_id: "engineering-config"
folder_path: "ChangeOrders/{{eco_id}}"
file_name: "ECO_{{eco_id}}_package.pdf"
- name: notify-ccb
type: call
call: "msteams.send-channel-message"
with:
channel_id: "config-control-board"
text: "New ECO {{eco_id}} submitted for {{affected_system}}. Jira: {{create-epic.key}}. Docs: {{upload-docs.url}}. Description: {{change_description}}"
consumes:
- type: http
namespace: jira
baseUri: "https://bae-systems.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: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive-items
path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
- name: file_name
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Retrieves GitHub Advanced Security alerts for a repository including code scanning findings. Used by AppSec teams to audit defense software repos.
naftiko: "0.5"
info:
label: "GitHub Repository Security Scan"
description: "Retrieves GitHub Advanced Security alerts for a repository including code scanning findings. Used by AppSec teams to audit defense software repos."
tags:
- application-security
- github
- code-scanning
capability:
exposes:
- type: mcp
namespace: appsec-github
port: 8080
tools:
- name: get-security-alerts
description: "Get GitHub Advanced Security code scanning alerts for a repository. Returns alert count and severities."
inputParameters:
- name: owner
in: body
type: string
description: "The GitHub organization or owner name."
- name: repo
in: body
type: string
description: "The repository name."
call: "github.get-code-scanning-alerts"
with:
owner: "{{owner}}"
repo: "{{repo}}"
outputParameters:
- name: alerts
type: array
mapping: "$"
- name: open_count
type: integer
mapping: "$.length"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: code-scanning
path: "/repos/{{owner}}/{{repo}}/code-scanning/alerts"
inputParameters:
- name: owner
in: path
- name: repo
in: path
operations:
- name: get-code-scanning-alerts
method: GET
When a GitLab merge request is opened, triggers SonarQube analysis, checks for secret leaks in the diff, and posts a security summary comment back on the merge request via GitLab API.
naftiko: "0.5"
info:
label: "GitLab Merge Request Security Gate"
description: "When a GitLab merge request is opened, triggers SonarQube analysis, checks for secret leaks in the diff, and posts a security summary comment back on the merge request via GitLab API."
tags:
- devsecops
- code-review
- gitlab
- sonarqube
capability:
exposes:
- type: mcp
namespace: mr-security-gate
port: 8080
tools:
- name: gate-merge-request
description: "Given a GitLab project ID and merge request IID, run security checks and post results as a comment."
inputParameters:
- name: project_id
in: body
type: string
description: "The GitLab project ID."
- name: mr_iid
in: body
type: string
description: "The merge request internal ID."
steps:
- name: get-mr-details
type: call
call: "gitlab.get-merge-request"
with:
project_id: "{{project_id}}"
mr_iid: "{{mr_iid}}"
- name: run-sonar-analysis
type: call
call: "sonarqube.get-quality-gate"
with:
projectKey: "{{get-mr-details.source_branch}}"
- name: post-comment
type: call
call: "gitlab.create-mr-note"
with:
project_id: "{{project_id}}"
mr_iid: "{{mr_iid}}"
body: "Security Gate: Quality gate {{run-sonar-analysis.status}}. Branch: {{get-mr-details.source_branch}}."
consumes:
- type: http
namespace: gitlab
baseUri: "https://gitlab.baesystems.com/api/v4"
authentication:
type: bearer
token: "$secrets.gitlab_token"
resources:
- name: merge-requests
path: "/projects/{{project_id}}/merge_requests/{{mr_iid}}"
inputParameters:
- name: project_id
in: path
- name: mr_iid
in: path
operations:
- name: get-merge-request
method: GET
- name: mr-notes
path: "/projects/{{project_id}}/merge_requests/{{mr_iid}}/notes"
inputParameters:
- name: project_id
in: path
- name: mr_iid
in: path
operations:
- name: create-mr-note
method: POST
- type: http
namespace: sonarqube
baseUri: "https://sonarqube.baesystems.com/api"
authentication:
type: bearer
token: "$secrets.sonarqube_token"
resources:
- name: quality-gates
path: "/qualitygates/project_status"
operations:
- name: get-quality-gate
method: GET
Retrieves current firing alerts from Grafana for a given dashboard. Used by SRE teams to get a quick view of active alerts across defense infrastructure.
naftiko: "0.5"
info:
label: "Grafana Alert Status Query"
description: "Retrieves current firing alerts from Grafana for a given dashboard. Used by SRE teams to get a quick view of active alerts across defense infrastructure."
tags:
- monitoring
- alerting
- grafana
capability:
exposes:
- type: mcp
namespace: grafana-alerts
port: 8080
tools:
- name: get-firing-alerts
description: "Query Grafana for currently firing alerts. Returns alert names, states, and affected dashboards."
inputParameters:
- name: dashboard_uid
in: body
type: string
description: "Optional Grafana dashboard UID to filter alerts."
call: "grafana.get-alerts"
with:
dashboardId: "{{dashboard_uid}}"
state: "alerting"
outputParameters:
- name: alerts
type: array
mapping: "$.data"
- name: total_count
type: integer
mapping: "$.data.length"
consumes:
- type: http
namespace: grafana
baseUri: "https://grafana.baesystems.com/api"
authentication:
type: bearer
token: "$secrets.grafana_token"
resources:
- name: alerts
path: "/alerts"
operations:
- name: get-alerts
method: GET
Deploys a Helm chart to an AKS cluster, verifies pod health via Kubernetes API, runs SonarQube quality check on the release, and posts deployment status to the engineering Teams channel.
naftiko: "0.5"
info:
label: "Helm Chart Deployment Pipeline"
description: "Deploys a Helm chart to an AKS cluster, verifies pod health via Kubernetes API, runs SonarQube quality check on the release, and posts deployment status to the engineering Teams channel."
tags:
- deployment
- kubernetes
- helm
- azure-kubernetes-service
- sonarqube
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: helm-deploy
port: 8080
tools:
- name: deploy-helm-chart
description: "Given a Helm chart name, version, and target namespace, deploy to AKS, verify pods, check code quality, and notify the team."
inputParameters:
- name: chart_name
in: body
type: string
description: "The Helm chart name."
- name: chart_version
in: body
type: string
description: "The chart version to deploy."
- name: namespace
in: body
type: string
description: "The Kubernetes namespace for deployment."
steps:
- name: deploy-chart
type: call
call: "aks.create-helm-release"
with:
chart: "{{chart_name}}"
version: "{{chart_version}}"
namespace: "{{namespace}}"
- name: check-pods
type: call
call: "aks.list-pods"
with:
namespace: "{{namespace}}"
label_selector: "app={{chart_name}}"
- name: check-quality
type: call
call: "sonarqube.get-quality-gate"
with:
projectKey: "{{chart_name}}"
- name: notify-team
type: call
call: "msteams.send-channel-message"
with:
channel_id: "deployments"
text: "Deployed {{chart_name}} v{{chart_version}} to {{namespace}}. Pods: {{check-pods.ready_count}}/{{check-pods.total_count}}. Quality gate: {{check-quality.status}}."
consumes:
- type: http
namespace: aks
baseUri: "https://aks-cluster.baesystems.com"
authentication:
type: bearer
token: "$secrets.aks_token"
resources:
- name: helm-releases
path: "/apis/helm.toolkit.fluxcd.io/v2beta1/namespaces/{{namespace}}/helmreleases"
inputParameters:
- name: namespace
in: path
operations:
- name: create-helm-release
method: POST
- name: pods
path: "/api/v1/namespaces/{{namespace}}/pods"
inputParameters:
- name: namespace
in: path
operations:
- name: list-pods
method: GET
- type: http
namespace: sonarqube
baseUri: "https://sonarqube.baesystems.com/api"
authentication:
type: bearer
token: "$secrets.sonarqube_token"
resources:
- name: quality-gates
path: "/qualitygates/project_status"
operations:
- name: get-quality-gate
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When an Informatica ETL job fails, fetches error details, creates a ServiceNow incident, restarts the job via Informatica API, and notifies the data engineering team in Teams.
naftiko: "0.5"
info:
label: "Informatica ETL Pipeline Failure Recovery"
description: "When an Informatica ETL job fails, fetches error details, creates a ServiceNow incident, restarts the job via Informatica API, and notifies the data engineering team in Teams."
tags:
- data-engineering
- etl
- informatica
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: etl-recovery
port: 8080
tools:
- name: recover-failed-etl
description: "Given a failed Informatica run ID, fetch error details, create an incident, restart the job, and notify the team."
inputParameters:
- name: run_id
in: body
type: string
description: "The failed Informatica job run identifier."
- name: task_id
in: body
type: string
description: "The Informatica task identifier for restart."
steps:
- name: get-failure-details
type: call
call: "informatica.get-activity-log"
with:
runId: "{{run_id}}"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "ETL Failure: {{get-failure-details.task_name}}"
category: "data_engineering"
description: "Run {{run_id}} failed. Error rows: {{get-failure-details.failedRows}}. Status: {{get-failure-details.executionState}}."
- name: restart-job
type: call
call: "informatica.restart-task"
with:
taskId: "{{task_id}}"
- name: notify-team
type: call
call: "msteams.send-channel-message"
with:
channel_id: "data-engineering"
text: "ETL Recovery: {{get-failure-details.task_name}} failed ({{get-failure-details.failedRows}} error rows). Restarted. ServiceNow: {{create-incident.number}}."
consumes:
- type: http
namespace: informatica
baseUri: "https://dm-us.informaticacloud.com/saas/api/v2"
authentication:
type: bearer
token: "$secrets.informatica_token"
resources:
- name: activity-logs
path: "/activity/activityLog/{{runId}}"
inputParameters:
- name: runId
in: path
operations:
- name: get-activity-log
method: GET
- name: tasks
path: "/task/{{taskId}}/restart"
inputParameters:
- name: taskId
in: path
operations:
- name: restart-task
method: POST
- type: http
namespace: servicenow
baseUri: "https://baesystems.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Compares deployed state against desired config, identifies drift, creates remediation tickets, and alerts ops.
naftiko: "0.5"
info:
label: "Infrastructure Drift Detection Pipeline"
description: "Compares deployed state against desired config, identifies drift, creates remediation tickets, and alerts ops."
tags:
- devops
- github
- jira
- slack
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: infrastructure_drift_detection
description: "Orchestrate infrastructure drift detection pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-github
type: call
call: "github.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-jira
type: call
call: "jira.process-resource"
with:
data: "{{get-github.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Infrastructure Drift Detection Pipeline step 3 complete."
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: github-op
method: POST
- type: http
namespace: jira
baseUri: "https://bae-systems.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Tracks asset lifecycle stages, schedules replacements, manages disposal, and updates CMDB.
naftiko: "0.5"
info:
label: "IT Asset Lifecycle Pipeline"
description: "Tracks asset lifecycle stages, schedules replacements, manages disposal, and updates CMDB."
tags:
- operations
- servicenow
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: operations
port: 8080
tools:
- name: it_asset_lifecycle_pipeline
description: "Orchestrate it asset lifecycle pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-servicenow
type: call
call: "servicenow.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-confluence
type: call
call: "confluence.process-resource"
with:
data: "{{get-servicenow.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "IT Asset Lifecycle Pipeline step 3 complete."
consumes:
- type: http
namespace: servicenow
baseUri: "https://bae-systems.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: confluence
baseUri: "https://bae-systems.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: confluence-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Retrieves a Jira issue by key and returns summary, status, assignee, and priority. Used by engineering leads to quickly check task progress.
naftiko: "0.5"
info:
label: "Jira Engineering Task Lookup"
description: "Retrieves a Jira issue by key and returns summary, status, assignee, and priority. Used by engineering leads to quickly check task progress."
tags:
- engineering
- project-management
- jira
capability:
exposes:
- type: mcp
namespace: engineering-tasks
port: 8080
tools:
- name: get-jira-issue
description: "Look up a Jira issue by key. Returns summary, status, assignee display name, and priority."
inputParameters:
- name: issue_key
in: body
type: string
description: "The Jira issue key (e.g., ENG-1234)."
call: "jira.get-issue"
with:
issue_key: "{{issue_key}}"
outputParameters:
- name: summary
type: string
mapping: "$.fields.summary"
- 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://bae-systems.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
Identifies stale articles, assigns review tasks, tracks updates, and publishes freshness reports.
naftiko: "0.5"
info:
label: "Knowledge Base Freshness Pipeline"
description: "Identifies stale articles, assigns review tasks, tracks updates, and publishes freshness reports."
tags:
- knowledge
- confluence
- jira
- slack
capability:
exposes:
- type: mcp
namespace: knowledge
port: 8080
tools:
- name: knowledge_base_freshness_pipeline
description: "Orchestrate knowledge base freshness pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-confluence
type: call
call: "confluence.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-jira
type: call
call: "jira.process-resource"
with:
data: "{{get-confluence.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Knowledge Base Freshness Pipeline step 3 complete."
consumes:
- type: http
namespace: confluence
baseUri: "https://bae-systems.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: confluence-op
method: POST
- type: http
namespace: jira
baseUri: "https://bae-systems.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Queries Azure Kubernetes Service for cluster node status, pod health, and resource utilization. Used by platform engineers managing defense application workloads.
naftiko: "0.5"
info:
label: "Kubernetes Cluster Health Check"
description: "Queries Azure Kubernetes Service for cluster node status, pod health, and resource utilization. Used by platform engineers managing defense application workloads."
tags:
- platform-engineering
- kubernetes
- azure-kubernetes-service
capability:
exposes:
- type: mcp
namespace: k8s-health
port: 8080
tools:
- name: get-cluster-health
description: "Get AKS cluster health including provisioning state, Kubernetes version, and node count."
inputParameters:
- name: subscription_id
in: body
type: string
description: "The Azure subscription ID."
- name: resource_group
in: body
type: string
description: "The Azure resource group name."
- name: cluster_name
in: body
type: string
description: "The AKS cluster name."
call: "aks.get-cluster"
with:
subscription_id: "{{subscription_id}}"
resource_group: "{{resource_group}}"
cluster_name: "{{cluster_name}}"
outputParameters:
- name: provisioning_state
type: string
mapping: "$.properties.provisioningState"
- name: kubernetes_version
type: string
mapping: "$.properties.kubernetesVersion"
- name: node_count
type: integer
mapping: "$.properties.agentPoolProfiles[0].count"
consumes:
- type: http
namespace: aks
baseUri: "https://management.azure.com/subscriptions"
authentication:
type: bearer
token: "$secrets.azure_mgmt_token"
resources:
- name: clusters
path: "/{{subscription_id}}/resourceGroups/{{resource_group}}/providers/Microsoft.ContainerService/managedClusters/{{cluster_name}}"
inputParameters:
- name: subscription_id
in: path
- name: resource_group
in: path
- name: cluster_name
in: path
operations:
- name: get-cluster
method: GET
Submits a MATLAB simulation job to the Azure Batch compute cluster for defense systems modeling, uploads results to the engineering SharePoint site, and notifies the team in Microsoft Teams.
naftiko: "0.5"
info:
label: "MATLAB Simulation Job Submission"
description: "Submits a MATLAB simulation job to the Azure Batch compute cluster for defense systems modeling, uploads results to the engineering SharePoint site, and notifies the team in Microsoft Teams."
tags:
- simulation
- engineering
- matlab
- microsoft-azure
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: simulation-jobs
port: 8080
tools:
- name: submit-simulation
description: "Given a MATLAB script name and program ID, submit a simulation job, upload results to SharePoint, and notify the engineering team."
inputParameters:
- name: script_name
in: body
type: string
description: "The MATLAB simulation script name."
- name: program_id
in: body
type: string
description: "The defense program identifier."
steps:
- name: submit-job
type: call
call: "azure-batch.create-job"
with:
pool_id: "matlab-compute"
job_id: "sim-{{program_id}}-{{script_name}}"
command_line: "matlab -batch {{script_name}}"
- name: upload-results
type: call
call: "sharepoint.upload-file"
with:
site_id: "engineering-simulations"
folder_path: "{{program_id}}/results"
file_name: "{{script_name}}_results.mat"
- name: notify-team
type: call
call: "msteams.send-channel-message"
with:
channel_id: "simulation-results"
text: "Simulation submitted: {{script_name}} for program {{program_id}}. Job: {{submit-job.job_id}}. Results: {{upload-results.url}}"
consumes:
- type: http
namespace: azure-batch
baseUri: "https://baesystems-batch.eastus.batch.azure.com"
authentication:
type: bearer
token: "$secrets.azure_batch_token"
resources:
- name: jobs
path: "/jobs"
operations:
- name: create-job
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive-items
path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
- name: file_name
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Queries Microsoft Entra for conditional access policies applied to a defense application, verifies MFA enforcement, and generates a compliance report in ServiceNow.
naftiko: "0.5"
info:
label: "Microsoft Entra Conditional Access Review"
description: "Queries Microsoft Entra for conditional access policies applied to a defense application, verifies MFA enforcement, and generates a compliance report in ServiceNow."
tags:
- identity-security
- zero-trust
- microsoft-entra
- servicenow
capability:
exposes:
- type: mcp
namespace: identity-compliance
port: 8080
tools:
- name: review-conditional-access
description: "Given an application ID, review conditional access policies, check MFA enforcement, and file a compliance report."
inputParameters:
- name: app_id
in: body
type: string
description: "The Azure AD application ID."
steps:
- name: get-policies
type: call
call: "entra.list-conditional-access-policies"
with:
app_id: "{{app_id}}"
- name: file-compliance-report
type: call
call: "servicenow.create-record"
with:
table: "u_identity_compliance"
fields:
application_id: "{{app_id}}"
policy_count: "{{get-policies.total_count}}"
mfa_enforced: "{{get-policies.mfa_required}}"
compliant: "{{get-policies.all_compliant}}"
consumes:
- type: http
namespace: entra
baseUri: "https://graph.microsoft.com/v1.0/identity"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: conditional-access
path: "/conditionalAccess/policies"
operations:
- name: list-conditional-access-policies
method: GET
- type: http
namespace: servicenow
baseUri: "https://baesystems.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: records
path: "/table/{{table}}"
inputParameters:
- name: table
in: path
operations:
- name: create-record
method: POST
Deploys a defense application to OpenShift, runs a SonarQube quality gate check, verifies deployment health, and notifies the platform engineering team in Teams with deployment status.
naftiko: "0.5"
info:
label: "OpenShift Application Deployment with Security Gate"
description: "Deploys a defense application to OpenShift, runs a SonarQube quality gate check, verifies deployment health, and notifies the platform engineering team in Teams with deployment status."
tags:
- platform-engineering
- deployment
- openshift
- sonarqube
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: openshift-deploy-gate
port: 8080
tools:
- name: deploy-with-gate
description: "Given an OpenShift namespace and deployment config, check code quality, deploy, verify health, and notify the team."
inputParameters:
- name: namespace
in: body
type: string
description: "The OpenShift namespace."
- name: deployment_name
in: body
type: string
description: "The deployment name."
- name: image_tag
in: body
type: string
description: "The container image tag to deploy."
steps:
- name: check-quality
type: call
call: "sonarqube.get-quality-gate"
with:
projectKey: "{{deployment_name}}"
- name: deploy-app
type: call
call: "openshift.update-deployment"
with:
namespace: "{{namespace}}"
deployment_name: "{{deployment_name}}"
image_tag: "{{image_tag}}"
- name: verify-health
type: call
call: "openshift.get-deployment"
with:
namespace: "{{namespace}}"
deployment_name: "{{deployment_name}}"
- name: notify-team
type: call
call: "msteams.send-channel-message"
with:
channel_id: "platform-deployments"
text: "Deployed {{deployment_name}}:{{image_tag}} to {{namespace}}. Quality gate: {{check-quality.status}}. Replicas: {{verify-health.available_replicas}}/{{verify-health.replicas}}."
consumes:
- type: http
namespace: sonarqube
baseUri: "https://sonarqube.baesystems.com/api"
authentication:
type: bearer
token: "$secrets.sonarqube_token"
resources:
- name: quality-gates
path: "/qualitygates/project_status"
operations:
- name: get-quality-gate
method: GET
- type: http
namespace: openshift
baseUri: "https://openshift.baesystems.com/apis/apps/v1"
authentication:
type: bearer
token: "$secrets.openshift_token"
resources:
- name: deployments
path: "/namespaces/{{namespace}}/deployments/{{deployment_name}}"
inputParameters:
- name: namespace
in: path
- name: deployment_name
in: path
operations:
- name: update-deployment
method: PATCH
- name: get-deployment
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Pulls firewall rule configurations from Palo Alto Networks, validates against NIST security baseline in SharePoint, logs findings in ServiceNow, and notifies the network security team in Teams.
naftiko: "0.5"
info:
label: "Palo Alto Networks Firewall Rule Audit Pipeline"
description: "Pulls firewall rule configurations from Palo Alto Networks, validates against NIST security baseline in SharePoint, logs findings in ServiceNow, and notifies the network security team in Teams."
tags:
- network-security
- compliance
- palo-alto-networks
- sharepoint
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: firewall-audit
port: 8080
tools:
- name: audit-firewall-rules
description: "Given a firewall device group, pull rules, validate against baselines, log findings, and notify the team."
inputParameters:
- name: device_group
in: body
type: string
description: "The Palo Alto Networks device group name."
steps:
- name: get-rules
type: call
call: "paloalto.get-security-rules"
with:
device_group: "{{device_group}}"
- name: get-baseline
type: call
call: "sharepoint.search-files"
with:
query: "NIST firewall baseline {{device_group}}"
site_id: "security-baselines"
- name: log-audit
type: call
call: "servicenow.create-record"
with:
table: "u_firewall_audit"
fields:
device_group: "{{device_group}}"
total_rules: "{{get-rules.total_count}}"
baseline_doc: "{{get-baseline.results[0].name}}"
- name: notify-netsec
type: call
call: "msteams.send-channel-message"
with:
channel_id: "network-security"
text: "Firewall Audit: {{device_group}}. Total rules: {{get-rules.total_count}}. Audit: {{log-audit.sys_id}}."
consumes:
- type: http
namespace: paloalto
baseUri: "https://firewall.baesystems.com/restapi/v10.2"
authentication:
type: apikey
header: "X-PAN-KEY"
value: "$secrets.paloalto_firewall_key"
resources:
- name: security-rules
path: "/Policies/SecurityRules?location=device-group&device-group={{device_group}}"
inputParameters:
- name: device_group
in: query
operations:
- name: get-security-rules
method: GET
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: search
path: "/{{site_id}}/drive/root/search(q='{{query}}')"
inputParameters:
- name: site_id
in: path
- name: query
in: path
operations:
- name: search-files
method: GET
- type: http
namespace: servicenow
baseUri: "https://baesystems.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: records
path: "/table/{{table}}"
inputParameters:
- name: table
in: path
operations:
- name: create-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Initiates review cycles, collects feedback, aggregates scores, and distributes to managers.
naftiko: "0.5"
info:
label: "Performance Review Cycle Pipeline"
description: "Initiates review cycles, collects feedback, aggregates scores, and distributes to managers."
tags:
- hr
- workday
- confluence
- slack
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: performance_review_cycle_pipeline
description: "Orchestrate performance review cycle pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-workday
type: call
call: "workday.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-confluence
type: call
call: "confluence.process-resource"
with:
data: "{{get-workday.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Performance Review Cycle Pipeline step 3 complete."
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/bae-systems"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: workday-op
method: POST
- type: http
namespace: confluence
baseUri: "https://bae-systems.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: confluence-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Triggers a Power BI dataset refresh for a specified defense analytics workspace and returns the refresh status.
naftiko: "0.5"
info:
label: "Power BI Defense Dashboard Refresh"
description: "Triggers a Power BI dataset refresh for a specified defense analytics workspace and returns the refresh status."
tags:
- analytics
- reporting
- power-bi
capability:
exposes:
- type: mcp
namespace: analytics-refresh
port: 8080
tools:
- name: refresh-dataset
description: "Trigger a Power BI dataset refresh in the specified workspace and return the refresh operation status."
inputParameters:
- name: workspace_id
in: body
type: string
description: "The Power BI workspace (group) ID."
- name: dataset_id
in: body
type: string
description: "The Power BI dataset ID to refresh."
call: "powerbi.trigger-refresh"
with:
workspace_id: "{{workspace_id}}"
dataset_id: "{{dataset_id}}"
outputParameters:
- name: request_id
type: string
mapping: "$.requestId"
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/groups/{{workspace_id}}/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: workspace_id
in: path
- name: dataset_id
in: path
operations:
- name: trigger-refresh
method: POST
Pulls open program risks from Jira, generates a risk heat map in Databricks, uploads the report to SharePoint, and sends the weekly risk summary to program leadership in Microsoft Teams.
naftiko: "0.5"
info:
label: "Program Risk Register Pipeline"
description: "Pulls open program risks from Jira, generates a risk heat map in Databricks, uploads the report to SharePoint, and sends the weekly risk summary to program leadership in Microsoft Teams."
tags:
- program-management
- risk-management
- jira
- databricks
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: risk-register
port: 8080
tools:
- name: generate-risk-report
description: "Given a Jira project key for the program, pull risks, generate analytics, upload report, and notify leadership."
inputParameters:
- name: program_project_key
in: body
type: string
description: "The Jira project key containing program risk issues."
- name: program_name
in: body
type: string
description: "The program display name."
steps:
- name: get-risks
type: call
call: "jira.search-issues"
with:
jql: "project={{program_project_key}} AND issuetype=Risk AND status!=Closed"
- name: generate-heatmap
type: call
call: "databricks.run-job"
with:
job_id: "risk-heatmap-generator"
parameters:
risk_data: "{{get-risks.issues}}"
program_name: "{{program_name}}"
- name: upload-report
type: call
call: "sharepoint.upload-file"
with:
site_id: "program-risk-mgmt"
folder_path: "{{program_name}}/RiskReports"
file_name: "risk_heatmap_weekly.pdf"
- name: notify-leadership
type: call
call: "msteams.send-channel-message"
with:
channel_id: "program-{{program_project_key}}-leadership"
text: "Weekly Risk Report for {{program_name}}: {{get-risks.total}} open risks. High: {{get-risks.high_count}}. Report: {{upload-report.url}}"
consumes:
- type: http
namespace: jira
baseUri: "https://bae-systems.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: databricks
baseUri: "https://baesystems.cloud.databricks.com/api/2.1"
authentication:
type: bearer
token: "$secrets.databricks_token"
resources:
- name: jobs
path: "/jobs/run-now"
operations:
- name: run-job
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive-items
path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
- name: file_name
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Retrieves a QRadar security offense by ID and returns magnitude, status, offense type, and source count. Used by SOC analysts for offense investigation.
naftiko: "0.5"
info:
label: "QRadar Security Offense Lookup"
description: "Retrieves a QRadar security offense by ID and returns magnitude, status, offense type, and source count. Used by SOC analysts for offense investigation."
tags:
- cybersecurity
- siem
- qradar
capability:
exposes:
- type: mcp
namespace: qradar-offenses
port: 8080
tools:
- name: get-offense
description: "Look up a QRadar offense by ID. Returns magnitude, status, offense type, and source count."
inputParameters:
- name: offense_id
in: body
type: string
description: "The QRadar offense ID."
call: "qradar.get-offense"
with:
offense_id: "{{offense_id}}"
outputParameters:
- name: magnitude
type: integer
mapping: "$.magnitude"
- name: status
type: string
mapping: "$.status"
- name: offense_type
type: string
mapping: "$.offense_type_str"
- name: source_count
type: integer
mapping: "$.source_count"
consumes:
- type: http
namespace: qradar
baseUri: "https://qradar.baesystems.com/api"
authentication:
type: apikey
header: "SEC"
value: "$secrets.qradar_token"
resources:
- name: offenses
path: "/siem/offenses/{{offense_id}}"
inputParameters:
- name: offense_id
in: path
operations:
- name: get-offense
method: GET
Queries Red Hat Satellite for host patch compliance, creates ServiceNow change requests for non-compliant systems, schedules patching via Ansible Automation Platform, and notifies the infrastructure team in Teams.
naftiko: "0.5"
info:
label: "Red Hat Satellite Patch Compliance Pipeline"
description: "Queries Red Hat Satellite for host patch compliance, creates ServiceNow change requests for non-compliant systems, schedules patching via Ansible Automation Platform, and notifies the infrastructure team in Teams."
tags:
- patch-management
- compliance
- red-hat-satellite
- servicenow
- ansible-automation-platform
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: patch-compliance
port: 8080
tools:
- name: enforce-patch-compliance
description: "Given a Satellite host group, check patch compliance, create change requests, schedule remediation, and notify the team."
inputParameters:
- name: host_group
in: body
type: string
description: "The Red Hat Satellite host group name."
- name: errata_type
in: body
type: string
description: "The errata type to check (security, bugfix, enhancement)."
steps:
- name: get-compliance
type: call
call: "satellite.get-host-errata"
with:
host_group: "{{host_group}}"
type: "{{errata_type}}"
- name: create-change-request
type: call
call: "servicenow.create-change"
with:
short_description: "Patch non-compliant hosts: {{host_group}}"
description: "{{get-compliance.non_compliant_count}} hosts need {{errata_type}} patches."
category: "patching"
assigned_group: "Infrastructure_Ops"
- name: schedule-patching
type: call
call: "ansible.launch-job-template"
with:
job_template_id: "patch-hosts"
extra_vars:
host_group: "{{host_group}}"
errata_type: "{{errata_type}}"
- name: notify-infra
type: call
call: "msteams.send-channel-message"
with:
channel_id: "infrastructure-patching"
text: "Patch compliance: {{host_group}}. Non-compliant: {{get-compliance.non_compliant_count}}. Change: {{create-change-request.number}}. Ansible: {{schedule-patching.job_id}}."
consumes:
- type: http
namespace: satellite
baseUri: "https://satellite.baesystems.com/api/v2"
authentication:
type: basic
username: "$secrets.satellite_user"
password: "$secrets.satellite_password"
resources:
- name: host-errata
path: "/hostgroups/{{host_group}}/errata"
inputParameters:
- name: host_group
in: path
operations:
- name: get-host-errata
method: GET
- type: http
namespace: servicenow
baseUri: "https://baesystems.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: create-change
method: POST
- type: http
namespace: ansible
baseUri: "https://ansible-tower.baesystems.com/api/v2"
authentication:
type: bearer
token: "$secrets.ansible_tower_token"
resources:
- name: job-templates
path: "/job_templates/{{job_template_id}}/launch/"
inputParameters:
- name: job_template_id
in: path
operations:
- name: launch-job-template
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Looks up a SAP purchase order by number and returns header status, vendor, total value, and delivery date. Used by defense supply chain teams to check PO health.
naftiko: "0.5"
info:
label: "SAP Purchase Order Status"
description: "Looks up a SAP purchase order by number and returns header status, vendor, total value, and delivery date. Used by defense supply chain teams to check PO health."
tags:
- supply-chain
- procurement
- sap
- erp
capability:
exposes:
- type: mcp
namespace: supply-chain-erp
port: 8080
tools:
- name: get-purchase-order
description: "Look up a SAP purchase order by PO number. Returns header status, vendor, total value, currency, and delivery date."
inputParameters:
- name: po_number
in: body
type: string
description: "The SAP purchase order number (10-digit)."
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_value
type: string
mapping: "$.d.TotalAmount"
- name: currency
type: string
mapping: "$.d.TransactionCurrency"
- name: delivery_date
type: string
mapping: "$.d.DeliveryDate"
consumes:
- type: http
namespace: sap
baseUri: "https://bae-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
inputParameters:
- name: Accept
in: header
value: "application/json"
- name: sap-client
in: header
value: "100"
resources:
- name: purchase-orders
path: "/A_PurchaseOrder('{{po_number}}')"
inputParameters:
- name: po_number
in: path
operations:
- name: get-po
method: GET
Validates clearance status, checks access requirements, updates access control, and notifies security.
naftiko: "0.5"
info:
label: "Security Clearance Verification Pipeline"
description: "Validates clearance status, checks access requirements, updates access control, and notifies security."
tags:
- security
- servicenow
- okta
- slack
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: security_clearance_verification_pipeline
description: "Orchestrate security clearance verification pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-servicenow
type: call
call: "servicenow.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-okta
type: call
call: "okta.process-resource"
with:
data: "{{get-servicenow.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Security Clearance Verification Pipeline step 3 complete."
consumes:
- type: http
namespace: servicenow
baseUri: "https://bae-systems.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: okta
baseUri: "https://bae-systems.okta.com/api/v1"
authentication:
type: apiKey
key: "$secrets.okta_api_token"
header: "Authorization"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: okta-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Detects security incidents, enriches with context, creates response tickets, and notifies the SOC.
naftiko: "0.5"
info:
label: "Security Incident Response Pipeline"
description: "Detects security incidents, enriches with context, creates response tickets, and notifies the SOC."
tags:
- security
- splunk
- servicenow
- pagerduty
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: security_incident_response_pipeline
description: "Orchestrate security incident response pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-splunk
type: call
call: "splunk.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-splunk.result}}"
- name: create-pagerduty
type: call
call: "pagerduty.create-resource"
with:
channel: "{{notification_channel}}"
text: "Security Incident Response Pipeline step 3 complete."
consumes:
- type: http
namespace: splunk
baseUri: "https://bae-systems-splunk.com/services"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: splunk-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://bae-systems.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: bearer
token: "$secrets.pagerduty_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: pagerduty-op
method: POST
Triggers Selenium test execution via Jenkins, collects results, creates Jira defects for failures, and posts the test report summary to the QA Teams channel.
naftiko: "0.5"
info:
label: "Selenium Regression Test Report Pipeline"
description: "Triggers Selenium test execution via Jenkins, collects results, creates Jira defects for failures, and posts the test report summary to the QA Teams channel."
tags:
- qa
- test-automation
- selenium
- jenkins
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: regression-testing
port: 8080
tools:
- name: run-regression-suite
description: "Given a Jenkins job name for the Selenium suite, trigger the run, create defects for failures, and notify QA."
inputParameters:
- name: job_name
in: body
type: string
description: "The Jenkins job name for the Selenium test suite."
- name: environment
in: body
type: string
description: "The target test environment (e.g., staging, pre-prod)."
steps:
- name: trigger-tests
type: call
call: "jenkins.build-job"
with:
job_name: "{{job_name}}"
- name: create-defect
type: call
call: "jira.create-issue"
with:
project: "QA"
issuetype: "Bug"
summary: "Regression failure: {{job_name}} on {{environment}}"
description: "Jenkins build: {{trigger-tests.queue_url}}. Environment: {{environment}}."
- name: notify-qa
type: call
call: "msteams.send-channel-message"
with:
channel_id: "qa-automation"
text: "Regression suite {{job_name}} triggered on {{environment}}. Jenkins: {{trigger-tests.queue_url}}. Defect: {{create-defect.key}}."
consumes:
- type: http
namespace: jenkins
baseUri: "https://jenkins.baesystems.com"
authentication:
type: basic
username: "$secrets.jenkins_user"
password: "$secrets.jenkins_api_token"
resources:
- name: jobs
path: "/job/{{job_name}}/build"
inputParameters:
- name: job_name
in: path
operations:
- name: build-job
method: POST
- type: http
namespace: jira
baseUri: "https://bae-systems.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
# === SIMPLE (call) CAPABILITIES: 15 entries ===
Retrieves a ServiceNow incident by number and returns priority, state, assigned group, and short description. Used by IT operations to quickly check incident status.
naftiko: "0.5"
info:
label: "ServiceNow Incident Lookup"
description: "Retrieves a ServiceNow incident by number and returns priority, state, assigned group, and short description. Used by IT operations to quickly check incident status."
tags:
- it-operations
- incident-management
- servicenow
capability:
exposes:
- type: mcp
namespace: it-incidents
port: 8080
tools:
- name: get-incident
description: "Look up a ServiceNow incident by number. Returns priority, state, assigned group, and description."
inputParameters:
- name: incident_number
in: body
type: string
description: "The ServiceNow incident number (e.g., INC0012345)."
call: "servicenow.get-incident"
with:
incident_number: "{{incident_number}}"
outputParameters:
- name: priority
type: string
mapping: "$.result.priority"
- name: state
type: string
mapping: "$.result.state"
- name: assigned_group
type: string
mapping: "$.result.assignment_group.display_value"
- name: short_description
type: string
mapping: "$.result.short_description"
consumes:
- type: http
namespace: servicenow
baseUri: "https://baesystems.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 Microsoft Sentinel detects a high-severity incident, enriches the alert with Azure AD user context, creates a Jira security incident, escalates via ServiceNow, and notifies the SOC lead in Teams.
naftiko: "0.5"
info:
label: "SIEM Incident Escalation Pipeline"
description: "When Microsoft Sentinel detects a high-severity incident, enriches the alert with Azure AD user context, creates a Jira security incident, escalates via ServiceNow, and notifies the SOC lead in Teams."
tags:
- cybersecurity
- siem
- microsoft-sentinel
- azure-active-directory
- jira
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: siem-escalation
port: 8080
tools:
- name: escalate-sentinel-incident
description: "Given a Sentinel incident ID, enrich with user context, create Jira and ServiceNow tickets, and alert the SOC lead."
inputParameters:
- name: incident_id
in: body
type: string
description: "The Microsoft Sentinel incident ID."
- name: workspace_id
in: body
type: string
description: "The Log Analytics workspace ID."
steps:
- name: get-sentinel-incident
type: call
call: "sentinel.get-incident"
with:
workspace_id: "{{workspace_id}}"
incident_id: "{{incident_id}}"
- name: get-affected-user
type: call
call: "azuread.get-user"
with:
upn: "{{get-sentinel-incident.owner_upn}}"
- name: create-jira-incident
type: call
call: "jira.create-issue"
with:
project: "SECINC"
issuetype: "Bug"
summary: "Sentinel Alert: {{get-sentinel-incident.title}}"
description: "Severity: {{get-sentinel-incident.severity}}. Affected user: {{get-affected-user.display_name}}. Tactics: {{get-sentinel-incident.tactics}}."
- name: escalate-servicenow
type: call
call: "servicenow.create-incident"
with:
short_description: "SIEM Escalation: {{get-sentinel-incident.title}}"
category: "security"
priority: "1"
description: "Sentinel incident {{incident_id}}. Severity: {{get-sentinel-incident.severity}}. Jira: {{create-jira-incident.key}}."
- name: notify-soc-lead
type: call
call: "msteams.send-channel-message"
with:
channel_id: "soc-escalations"
text: "HIGH SEVERITY: {{get-sentinel-incident.title}}. Affected: {{get-affected-user.display_name}}. Jira: {{create-jira-incident.key}}. ServiceNow: {{escalate-servicenow.number}}."
consumes:
- type: http
namespace: sentinel
baseUri: "https://management.azure.com"
authentication:
type: bearer
token: "$secrets.azure_mgmt_token"
resources:
- name: incidents
path: "/subscriptions/{{workspace_id}}/providers/Microsoft.SecurityInsights/incidents/{{incident_id}}"
inputParameters:
- name: workspace_id
in: path
- name: incident_id
in: path
operations:
- name: get-incident
method: GET
- type: http
namespace: azuread
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: users
path: "/users/{{upn}}"
inputParameters:
- name: upn
in: path
operations:
- name: get-user
method: GET
- type: http
namespace: jira
baseUri: "https://bae-systems.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: servicenow
baseUri: "https://baesystems.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Monitors service levels, detects SLA breaches, creates escalation tickets, and reports to management.
naftiko: "0.5"
info:
label: "SLA Compliance Monitoring Pipeline"
description: "Monitors service levels, detects SLA breaches, creates escalation tickets, and reports to management."
tags:
- operations
- datadog
- servicenow
- powerbi
capability:
exposes:
- type: mcp
namespace: operations
port: 8080
tools:
- name: sla_compliance_monitoring_pipeline
description: "Orchestrate sla compliance monitoring pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-datadog
type: call
call: "datadog.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-datadog.result}}"
- name: create-powerbi
type: call
call: "powerbi.create-resource"
with:
channel: "{{notification_channel}}"
text: "SLA Compliance Monitoring Pipeline step 3 complete."
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
header: "DD-API-KEY"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: datadog-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://bae-systems.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: powerbi-op
method: POST
Audits license usage, identifies underutilized licenses, recommends optimization, and notifies IT.
naftiko: "0.5"
info:
label: "Software License Optimization Pipeline"
description: "Audits license usage, identifies underutilized licenses, recommends optimization, and notifies IT."
tags:
- operations
- servicenow
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: operations
port: 8080
tools:
- name: software_license_optimization
description: "Orchestrate software license optimization pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-servicenow
type: call
call: "servicenow.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-confluence
type: call
call: "confluence.process-resource"
with:
data: "{{get-servicenow.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Software License Optimization Pipeline step 3 complete."
consumes:
- type: http
namespace: servicenow
baseUri: "https://bae-systems.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: confluence
baseUri: "https://bae-systems.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: confluence-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Runs a Splunk search for security events within a time range and returns matching event count and categories. Used by the SOC for rapid threat triage.
naftiko: "0.5"
info:
label: "Splunk Security Event Query"
description: "Runs a Splunk search for security events within a time range and returns matching event count and categories. Used by the SOC for rapid threat triage."
tags:
- cybersecurity
- siem
- splunk
capability:
exposes:
- type: mcp
namespace: soc-splunk
port: 8080
tools:
- name: search-security-events
description: "Execute a Splunk search query for security events and return summary results."
inputParameters:
- name: search_query
in: body
type: string
description: "The Splunk SPL search query string."
- name: earliest_time
in: body
type: string
description: "Start of time range (e.g., -24h)."
call: "splunk.create-search"
with:
search: "{{search_query}}"
earliest_time: "{{earliest_time}}"
outputParameters:
- name: event_count
type: integer
mapping: "$.entry[0].content.eventCount"
- name: results
type: array
mapping: "$.entry[0].content.results"
consumes:
- type: http
namespace: splunk
baseUri: "https://splunk.baesystems.com:8089/services"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: searches
path: "/search/jobs"
operations:
- name: create-search
method: POST
When Splunk detects a notable security event, enriches it with Azure AD user context and Tanium endpoint data, then creates a ServiceNow security incident and alerts the SOC in Teams.
naftiko: "0.5"
info:
label: "Splunk SOC Alert Enrichment Pipeline"
description: "When Splunk detects a notable security event, enriches it with Azure AD user context and Tanium endpoint data, then creates a ServiceNow security incident and alerts the SOC in Teams."
tags:
- cybersecurity
- siem
- splunk
- azure-active-directory
- tanium
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: soc-enrichment
port: 8080
tools:
- name: enrich-splunk-alert
description: "Given a Splunk notable event ID, enrich with user and endpoint context, create an incident, and alert the SOC."
inputParameters:
- name: notable_event_id
in: body
type: string
description: "The Splunk notable event ID."
- name: user_upn
in: body
type: string
description: "The affected user principal name."
- name: hostname
in: body
type: string
description: "The affected endpoint hostname."
steps:
- name: get-notable-event
type: call
call: "splunk.get-notable"
with:
event_id: "{{notable_event_id}}"
- name: get-user-context
type: call
call: "azuread.get-user"
with:
upn: "{{user_upn}}"
- name: get-endpoint-data
type: call
call: "tanium.get-endpoint"
with:
hostname: "{{hostname}}"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "SOC Alert: {{get-notable-event.rule_name}}"
category: "security"
priority: "{{get-notable-event.urgency}}"
description: "User: {{get-user-context.display_name}} ({{get-user-context.department}}). Endpoint: {{hostname}} (OS: {{get-endpoint-data.os_version}})."
- name: alert-soc
type: call
call: "msteams.send-channel-message"
with:
channel_id: "soc-alerts"
text: "SOC Alert: {{get-notable-event.rule_name}}. User: {{get-user-context.display_name}}. Host: {{hostname}}. ServiceNow: {{create-incident.number}}."
consumes:
- type: http
namespace: splunk
baseUri: "https://splunk.baesystems.com:8089/services"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: notable-events
path: "/notable/{{event_id}}"
inputParameters:
- name: event_id
in: path
operations:
- name: get-notable
method: GET
- type: http
namespace: azuread
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: users
path: "/users/{{upn}}"
inputParameters:
- name: upn
in: path
operations:
- name: get-user
method: GET
- type: http
namespace: tanium
baseUri: "https://tanium.baesystems.com/api/v2"
authentication:
type: bearer
token: "$secrets.tanium_token"
resources:
- name: endpoints
path: "/endpoints?hostname={{hostname}}"
inputParameters:
- name: hostname
in: query
operations:
- name: get-endpoint
method: GET
- type: http
namespace: servicenow
baseUri: "https://baesystems.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
When SAP detects a critical parts shortage for a defense program, queries Oracle for alternate suppliers, creates a Jira procurement task, updates the SharePoint supply chain tracker, and alerts the program manager in Teams.
naftiko: "0.5"
info:
label: "Supply Chain Parts Shortage Escalation"
description: "When SAP detects a critical parts shortage for a defense program, queries Oracle for alternate suppliers, creates a Jira procurement task, updates the SharePoint supply chain tracker, and alerts the program manager in Teams."
tags:
- supply-chain
- procurement
- sap
- oracle
- jira
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: supply-chain-escalation
port: 8080
tools:
- name: escalate-parts-shortage
description: "Given a SAP material number and program ID, find alternate suppliers, create a procurement task, update the tracker, and notify the PM."
inputParameters:
- name: material_number
in: body
type: string
description: "The SAP material master number."
- name: program_id
in: body
type: string
description: "The defense program identifier."
- name: quantity_needed
in: body
type: integer
description: "The quantity of parts needed."
steps:
- name: get-material
type: call
call: "sap.get-material"
with:
material_number: "{{material_number}}"
- name: find-alternates
type: call
call: "oracle.search-suppliers"
with:
commodity_code: "{{get-material.commodity_code}}"
- name: create-procurement-task
type: call
call: "jira.create-issue"
with:
project: "PROCURE"
issuetype: "Task"
summary: "Parts shortage: {{get-material.description}} ({{material_number}})"
description: "Program {{program_id}} needs {{quantity_needed}} units. Lead time: {{get-material.lead_time_days}} days. Alternates: {{find-alternates.supplier_count}}."
- name: update-tracker
type: call
call: "sharepoint.update-list-item"
with:
site_id: "supply-chain-ops"
list_name: "ShortageTracker"
fields:
MaterialNumber: "{{material_number}}"
ProgramID: "{{program_id}}"
Status: "Escalated"
- name: notify-pm
type: call
call: "msteams.send-channel-message"
with:
channel_id: "program-{{program_id}}"
text: "PARTS SHORTAGE: {{get-material.description}} ({{material_number}}). Need {{quantity_needed}} units. {{find-alternates.supplier_count}} alternates found. Jira: {{create-procurement-task.key}}."
consumes:
- type: http
namespace: sap
baseUri: "https://bae-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('{{material_number}}')"
inputParameters:
- name: material_number
in: path
operations:
- name: get-material
method: GET
- type: http
namespace: oracle
baseUri: "https://oracle-procurement.baesystems.com/fscmRestApi/resources/v2"
authentication:
type: basic
username: "$secrets.oracle_user"
password: "$secrets.oracle_password"
resources:
- name: suppliers
path: "/suppliers"
operations:
- name: search-suppliers
method: GET
- type: http
namespace: jira
baseUri: "https://bae-systems.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: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: list-items
path: "/{{site_id}}/lists/{{list_name}}/items"
inputParameters:
- name: site_id
in: path
- name: list_name
in: path
operations:
- name: update-list-item
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Orchestrates integration tests, collects results, flags failures, and notifies test engineers.
naftiko: "0.5"
info:
label: "System Integration Test Pipeline"
description: "Orchestrates integration tests, collects results, flags failures, and notifies test engineers."
tags:
- engineering
- jira
- confluence
- slack
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: system_integration_test_pipeline
description: "Orchestrate system integration test pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-jira
type: call
call: "jira.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-confluence
type: call
call: "confluence.process-resource"
with:
data: "{{get-jira.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "System Integration Test Pipeline step 3 complete."
consumes:
- type: http
namespace: jira
baseUri: "https://bae-systems.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: jira-op
method: POST
- type: http
namespace: confluence
baseUri: "https://bae-systems.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: confluence-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Checks Terraform Cloud for workspace drift, creates a ServiceNow change request if drift is detected, triggers an Ansible remediation playbook, and notifies the platform team in Teams.
naftiko: "0.5"
info:
label: "Terraform Infrastructure Drift Remediation"
description: "Checks Terraform Cloud for workspace drift, creates a ServiceNow change request if drift is detected, triggers an Ansible remediation playbook, and notifies the platform team in Teams."
tags:
- infrastructure
- iac
- terraform
- servicenow
- ansible-automation-platform
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: drift-remediation
port: 8080
tools:
- name: remediate-drift
description: "Given a Terraform workspace, check for drift, create a change request, trigger remediation, and notify the team."
inputParameters:
- name: organization
in: body
type: string
description: "The Terraform Cloud organization."
- name: workspace_name
in: body
type: string
description: "The Terraform workspace name."
steps:
- name: check-drift
type: call
call: "terraform.get-workspace"
with:
organization: "{{organization}}"
workspace_name: "{{workspace_name}}"
- name: create-change
type: call
call: "servicenow.create-change"
with:
short_description: "Terraform drift remediation: {{workspace_name}}"
description: "Drift detected in {{workspace_name}}. Resources: {{check-drift.resource_count}}."
category: "infrastructure"
- name: trigger-remediation
type: call
call: "ansible.launch-job-template"
with:
job_template_id: "terraform-apply"
extra_vars:
workspace: "{{workspace_name}}"
- name: notify-platform
type: call
call: "msteams.send-channel-message"
with:
channel_id: "platform-engineering"
text: "Drift detected in {{workspace_name}}. Change: {{create-change.number}}. Remediation job: {{trigger-remediation.job_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/{{workspace_name}}"
inputParameters:
- name: organization
in: path
- name: workspace_name
in: path
operations:
- name: get-workspace
method: GET
- type: http
namespace: servicenow
baseUri: "https://baesystems.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: create-change
method: POST
- type: http
namespace: ansible
baseUri: "https://ansible-tower.baesystems.com/api/v2"
authentication:
type: bearer
token: "$secrets.ansible_tower_token"
resources:
- name: job-templates
path: "/job_templates/{{job_template_id}}/launch/"
inputParameters:
- name: job_template_id
in: path
operations:
- name: launch-job-template
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Monitors integration endpoints, detects failures, creates support tickets, and notifies integration team.
naftiko: "0.5"
info:
label: "Third-Party Integration Health Pipeline"
description: "Monitors integration endpoints, detects failures, creates support tickets, and notifies integration team."
tags:
- integrations
- datadog
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: integrations
port: 8080
tools:
- name: third_party_integration_health_pipeline
description: "Orchestrate third-party integration health pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-datadog
type: call
call: "datadog.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-datadog.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Third-Party Integration Health Pipeline step 3 complete."
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
header: "DD-API-KEY"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: datadog-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://bae-systems.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Tracks mandatory training completion, sends reminders, escalates non-compliance, and reports status.
naftiko: "0.5"
info:
label: "Training Compliance Tracker Pipeline"
description: "Tracks mandatory training completion, sends reminders, escalates non-compliance, and reports status."
tags:
- compliance
- workday
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: training_compliance_tracker_pipeline
description: "Orchestrate training compliance tracker pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-workday
type: call
call: "workday.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-servicenow
type: call
call: "servicenow.process-resource"
with:
data: "{{get-workday.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Training Compliance Tracker Pipeline step 3 complete."
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/bae-systems"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: workday-op
method: POST
- type: http
namespace: servicenow
baseUri: "https://bae-systems.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Evaluates vendor security posture, scores risk, creates assessment records, and notifies procurement.
naftiko: "0.5"
info:
label: "Vendor Risk Assessment Pipeline"
description: "Evaluates vendor security posture, scores risk, creates assessment records, and notifies procurement."
tags:
- procurement
- servicenow
- confluence
- slack
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: vendor_risk_assessment_pipeline
description: "Orchestrate vendor risk assessment pipeline workflow."
inputParameters:
- name: resource_id
in: body
type: string
description: "Primary resource identifier."
steps:
- name: get-servicenow
type: call
call: "servicenow.get-resource"
with:
resource_id: "{{resource_id}}"
- name: process-confluence
type: call
call: "confluence.process-resource"
with:
data: "{{get-servicenow.result}}"
- name: create-slack
type: call
call: "slack.create-resource"
with:
channel: "{{notification_channel}}"
text: "Vendor Risk Assessment Pipeline step 3 complete."
consumes:
- type: http
namespace: servicenow
baseUri: "https://bae-systems.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: servicenow-op
method: POST
- type: http
namespace: confluence
baseUri: "https://bae-systems.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: confluence-op
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: resources
path: "/resources/{{resource_id}}"
operations:
- name: slack-op
method: POST
Queries VMware vCenter for cluster resource utilization, generates a capacity forecast in Databricks, uploads the report to SharePoint, and alerts the infrastructure team in Teams.
naftiko: "0.5"
info:
label: "VMware Infrastructure Capacity Planning"
description: "Queries VMware vCenter for cluster resource utilization, generates a capacity forecast in Databricks, uploads the report to SharePoint, and alerts the infrastructure team in Teams."
tags:
- infrastructure
- capacity-planning
- vmware
- databricks
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: capacity-planning
port: 8080
tools:
- name: forecast-capacity
description: "Given a vCenter cluster name, collect utilization data, generate a forecast, upload the report, and notify the team."
inputParameters:
- name: cluster_name
in: body
type: string
description: "The vCenter cluster name."
steps:
- name: get-cluster-utilization
type: call
call: "vcenter.get-cluster-stats"
with:
cluster: "{{cluster_name}}"
- name: run-forecast
type: call
call: "databricks.run-job"
with:
job_id: "capacity-forecaster"
parameters:
cluster: "{{cluster_name}}"
cpu_util: "{{get-cluster-utilization.cpu_percent}}"
mem_util: "{{get-cluster-utilization.memory_percent}}"
- name: upload-report
type: call
call: "sharepoint.upload-file"
with:
site_id: "infrastructure-planning"
folder_path: "CapacityReports/{{cluster_name}}"
file_name: "capacity_forecast.pdf"
- name: notify-infra
type: call
call: "msteams.send-channel-message"
with:
channel_id: "infrastructure-capacity"
text: "Capacity Report: {{cluster_name}}. CPU: {{get-cluster-utilization.cpu_percent}}%. Memory: {{get-cluster-utilization.memory_percent}}%. Forecast: {{upload-report.url}}"
consumes:
- type: http
namespace: vcenter
baseUri: "https://vcenter.baesystems.com/api/vcenter"
authentication:
type: bearer
token: "$secrets.vcenter_session_token"
resources:
- name: cluster-stats
path: "/clusters/{{cluster}}/stats"
inputParameters:
- name: cluster
in: path
operations:
- name: get-cluster-stats
method: GET
- type: http
namespace: databricks
baseUri: "https://baesystems.cloud.databricks.com/api/2.1"
authentication:
type: bearer
token: "$secrets.databricks_token"
resources:
- name: jobs
path: "/jobs/run-now"
operations:
- name: run-job
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive-items
path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
- name: file_name
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-channel-message
method: POST
Triggers a remote packet capture session on a defense network segment, stores the capture in Amazon S3, and creates a Jira analysis task for the network security team.
naftiko: "0.5"
info:
label: "Wireshark Packet Capture Analysis Trigger"
description: "Triggers a remote packet capture session on a defense network segment, stores the capture in Amazon S3, and creates a Jira analysis task for the network security team."
tags:
- network-security
- forensics
- wireshark
- amazon-s3
- jira
capability:
exposes:
- type: mcp
namespace: packet-capture
port: 8080
tools:
- name: trigger-packet-capture
description: "Given a network interface and duration, trigger a capture, store in S3, and create a Jira analysis task."
inputParameters:
- name: interface_id
in: body
type: string
description: "The network interface identifier for capture."
- name: duration_seconds
in: body
type: integer
description: "Capture duration in seconds."
- name: filter_expression
in: body
type: string
description: "BPF filter expression for the capture."
steps:
- name: start-capture
type: call
call: "netmon.start-capture"
with:
interface: "{{interface_id}}"
duration: "{{duration_seconds}}"
filter: "{{filter_expression}}"
- name: upload-to-s3
type: call
call: "s3.put-object"
with:
bucket: "bae-network-forensics"
key: "captures/{{start-capture.capture_id}}.pcap"
- name: create-analysis-task
type: call
call: "jira.create-issue"
with:
project: "NETSEC"
issuetype: "Task"
summary: "Analyze capture: {{start-capture.capture_id}}"
description: "Interface: {{interface_id}}. Duration: {{duration_seconds}}s. Filter: {{filter_expression}}. S3: s3://bae-network-forensics/captures/{{start-capture.capture_id}}.pcap"
consumes:
- type: http
namespace: netmon
baseUri: "https://netmon.baesystems.com/api/v1"
authentication:
type: bearer
token: "$secrets.netmon_token"
resources:
- name: captures
path: "/captures"
operations:
- name: start-capture
method: POST
- type: http
namespace: s3
baseUri: "https://bae-network-forensics.s3.amazonaws.com"
authentication:
type: aws-sigv4
region: "us-east-1"
access_key: "$secrets.aws_access_key"
secret_key: "$secrets.aws_secret_key"
resources:
- name: objects
path: "/{{key}}"
inputParameters:
- name: key
in: path
operations:
- name: put-object
method: PUT
- type: http
namespace: jira
baseUri: "https://bae-systems.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 employee profile data from Workday by worker ID including name, department, cost center, and manager. Used by HR and program management teams.
naftiko: "0.5"
info:
label: "Workday Employee Lookup"
description: "Retrieves employee profile data from Workday by worker ID including name, department, cost center, and manager. Used by HR and program management teams."
tags:
- hr
- employee-data
- workday
capability:
exposes:
- type: mcp
namespace: hr-employee
port: 8080
tools:
- name: get-employee
description: "Look up a Workday employee by worker ID. Returns full name, department, cost center, and manager name."
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.full_name"
- name: department
type: string
mapping: "$.worker.department"
- name: cost_center
type: string
mapping: "$.worker.cost_center"
- name: manager
type: string
mapping: "$.worker.manager.full_name"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET