Boeing Capabilities
Naftiko 0.5 capability definitions for Boeing - 100 capabilities showing integration workflows and service orchestrations.
Performs an aircraft configuration audit by comparing SAP BOM against engineering specifications in Confluence, creating a Jira discrepancy report, and alerting the configuration management team via Teams.
naftiko: "0.5"
info:
label: "Aircraft Configuration Audit Workflow"
description: "Performs an aircraft configuration audit by comparing SAP BOM against engineering specifications in Confluence, creating a Jira discrepancy report, and alerting the configuration management team via Teams."
tags:
- engineering
- quality
- sap
- confluence
- jira
- microsoft-teams
- aerospace
capability:
exposes:
- type: mcp
namespace: engineering-ops
port: 8080
tools:
- name: audit-aircraft-configuration
description: "Given an aircraft serial number and BOM level, compare SAP BOM data against Confluence engineering specs, create a Jira discrepancy report, and notify the configuration management team via Teams. Use during configuration audits."
inputParameters:
- name: serial_number
in: body
type: string
description: "Aircraft serial number, e.g. 'MSN-65432'."
- name: bom_level
in: body
type: string
description: "BOM level to audit, e.g. 'top-level' or 'sub-assembly'."
steps:
- name: get-sap-bom
type: call
call: "sap-s4.get-bom"
with:
serial_number: "{{serial_number}}"
level: "{{bom_level}}"
- name: get-eng-specs
type: call
call: "confluence.search-content"
with:
cql: "type=page AND space=CONFIG AND text~\"{{serial_number}}\""
- name: create-discrepancy-report
type: call
call: "jira.create-issue"
with:
project_key: "CONFIG"
issuetype: "Task"
summary: "Config Audit: {{serial_number}} - {{bom_level}}"
description: "SAP BOM items: {{get-sap-bom.item_count}} | Specs found: {{get-eng-specs.totalSize}}"
- name: notify-config-mgmt
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_config_mgmt_channel_id"
text: "CONFIG AUDIT: {{serial_number}} | Level: {{bom_level}} | BOM Items: {{get-sap-bom.item_count}} | Jira: {{create-discrepancy-report.key}}"
consumes:
- namespace: sap-s4
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_BILL_OF_MATERIAL_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: bom
path: "/A_BillOfMaterial"
operations:
- name: get-bom
method: GET
- namespace: confluence
type: http
baseUri: "https://boeing.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
- namespace: jira
type: http
baseUri: "https://boeing.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
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Tracks aircraft delivery milestones by syncing SAP production order status to Salesforce, updating the Jira program board, and notifying stakeholders via Teams.
naftiko: "0.5"
info:
label: "Aircraft Delivery Milestone Tracker"
description: "Tracks aircraft delivery milestones by syncing SAP production order status to Salesforce, updating the Jira program board, and notifying stakeholders via Teams."
tags:
- production
- sap
- salesforce
- jira
- microsoft-teams
- aerospace
capability:
exposes:
- type: mcp
namespace: production-ops
port: 8080
tools:
- name: track-delivery-milestone
description: "Given an aircraft serial number and milestone name, update the SAP production order, sync to Salesforce delivery record, update the Jira program board, and notify stakeholders. Use when a delivery milestone is reached."
inputParameters:
- name: serial_number
in: body
type: string
description: "Aircraft serial number, e.g. 'MSN-65432'."
- name: milestone
in: body
type: string
description: "Milestone name, e.g. 'Final Assembly Complete'."
- name: program
in: body
type: string
description: "Aircraft program, e.g. '787 Dreamliner'."
steps:
- name: update-sap-milestone
type: call
call: "sap-s4.update-milestone"
with:
serial_number: "{{serial_number}}"
milestone: "{{milestone}}"
- name: sync-to-salesforce
type: call
call: "salesforce.update-delivery"
with:
serial_number: "{{serial_number}}"
milestone: "{{milestone}}"
status: "Completed"
- name: update-jira
type: call
call: "jira.transition-issue"
with:
issue_key: "{{program}}-{{serial_number}}"
transition: "{{milestone}}"
- name: notify-stakeholders
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_delivery_channel_id"
text: "MILESTONE: {{program}} {{serial_number}} | {{milestone}} | SAP & Salesforce updated"
consumes:
- namespace: sap-s4
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_PRODUCTION_ORDER_2_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: milestones
path: "/A_ProductionOrder_2"
operations:
- name: update-milestone
method: PATCH
- namespace: salesforce
type: http
baseUri: "https://boeing.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_access_token"
resources:
- name: deliveries
path: "/sobjects/Aircraft_Delivery__c"
operations:
- name: update-delivery
method: PATCH
- namespace: jira
type: http
baseUri: "https://boeing.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: transitions
path: "/issue/{{issue_key}}/transitions"
inputParameters:
- name: issue_key
in: path
operations:
- name: transition-issue
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
When a quality inspector identifies a nonconforming part, creates a SAP quality notification, opens a Jira engineering review ticket, and alerts the quality team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Aircraft Part Nonconformance Workflow"
description: "When a quality inspector identifies a nonconforming part, creates a SAP quality notification, opens a Jira engineering review ticket, and alerts the quality team via Microsoft Teams."
tags:
- quality
- manufacturing
- sap
- jira
- microsoft-teams
- aerospace
capability:
exposes:
- type: mcp
namespace: quality-ops
port: 8080
tools:
- name: report-nonconformance
description: "Given a part number, nonconformance description, inspector ID, and aircraft program, create a SAP quality notification, open a Jira engineering review ticket, and alert the quality team via Teams. Use when a nonconforming part is found during inspection."
inputParameters:
- name: part_number
in: body
type: string
description: "Aircraft part number, e.g. 'P/N 747-400-SPAR-02'."
- name: nonconformance_desc
in: body
type: string
description: "Description of the nonconformance found."
- name: inspector_id
in: body
type: string
description: "Quality inspector employee ID."
- name: aircraft_program
in: body
type: string
description: "Aircraft program, e.g. '787 Dreamliner'."
steps:
- name: create-quality-notification
type: call
call: "sap-s4.create-qn"
with:
notification_type: "Q2"
material: "{{part_number}}"
description: "NCR: {{nonconformance_desc}}"
reporter: "{{inspector_id}}"
- name: create-eng-review
type: call
call: "jira.create-issue"
with:
project_key: "ENG"
issuetype: "Task"
summary: "NCR Review: {{part_number}} - {{aircraft_program}}"
description: "QN: {{create-quality-notification.number}} | Part: {{part_number}} | {{nonconformance_desc}}"
- name: notify-quality-team
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_quality_channel_id"
text: "NCR ALERT: Part {{part_number}} | Program: {{aircraft_program}} | QN: {{create-quality-notification.number}} | Jira: {{create-eng-review.key}}"
consumes:
- namespace: sap-s4
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_QUALITYNOTIFICATION_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: quality-notifications
path: "/A_QualityNotification"
operations:
- name: create-qn
method: POST
- namespace: jira
type: http
baseUri: "https://boeing.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
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Generates a Certificate of Conformance by pulling quality data from SAP QM, compiling the certificate in SharePoint, and notifying the customer program manager via Teams.
naftiko: "0.5"
info:
label: "Automated Certificate of Conformance Generation"
description: "Generates a Certificate of Conformance by pulling quality data from SAP QM, compiling the certificate in SharePoint, and notifying the customer program manager via Teams."
tags:
- quality
- sap
- sharepoint
- microsoft-teams
- manufacturing
- aerospace
capability:
exposes:
- type: mcp
namespace: quality-ops
port: 8080
tools:
- name: generate-coc
description: "Given a production order number and customer name, pull inspection data from SAP QM, generate a Certificate of Conformance in SharePoint, and notify the customer program manager via Teams. Use when a production order is complete and ready for delivery."
inputParameters:
- name: production_order
in: body
type: string
description: "SAP production order number."
- name: customer_name
in: body
type: string
description: "Customer name for the CoC."
steps:
- name: get-quality-data
type: call
call: "sap-qm.get-inspection-results"
with:
production_order: "{{production_order}}"
- name: create-coc-document
type: call
call: "sharepoint.create-document"
with:
library: "CertificatesOfConformance"
title: "CoC: {{production_order}} - {{customer_name}}"
content: "Production Order: {{production_order}} | Customer: {{customer_name}} | Results: {{get-quality-data.disposition}}"
- name: notify-program-manager
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_delivery_channel_id"
text: "CoC GENERATED: Order {{production_order}} | Customer: {{customer_name}} | Doc: {{create-coc-document.url}}"
consumes:
- namespace: sap-qm
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_INSPECTIONLOT_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: inspection-results
path: "/A_InspectionLot"
operations:
- name: get-inspection-results
method: GET
- namespace: sharepoint
type: http
baseUri: "https://boeing.sharepoint.com/_api"
authentication:
type: bearer
token: "$secrets.sharepoint_access_token"
resources:
- name: documents
path: "/web/lists/getbytitle('CertificatesOfConformance')/items"
operations:
- name: create-document
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Generates a First Article Inspection report by pulling inspection data from SAP QM, compiling it into a Confluence page, and notifying the quality engineer via Teams.
naftiko: "0.5"
info:
label: "Automated First Article Inspection Report"
description: "Generates a First Article Inspection report by pulling inspection data from SAP QM, compiling it into a Confluence page, and notifying the quality engineer via Teams."
tags:
- quality
- sap
- confluence
- microsoft-teams
- manufacturing
- aerospace
capability:
exposes:
- type: mcp
namespace: quality-ops
port: 8080
tools:
- name: generate-fai-report
description: "Given a part number and inspection lot, pull FAI data from SAP QM, create a Confluence report page, and notify the quality engineer via Teams. Use when a first article inspection is completed."
inputParameters:
- name: part_number
in: body
type: string
description: "Part number for the FAI, e.g. 'P/N 787-BRACKET-04'."
- name: inspection_lot
in: body
type: string
description: "SAP inspection lot number."
steps:
- name: get-inspection-data
type: call
call: "sap-qm.get-inspection-results"
with:
InspectionLot: "{{inspection_lot}}"
- name: create-fai-page
type: call
call: "confluence.create-page"
with:
space_key: "QA"
title: "FAI Report: {{part_number}} - {{inspection_lot}}"
body: "Part: {{part_number}} | Lot: {{inspection_lot}} | Results: {{get-inspection-data.results}}"
- name: notify-quality-engineer
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_quality_channel_id"
text: "FAI REPORT GENERATED: {{part_number}} | Lot: {{inspection_lot}} | Confluence: {{create-fai-page.url}}"
consumes:
- namespace: sap-qm
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_INSPECTIONLOT_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: inspection-lots
path: "/A_InspectionLot('{InspectionLot}')/to_InspectionResult"
inputParameters:
- name: InspectionLot
in: path
operations:
- name: get-inspection-results
method: GET
- namespace: confluence
type: http
baseUri: "https://boeing.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: pages
path: "/content"
operations:
- name: create-page
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Runs regression tests via Azure DevOps, collects results, publishes a Confluence report, and notifies the QA team via Teams.
naftiko: "0.5"
info:
label: "Automated Regression Test Report"
description: "Runs regression tests via Azure DevOps, collects results, publishes a Confluence report, and notifies the QA team via Teams."
tags:
- devops
- azure-devops
- confluence
- microsoft-teams
- testing
- quality
capability:
exposes:
- type: mcp
namespace: devops-ops
port: 8080
tools:
- name: generate-regression-report
description: "Given a pipeline ID and build number, trigger the regression test suite in Azure DevOps, publish results to Confluence, and notify the QA team via Teams. Use after major code merges."
inputParameters:
- name: pipeline_id
in: body
type: string
description: "Azure DevOps pipeline ID."
- name: build_number
in: body
type: string
description: "Build number to test against."
steps:
- name: trigger-tests
type: call
call: "azure-devops.run-pipeline"
with:
pipelineId: "{{pipeline_id}}"
templateParameters: "buildNumber={{build_number}}"
- name: publish-report
type: call
call: "confluence.create-page"
with:
space_key: "QA"
title: "Regression Report: Build {{build_number}}"
body: "Pipeline: {{pipeline_id}} | Build: {{build_number}} | Run: {{trigger-tests.id}}"
- name: notify-qa
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_qa_channel_id"
text: "REGRESSION TESTS: Build {{build_number}} | Run: {{trigger-tests.id}} | Report: {{publish-report.url}}"
consumes:
- namespace: azure-devops
type: http
baseUri: "https://dev.azure.com/boeing"
authentication:
type: basic
username: "$secrets.azure_devops_user"
password: "$secrets.azure_devops_pat"
resources:
- name: pipelines
path: "/_apis/pipelines/{{pipelineId}}/runs"
inputParameters:
- name: pipelineId
in: path
operations:
- name: run-pipeline
method: POST
- namespace: confluence
type: http
baseUri: "https://boeing.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: pages
path: "/content"
operations:
- name: create-page
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Reconciles timecards by comparing Workday time entries against SAP project hours, flagging discrepancies in Jira, and notifying managers via Teams.
naftiko: "0.5"
info:
label: "Automated Timecard Reconciliation"
description: "Reconciles timecards by comparing Workday time entries against SAP project hours, flagging discrepancies in Jira, and notifying managers via Teams."
tags:
- hr
- workday
- sap
- jira
- microsoft-teams
- finance
capability:
exposes:
- type: mcp
namespace: hr-ops
port: 8080
tools:
- name: reconcile-timecards
description: "Given a cost center and pay period, compare Workday time entries against SAP project hours, create Jira tickets for discrepancies, and notify managers via Teams. Use during biweekly payroll processing."
inputParameters:
- name: cost_center
in: body
type: string
description: "Cost center code, e.g. 'CC-787-ASSEMBLY'."
- name: pay_period
in: body
type: string
description: "Pay period identifier, e.g. '2026-PP06'."
steps:
- name: get-workday-hours
type: call
call: "workday.get-time-entries"
with:
cost_center: "{{cost_center}}"
period: "{{pay_period}}"
- name: get-sap-hours
type: call
call: "sap-s4.get-project-hours"
with:
CostCenter: "{{cost_center}}"
Period: "{{pay_period}}"
- name: create-discrepancy-ticket
type: call
call: "jira.create-issue"
with:
project_key: "HR"
issuetype: "Task"
summary: "Timecard Reconciliation: {{cost_center}} - {{pay_period}}"
description: "Workday hours: {{get-workday-hours.total}} | SAP hours: {{get-sap-hours.total}} | Variance: {{get-workday-hours.variance}}"
- name: notify-managers
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_hr_channel_id"
text: "TIMECARD RECON: {{cost_center}} | {{pay_period}} | Workday: {{get-workday-hours.total}}h | SAP: {{get-sap-hours.total}}h | Jira: {{create-discrepancy-ticket.key}}"
consumes:
- namespace: workday
type: http
baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/boeing"
authentication:
type: bearer
token: "$secrets.workday_bearer_token"
resources:
- name: time-entries
path: "/workers/timeEntries"
operations:
- name: get-time-entries
method: GET
- namespace: sap-s4
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_COSTCENTER_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: project-hours
path: "/A_CostCenterActivityType"
operations:
- name: get-project-hours
method: GET
- namespace: jira
type: http
baseUri: "https://boeing.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
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Queries Microsoft Graph for all users currently assigned privileged Azure AD roles, exports the list to Snowflake, and posts a summary to the security Microsoft Teams channel for monthly review.
naftiko: "0.5"
info:
label: "Azure AD Privileged Role Audit"
description: "Queries Microsoft Graph for all users currently assigned privileged Azure AD roles, exports the list to Snowflake, and posts a summary to the security Microsoft Teams channel for monthly review."
tags:
- security
- iam
- microsoft-graph
- snowflake
- microsoft-teams
- privileged-access
- audit
capability:
exposes:
- type: mcp
namespace: priv-access-audit
port: 8080
tools:
- name: audit-privileged-roles
description: "Given an Azure AD role definition name and audit date, retrieve all users assigned to that privileged role from Microsoft Graph, write the roster to Snowflake, and post a summary count to the security Microsoft Teams channel. Use monthly for privileged access management reviews."
inputParameters:
- name: role_display_name
in: body
type: string
description: "The Azure AD role display name to audit, e.g. 'Global Administrator' or 'Privileged Role Administrator'."
- name: audit_date
in: body
type: string
description: "The audit date in ISO 8601 format."
steps:
- name: list-role-members
type: call
call: "msgraph.list-role-members"
with:
role_display_name: "{{role_display_name}}"
- name: write-audit-record
type: call
call: "snowflake.insert-role-audit"
with:
role_name: "{{role_display_name}}"
audit_date: "{{audit_date}}"
member_count: "{{list-role-members.total_count}}"
- name: notify-security
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_security_channel_id"
text: "Privileged Role Audit: {{role_display_name}} | Members: {{list-role-members.total_count}} | Date: {{audit_date}} | Written to Snowflake."
consumes:
- namespace: msgraph
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: role-members
path: "/directoryRoles"
inputParameters:
- name: role_display_name
in: query
operations:
- name: list-role-members
method: GET
- namespace: snowflake
type: http
baseUri: "https://boeing.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_bearer_token"
resources:
- name: role-audits
path: "/statements"
operations:
- name: insert-role-audit
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Analyzes Azure spending anomalies, generates optimization recommendations, logs them in ServiceNow, and notifies the cloud governance team via Teams.
naftiko: "0.5"
info:
label: "Azure Cost Optimization Recommendation"
description: "Analyzes Azure spending anomalies, generates optimization recommendations, logs them in ServiceNow, and notifies the cloud governance team via Teams."
tags:
- cloud
- microsoft-azure
- servicenow
- microsoft-teams
- cost-optimization
- devops
capability:
exposes:
- type: mcp
namespace: cloud-ops
port: 8080
tools:
- name: analyze-azure-costs
description: "Given a subscription ID and reporting month, analyze Azure spending against budget, generate optimization recommendations, log them in ServiceNow, and notify the cloud governance team via Teams. Use for monthly cloud cost reviews."
inputParameters:
- name: subscription_id
in: body
type: string
description: "Azure subscription ID."
- name: reporting_month
in: body
type: string
description: "Reporting month, e.g. '2026-03'."
steps:
- name: get-cost-analysis
type: call
call: "azure.get-cost-management"
with:
subscriptionId: "{{subscription_id}}"
timeframe: "{{reporting_month}}"
- name: log-recommendations
type: call
call: "servicenow.create-record"
with:
table: "u_cloud_cost_recommendations"
subscription: "{{subscription_id}}"
month: "{{reporting_month}}"
savings_potential: "{{get-cost-analysis.savings_potential}}"
- name: notify-governance
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_cloud_governance_channel_id"
text: "AZURE COST REVIEW: Subscription {{subscription_id}} | {{reporting_month}} | Spend: {{get-cost-analysis.total_spend}} | Savings: {{get-cost-analysis.savings_potential}} | SNOW: {{log-recommendations.sys_id}}"
consumes:
- namespace: azure
type: http
baseUri: "https://management.azure.com"
authentication:
type: bearer
token: "$secrets.azure_management_token"
resources:
- name: cost-management
path: "/subscriptions/{{subscriptionId}}/providers/Microsoft.CostManagement/query"
inputParameters:
- name: subscriptionId
in: path
operations:
- name: get-cost-management
method: POST
- namespace: servicenow
type: http
baseUri: "https://boeing.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_username"
password: "$secrets.servicenow_password"
resources:
- name: records
path: "/table/{{table}}"
inputParameters:
- name: table
in: path
operations:
- name: create-record
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Retrieves the current build status for a pipeline in Azure DevOps by build ID.
naftiko: "0.5"
info:
label: "Azure DevOps Build Status Lookup"
description: "Retrieves the current build status for a pipeline in Azure DevOps by build ID."
tags:
- devops
- azure-devops
- ci-cd
- lookup
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: get-build-status
description: "Given an Azure DevOps build ID, retrieve the build status including result, start time, and source branch. Use when engineers need to check pipeline execution results."
inputParameters:
- name: build_id
in: body
type: string
description: "Azure DevOps build ID, e.g. '48231'."
call: "azure-devops.get-build"
with:
buildId: "{{build_id}}"
outputParameters:
- name: result
type: string
mapping: "$.result"
- name: status
type: string
mapping: "$.status"
- name: source_branch
type: string
mapping: "$.sourceBranch"
consumes:
- namespace: azure-devops
type: http
baseUri: "https://dev.azure.com/boeing"
authentication:
type: basic
username: "$secrets.azure_devops_user"
password: "$secrets.azure_devops_pat"
resources:
- name: builds
path: "/_apis/build/builds/{{buildId}}"
inputParameters:
- name: buildId
in: path
operations:
- name: get-build
method: GET
Accepts an infrastructure provisioning request, validates the requester's identity in Okta, and deploys a tagged Azure resource group via the Azure Resource Manager API.
naftiko: "0.5"
info:
label: "Azure Resource Provisioning Request"
description: "Accepts an infrastructure provisioning request, validates the requester's identity in Okta, and deploys a tagged Azure resource group via the Azure Resource Manager API."
tags:
- cloud
- infrastructure
- azure
- okta
- provisioning
capability:
exposes:
- type: mcp
namespace: cloud-provisioning
port: 8080
tools:
- name: provision-azure-resource-group
description: "Given a requester email, resource group name, Azure region, and cost center tag, verify the requester's Okta identity, then create a tagged Azure resource group in the specified subscription. Use when teams request new Azure environments for projects or workloads."
inputParameters:
- name: requester_email
in: body
type: string
description: "The email of the person requesting the resource group."
- name: resource_group_name
in: body
type: string
description: "The desired Azure resource group name, following Boeing naming conventions."
- name: azure_region
in: body
type: string
description: "The Azure region, e.g. 'eastus2' or 'westus'."
- name: cost_center
in: body
type: string
description: "The Boeing cost center code for resource tagging, e.g. 'CC-1234'."
steps:
- name: verify-requester
type: call
call: "okta.get-user"
with:
login: "{{requester_email}}"
- name: create-rg
type: call
call: "azure-arm.create-resource-group"
with:
resource_group_name: "{{resource_group_name}}"
location: "{{azure_region}}"
cost_center_tag: "{{cost_center}}"
owner_tag: "{{requester_email}}"
consumes:
- namespace: okta
type: http
baseUri: "https://boeing.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: users
path: "/users/{login}"
inputParameters:
- name: login
in: path
operations:
- name: get-user
method: GET
- namespace: azure-arm
type: http
baseUri: "https://management.azure.com/subscriptions"
authentication:
type: bearer
token: "$secrets.azure_bearer_token"
resources:
- name: resource-groups
path: "/{subscriptionId}/resourcegroups/{resource_group_name}"
inputParameters:
- name: subscriptionId
in: path
- name: resource_group_name
in: path
operations:
- name: create-resource-group
method: PUT
Queries Azure Update Manager for all VMs in a subscription that are non-compliant with the latest patch baseline and writes a compliance summary to Snowflake.
naftiko: "0.5"
info:
label: "Azure VM Patch Compliance Reporter"
description: "Queries Azure Update Manager for all VMs in a subscription that are non-compliant with the latest patch baseline and writes a compliance summary to Snowflake."
tags:
- cloud
- patch-management
- azure
- snowflake
- compliance
- security
capability:
exposes:
- type: mcp
namespace: patch-compliance
port: 8080
tools:
- name: report-vm-patch-compliance
description: "Given an Azure subscription ID and a Snowflake target table name, query Azure Update Manager for all VMs with outstanding patches, and write the non-compliant VM list to Snowflake for security reporting. Use monthly or before compliance audit deadlines."
inputParameters:
- name: subscription_id
in: body
type: string
description: "The Azure subscription ID to audit for patch compliance."
- name: report_date
in: body
type: string
description: "The compliance report date in ISO 8601 format."
steps:
- name: get-noncompliant-vms
type: call
call: "azure-policy.list-noncompliant-resources"
with:
subscription_id: "{{subscription_id}}"
policy_definition: "patch-compliance"
- name: write-compliance-report
type: call
call: "snowflake.insert-patch-report"
with:
subscription_id: "{{subscription_id}}"
report_date: "{{report_date}}"
noncompliant_count: "{{get-noncompliant-vms.total_count}}"
consumes:
- namespace: azure-policy
type: http
baseUri: "https://management.azure.com/subscriptions"
authentication:
type: bearer
token: "$secrets.azure_bearer_token"
resources:
- name: policy-states
path: "/{subscription_id}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults"
inputParameters:
- name: subscription_id
in: path
- name: policy_definition
in: query
operations:
- name: list-noncompliant-resources
method: POST
- namespace: snowflake
type: http
baseUri: "https://boeing.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_bearer_token"
resources:
- name: patch-reports
path: "/statements"
operations:
- name: insert-patch-report
method: POST
When a GitHub Actions pipeline fails on a protected branch, opens a Jira bug, creates a Datadog event marker, and posts an alert to Microsoft Teams.
naftiko: "0.5"
info:
label: "CI/CD Pipeline Failure Incident Chain"
description: "When a GitHub Actions pipeline fails on a protected branch, opens a Jira bug, creates a Datadog event marker, and posts an alert to Microsoft Teams."
tags:
- devops
- incident-response
- github
- jira
- datadog
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: devops-ops
port: 8080
tools:
- name: handle-pipeline-failure
description: "Given a GitHub Actions workflow run ID, repository name, branch, and failing job name, open a Jira bug, create a Datadog event for observability, and alert the engineering Microsoft Teams channel. Invoke when a protected-branch pipeline fails."
inputParameters:
- name: repo_name
in: body
type: string
description: "The GitHub repository full name, e.g. 'boeing/avionics-platform'."
- name: run_id
in: body
type: string
description: "The GitHub Actions workflow run ID."
- name: branch
in: body
type: string
description: "The branch on which the failure occurred."
- name: job_name
in: body
type: string
description: "The name of the failing job."
steps:
- name: create-bug
type: call
call: "jira.create-issue"
with:
project_key: "BENG"
issuetype: "Bug"
summary: "[CI Failure] {{repo_name}} / {{branch}} — {{job_name}}"
description: "Workflow run: {{run_id}}\nBranch: {{branch}}\nJob: {{job_name}}"
- name: create-dd-event
type: call
call: "datadog.create-event"
with:
title: "CI Failure: {{repo_name}} {{branch}}"
text: "Job {{job_name}} failed. Jira: {{create-bug.key}}"
alert_type: "error"
- name: alert-teams
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_engineering_channel_id"
text: "Pipeline failure: {{repo_name}} | Branch: {{branch}} | Job: {{job_name}} | Jira: {{create-bug.key}} | DD Event: {{create-dd-event.id}}"
consumes:
- namespace: jira
type: http
baseUri: "https://boeing.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_username"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- namespace: datadog
type: http
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: events
path: "/events"
operations:
- name: create-event
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
When Azure Cost Management detects a spending anomaly, retrieves the anomaly details, creates a Jira task for the cloud team, and posts a summary to Microsoft Teams.
naftiko: "0.5"
info:
label: "Cloud Cost Anomaly Responder"
description: "When Azure Cost Management detects a spending anomaly, retrieves the anomaly details, creates a Jira task for the cloud team, and posts a summary to Microsoft Teams."
tags:
- cloud
- cost-management
- azure
- jira
- microsoft-teams
- finops
capability:
exposes:
- type: mcp
namespace: cloud-finops
port: 8080
tools:
- name: handle-cost-anomaly
description: "Given an Azure subscription ID and anomaly alert name, retrieve cost anomaly details from Azure Cost Management, create a Jira task for the cloud engineering team, and post a budget alert to the Microsoft Teams FinOps channel. Use when Azure detects an unexpected spending spike."
inputParameters:
- name: subscription_id
in: body
type: string
description: "The Azure subscription ID showing the cost anomaly."
- name: alert_name
in: body
type: string
description: "The Azure Cost Management alert name or rule that fired."
steps:
- name: get-alert
type: call
call: "azure-cost.get-alert"
with:
subscription_id: "{{subscription_id}}"
alert_name: "{{alert_name}}"
- name: create-task
type: call
call: "jira.create-issue"
with:
project_key: "CLOUD"
issuetype: "Task"
summary: "Cost Anomaly: {{alert_name}} in {{subscription_id}}"
description: "Azure anomaly detected. Alert: {{alert_name}}. Subscription: {{subscription_id}}. Anomaly value: {{get-alert.amount}} {{get-alert.currency}}."
- name: notify-finops
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_finops_channel_id"
text: "Cost Anomaly Alert: {{alert_name}} | Subscription: {{subscription_id}} | Amount: {{get-alert.amount}} {{get-alert.currency}} | Jira: {{create-task.key}}"
consumes:
- namespace: azure-cost
type: http
baseUri: "https://management.azure.com/subscriptions"
authentication:
type: bearer
token: "$secrets.azure_bearer_token"
resources:
- name: alerts
path: "/{subscription_id}/providers/Microsoft.CostManagement/alerts/{alert_name}"
inputParameters:
- name: subscription_id
in: path
- name: alert_name
in: path
operations:
- name: get-alert
method: GET
- namespace: jira
type: http
baseUri: "https://boeing.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_username"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Initiates a compliance document review by pulling the document from SharePoint, creating a Jira review task, and notifying reviewers via Teams.
naftiko: "0.5"
info:
label: "Compliance Document Review Cycle"
description: "Initiates a compliance document review by pulling the document from SharePoint, creating a Jira review task, and notifying reviewers via Teams."
tags:
- compliance
- sharepoint
- jira
- microsoft-teams
- quality
capability:
exposes:
- type: mcp
namespace: compliance-ops
port: 8080
tools:
- name: initiate-document-review
description: "Given a SharePoint document ID and review deadline, retrieve the document metadata, create a Jira review task, and notify designated reviewers via Teams. Use when a compliance document is due for periodic review."
inputParameters:
- name: document_id
in: body
type: string
description: "SharePoint document ID for the compliance document."
- name: review_deadline
in: body
type: string
description: "Review deadline in ISO 8601 format."
- name: reviewer_group
in: body
type: string
description: "Teams channel or group to notify for the review."
steps:
- name: get-document
type: call
call: "sharepoint.get-document"
with:
item_id: "{{document_id}}"
- name: create-review-task
type: call
call: "jira.create-issue"
with:
project_key: "COMP"
issuetype: "Task"
summary: "Document Review: {{get-document.Title}}"
description: "Review deadline: {{review_deadline}} | Document: {{get-document.Title}} | Version: {{get-document.UIVersionLabel}}"
duedate: "{{review_deadline}}"
- name: notify-reviewers
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_compliance_channel_id"
text: "REVIEW REQUIRED: {{get-document.Title}} | Deadline: {{review_deadline}} | Jira: {{create-review-task.key}}"
consumes:
- namespace: sharepoint
type: http
baseUri: "https://boeing.sharepoint.com/_api"
authentication:
type: bearer
token: "$secrets.sharepoint_access_token"
resources:
- name: documents
path: "/web/lists/getbytitle('ComplianceDocs')/items({{item_id}})"
inputParameters:
- name: item_id
in: path
operations:
- name: get-document
method: GET
- namespace: jira
type: http
baseUri: "https://boeing.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
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Monitors composite layup process parameters via Datadog, logs deviations in SAP QM, and alerts the manufacturing engineering team via Teams when process limits are exceeded.
naftiko: "0.5"
info:
label: "Composite Layup Process Monitoring"
description: "Monitors composite layup process parameters via Datadog, logs deviations in SAP QM, and alerts the manufacturing engineering team via Teams when process limits are exceeded."
tags:
- manufacturing
- quality
- datadog
- sap
- microsoft-teams
- aerospace
capability:
exposes:
- type: mcp
namespace: manufacturing-ops
port: 8080
tools:
- name: monitor-composite-layup
description: "Given a work center, part number, and layup operation, retrieve process parameters from Datadog, log any deviations in SAP QM, and alert manufacturing engineering via Teams. Use for real-time composite manufacturing process control."
inputParameters:
- name: work_center
in: body
type: string
description: "Work center identifier, e.g. 'COMPOSITE-BAY-3'."
- name: part_number
in: body
type: string
description: "Part number being manufactured."
- name: operation
in: body
type: string
description: "Layup operation step, e.g. 'autoclave-cure-cycle-1'."
steps:
- name: get-process-params
type: call
call: "datadog.query-metrics"
with:
query: "avg:composite.{{operation}}{work_center:{{work_center}}}"
from: "-2h"
- name: log-deviation
type: call
call: "sap-qm.create-quality-record"
with:
work_center: "{{work_center}}"
material: "{{part_number}}"
operation: "{{operation}}"
values: "{{get-process-params.series}}"
- name: alert-engineering
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_mfg_eng_channel_id"
text: "COMPOSITE PROCESS: {{work_center}} | Part: {{part_number}} | Op: {{operation}} | QM Record: {{log-deviation.number}}"
consumes:
- namespace: datadog
type: http
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: metrics
path: "/query"
operations:
- name: query-metrics
method: GET
- namespace: sap-qm
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_INSPECTIONLOT_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: quality-records
path: "/A_InspectionLot"
operations:
- name: create-quality-record
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Searches Confluence for engineering specifications by keyword, returning matching page titles and links.
naftiko: "0.5"
info:
label: "Confluence Engineering Spec Search"
description: "Searches Confluence for engineering specifications by keyword, returning matching page titles and links."
tags:
- engineering
- confluence
- documentation
- search
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: search-engineering-specs
description: "Given a search keyword, query Confluence for engineering specification documents and return matching page titles, space keys, and links. Use when engineers need to find design or spec documents."
inputParameters:
- name: keyword
in: body
type: string
description: "Search keyword for engineering specs, e.g. '787 wing spar'."
call: "confluence.search-content"
with:
cql: "type=page AND space=ENG AND text~\"{{keyword}}\""
outputParameters:
- name: results
type: array
mapping: "$.results"
consumes:
- namespace: confluence
type: http
baseUri: "https://boeing.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: search
path: "/content/search"
inputParameters:
- name: cql
in: query
operations:
- name: search-content
method: GET
When a program milestone is completed in Jira, creates a SAP billing document, updates the Salesforce contract record, and notifies finance via Teams.
naftiko: "0.5"
info:
label: "Contract Milestone Billing Trigger"
description: "When a program milestone is completed in Jira, creates a SAP billing document, updates the Salesforce contract record, and notifies finance via Teams."
tags:
- finance
- jira
- sap
- salesforce
- microsoft-teams
- aerospace
capability:
exposes:
- type: mcp
namespace: finance-ops
port: 8080
tools:
- name: trigger-milestone-billing
description: "Given a Jira milestone issue key and contract number, create a SAP billing document, update the Salesforce contract milestone status, and notify the finance team via Teams. Use when a billable program milestone is completed."
inputParameters:
- name: milestone_issue_key
in: body
type: string
description: "Jira issue key for the completed milestone."
- name: contract_number
in: body
type: string
description: "Salesforce contract number."
- name: billing_amount
in: body
type: string
description: "Billing amount for the milestone."
steps:
- name: get-milestone-details
type: call
call: "jira.get-issue"
with:
issue_key: "{{milestone_issue_key}}"
- name: create-billing-doc
type: call
call: "sap-s4.create-billing-document"
with:
contract: "{{contract_number}}"
amount: "{{billing_amount}}"
reference: "{{milestone_issue_key}}"
- name: update-salesforce
type: call
call: "salesforce.update-contract-milestone"
with:
contract_number: "{{contract_number}}"
milestone: "{{get-milestone-details.fields.summary}}"
status: "Billed"
- name: notify-finance
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_finance_channel_id"
text: "MILESTONE BILLED: {{get-milestone-details.fields.summary}} | Contract: {{contract_number}} | Amount: {{billing_amount}} | SAP: {{create-billing-doc.BillingDocument}}"
consumes:
- namespace: jira
type: http
baseUri: "https://boeing.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
- namespace: sap-s4
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_BILLING_DOCUMENT_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: billing-documents
path: "/A_BillingDocument"
operations:
- name: create-billing-document
method: POST
- namespace: salesforce
type: http
baseUri: "https://boeing.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_access_token"
resources:
- name: contracts
path: "/sobjects/Contract_Milestone__c"
operations:
- name: update-contract-milestone
method: PATCH
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
When spare parts inventory drops below threshold in SAP, creates a purchase requisition, notifies procurement via Teams, and logs the event in ServiceNow.
naftiko: "0.5"
info:
label: "Critical Spare Parts Reorder Workflow"
description: "When spare parts inventory drops below threshold in SAP, creates a purchase requisition, notifies procurement via Teams, and logs the event in ServiceNow."
tags:
- supply-chain
- sap
- microsoft-teams
- servicenow
- procurement
- manufacturing
capability:
exposes:
- type: mcp
namespace: supply-chain-ops
port: 8080
tools:
- name: reorder-critical-spare
description: "Given a material number, plant code, and current stock level, create a SAP purchase requisition, log the reorder in ServiceNow, and notify procurement via Teams. Use when critical spare parts fall below safety stock."
inputParameters:
- name: material_number
in: body
type: string
description: "SAP material number for the spare part."
- name: plant_code
in: body
type: string
description: "SAP plant code."
- name: current_stock
in: body
type: string
description: "Current stock quantity."
steps:
- name: create-purchase-req
type: call
call: "sap-s4.create-purchase-requisition"
with:
Material: "{{material_number}}"
Plant: "{{plant_code}}"
RequestedQuantity: "100"
- name: log-in-servicenow
type: call
call: "servicenow.create-record"
with:
table: "u_reorder_log"
material: "{{material_number}}"
plant: "{{plant_code}}"
pr_number: "{{create-purchase-req.PurchaseRequisition}}"
- name: notify-procurement
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_procurement_channel_id"
text: "REORDER: {{material_number}} at {{plant_code}} | Stock: {{current_stock}} | PR: {{create-purchase-req.PurchaseRequisition}}"
consumes:
- namespace: sap-s4
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_PURCHASEREQ_PROCESS_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: purchase-requisitions
path: "/A_PurchaseRequisitionHeader"
operations:
- name: create-purchase-requisition
method: POST
- namespace: servicenow
type: http
baseUri: "https://boeing.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_username"
password: "$secrets.servicenow_password"
resources:
- name: records
path: "/table/{{table}}"
inputParameters:
- name: table
in: path
operations:
- name: create-record
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Syncs program status across Jira, SAP, and Salesforce, then publishes a consolidated status report to Confluence and notifies leadership via Teams.
naftiko: "0.5"
info:
label: "Cross-Functional Program Status Sync"
description: "Syncs program status across Jira, SAP, and Salesforce, then publishes a consolidated status report to Confluence and notifies leadership via Teams."
tags:
- project-management
- jira
- sap
- salesforce
- confluence
- microsoft-teams
- aerospace
capability:
exposes:
- type: mcp
namespace: program-ops
port: 8080
tools:
- name: sync-program-status
description: "Given an aircraft program name, pull status from Jira, SAP production orders, and Salesforce contracts, publish a Confluence status page, and notify leadership via Teams. Use for weekly program status reviews."
inputParameters:
- name: program_name
in: body
type: string
description: "Aircraft program name, e.g. '787 Dreamliner'."
- name: reporting_period
in: body
type: string
description: "Reporting period, e.g. 'Week 13 2026'."
steps:
- name: get-jira-status
type: call
call: "jira.search-issues"
with:
jql: "project = '{{program_name}}' AND status != Done"
- name: get-sap-production
type: call
call: "sap-s4.get-production-summary"
with:
program: "{{program_name}}"
- name: publish-status-page
type: call
call: "confluence.create-page"
with:
space_key: "{{program_name}}"
title: "Status Report: {{reporting_period}}"
body: "Jira Open Issues: {{get-jira-status.total}} | Production: {{get-sap-production.summary}}"
- name: notify-leadership
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_leadership_channel_id"
text: "PROGRAM STATUS: {{program_name}} | {{reporting_period}} | Open Issues: {{get-jira-status.total}} | Report: {{publish-status-page.url}}"
consumes:
- namespace: jira
type: http
baseUri: "https://boeing.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: search
path: "/search"
operations:
- name: search-issues
method: POST
- namespace: sap-s4
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_PRODUCTION_ORDER_2_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: production-summary
path: "/A_ProductionOrder_2"
operations:
- name: get-production-summary
method: GET
- namespace: confluence
type: http
baseUri: "https://boeing.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: pages
path: "/content"
operations:
- name: create-page
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Processes a customer complaint from Salesforce by creating a SAP quality notification, opening a Jira investigation ticket, and alerting the customer support team via Teams.
naftiko: "0.5"
info:
label: "Customer Complaint Resolution Workflow"
description: "Processes a customer complaint from Salesforce by creating a SAP quality notification, opening a Jira investigation ticket, and alerting the customer support team via Teams."
tags:
- quality
- salesforce
- sap
- jira
- microsoft-teams
- customer-support
capability:
exposes:
- type: mcp
namespace: quality-ops
port: 8080
tools:
- name: process-customer-complaint
description: "Given a Salesforce case number and complaint description, create a SAP quality notification, open a Jira investigation ticket, and alert the customer support team via Teams. Use when a customer complaint is received."
inputParameters:
- name: case_number
in: body
type: string
description: "Salesforce case number."
- name: complaint_description
in: body
type: string
description: "Description of the customer complaint."
- name: customer_name
in: body
type: string
description: "Customer name."
steps:
- name: create-quality-notification
type: call
call: "sap-s4.create-qn"
with:
notification_type: "Q3"
description: "Customer complaint: {{complaint_description}}"
reference: "{{case_number}}"
- name: create-investigation
type: call
call: "jira.create-issue"
with:
project_key: "QA"
issuetype: "Bug"
summary: "Customer Complaint: {{customer_name}} - {{case_number}}"
description: "SF Case: {{case_number}} | QN: {{create-quality-notification.number}} | {{complaint_description}}"
- name: alert-support
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_customer_support_channel_id"
text: "COMPLAINT: {{customer_name}} | Case: {{case_number}} | QN: {{create-quality-notification.number}} | Jira: {{create-investigation.key}}"
consumes:
- namespace: sap-s4
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_QUALITYNOTIFICATION_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: quality-notifications
path: "/A_QualityNotification"
operations:
- name: create-qn
method: POST
- namespace: jira
type: http
baseUri: "https://boeing.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
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Responds to a cybersecurity alert from Splunk by creating a ServiceNow security incident, disabling the affected Okta account, and alerting the security team via Teams.
naftiko: "0.5"
info:
label: "Cybersecurity Incident Response Chain"
description: "Responds to a cybersecurity alert from Splunk by creating a ServiceNow security incident, disabling the affected Okta account, and alerting the security team via Teams."
tags:
- security
- splunk
- servicenow
- okta
- microsoft-teams
- incident-response
capability:
exposes:
- type: mcp
namespace: security-ops
port: 8080
tools:
- name: handle-cyber-incident
description: "Given a Splunk alert ID and affected user email, create a ServiceNow security incident, suspend the Okta account, and alert the security operations team via Teams. Use when a critical cybersecurity event is detected."
inputParameters:
- name: alert_id
in: body
type: string
description: "Splunk alert identifier."
- name: affected_user
in: body
type: string
description: "Email of the affected user account."
- name: threat_description
in: body
type: string
description: "Description of the detected threat."
steps:
- name: create-security-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "SECURITY: {{threat_description}}"
urgency: "1"
impact: "1"
category: "security"
description: "Splunk Alert: {{alert_id}} | User: {{affected_user}} | {{threat_description}}"
- name: suspend-okta-account
type: call
call: "okta.suspend-user"
with:
login: "{{affected_user}}"
- name: alert-security-team
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_security_channel_id"
text: "CYBER INCIDENT: {{threat_description}} | User: {{affected_user}} | INC: {{create-security-incident.number}} | Okta suspended"
consumes:
- namespace: servicenow
type: http
baseUri: "https://boeing.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_username"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- namespace: okta
type: http
baseUri: "https://boeing.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "SSWS $secrets.okta_api_token"
placement: header
resources:
- name: users
path: "/users/{{login}}/lifecycle/suspend"
inputParameters:
- name: login
in: path
operations:
- name: suspend-user
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Monitors Snowflake data ingestion quality, flags anomalies in Datadog, creates a Jira data quality ticket, and alerts the data engineering team via Teams.
naftiko: "0.5"
info:
label: "Data Lake Ingestion Quality Monitor"
description: "Monitors Snowflake data ingestion quality, flags anomalies in Datadog, creates a Jira data quality ticket, and alerts the data engineering team via Teams."
tags:
- data-engineering
- snowflake
- datadog
- jira
- microsoft-teams
- analytics
capability:
exposes:
- type: mcp
namespace: data-ops
port: 8080
tools:
- name: monitor-ingestion-quality
description: "Given a Snowflake database, schema, and table, check row counts and null rates, flag anomalies in Datadog, create a Jira ticket if issues are found, and notify the data engineering team. Use for daily data quality checks."
inputParameters:
- name: database_name
in: body
type: string
description: "Snowflake database name."
- name: schema_name
in: body
type: string
description: "Snowflake schema name."
- name: table_name
in: body
type: string
description: "Snowflake table name."
steps:
- name: check-data-quality
type: call
call: "snowflake.execute-query"
with:
warehouse: "DATA_QUALITY_WH"
query: "CALL sp_check_data_quality('{{database_name}}', '{{schema_name}}', '{{table_name}}');"
- name: create-dq-ticket
type: call
call: "jira.create-issue"
with:
project_key: "DATA"
issuetype: "Bug"
summary: "DQ Issue: {{database_name}}.{{schema_name}}.{{table_name}}"
description: "Quality check results: {{check-data-quality.results}}"
- name: notify-data-team
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_data_eng_channel_id"
text: "DATA QUALITY: {{database_name}}.{{schema_name}}.{{table_name}} | Jira: {{create-dq-ticket.key}} | {{check-data-quality.summary}}"
consumes:
- namespace: snowflake
type: http
baseUri: "https://boeing.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: queries
path: "/statements"
operations:
- name: execute-query
method: POST
- namespace: jira
type: http
baseUri: "https://boeing.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
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
When Datadog detects an anomaly on a production metric, creates a Jira investigation task with full metric context and assigns it to the on-call engineer.
naftiko: "0.5"
info:
label: "Datadog Anomaly Detection to Jira"
description: "When Datadog detects an anomaly on a production metric, creates a Jira investigation task with full metric context and assigns it to the on-call engineer."
tags:
- observability
- anomaly-detection
- datadog
- jira
- incident-response
capability:
exposes:
- type: mcp
namespace: anomaly-ops
port: 8080
tools:
- name: handle-metric-anomaly
description: "Given a Datadog alert ID, retrieve the anomaly details and impacted metric from Datadog, then create a Jira investigation task in the SRE project with full context including metric values, scope, and Datadog alert URL. Use when Datadog ML-based anomaly detection fires on a production KPI."
inputParameters:
- name: alert_id
in: body
type: string
description: "The Datadog alert event ID for the anomaly, e.g. '5123456789012345678'."
- name: metric_name
in: body
type: string
description: "The name of the metric that triggered the anomaly, e.g. 'aws.ec2.cpuutilization'."
- name: scope
in: body
type: string
description: "The scope or tags of the impacted resources, e.g. 'env:prod,service:flight-data-api'."
steps:
- name: get-alert-details
type: call
call: "datadog.get-event"
with:
event_id: "{{alert_id}}"
- name: create-investigation
type: call
call: "jira.create-issue"
with:
project_key: "SRE"
issuetype: "Task"
summary: "Metric Anomaly: {{metric_name}} | {{scope}}"
description: "Datadog anomaly detected on {{metric_name}}.\nScope: {{scope}}\nAlert ID: {{alert_id}}\nTitle: {{get-alert-details.title}}\nTime: {{get-alert-details.date_happened}}"
consumes:
- namespace: datadog
type: http
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: events
path: "/events/{event_id}"
inputParameters:
- name: event_id
in: path
operations:
- name: get-event
method: GET
- namespace: jira
type: http
baseUri: "https://boeing.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_username"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
When a Datadog monitor fires a critical infrastructure alert, automatically creates a P1 incident in ServiceNow and escalates via Microsoft Teams to the on-call engineer.
naftiko: "0.5"
info:
label: "Datadog Infrastructure Alert to ServiceNow"
description: "When a Datadog monitor fires a critical infrastructure alert, automatically creates a P1 incident in ServiceNow and escalates via Microsoft Teams to the on-call engineer."
tags:
- itsm
- incident-response
- datadog
- servicenow
- microsoft-teams
- observability
capability:
exposes:
- type: mcp
namespace: infra-ops
port: 8080
tools:
- name: handle-infra-alert
description: "Given a Datadog monitor ID, alert title, and severity, look up monitor details from Datadog, create a P1 or P2 ServiceNow incident with full context, and post an escalation message to the Microsoft Teams on-call channel. Use when Datadog fires a critical or high-severity alert against Boeing production infrastructure."
inputParameters:
- name: monitor_id
in: body
type: string
description: "The Datadog monitor ID that fired, e.g. '123456789'."
- name: alert_title
in: body
type: string
description: "The human-readable alert title from Datadog."
- name: severity
in: body
type: string
description: "Alert severity: 'critical' or 'high'."
steps:
- name: get-monitor
type: call
call: "datadog.get-monitor"
with:
monitor_id: "{{monitor_id}}"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
urgency: "1"
impact: "1"
short_description: "INFRA ALERT: {{alert_title}}"
description: "Datadog monitor {{monitor_id}} fired. Severity: {{severity}}. Monitor name: {{get-monitor.name}}. Query: {{get-monitor.query}}"
- name: escalate-teams
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_oncall_channel_id"
text: "P1 Incident created: {{create-incident.number}} — {{alert_title}} | Datadog Monitor: {{monitor_id}}"
consumes:
- namespace: datadog
type: http
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: monitors
path: "/monitor/{monitor_id}"
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
- namespace: servicenow
type: http
baseUri: "https://boeing.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_username"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Retrieves current health status of a monitored service from Datadog by service name.
naftiko: "0.5"
info:
label: "Datadog Service Health Check"
description: "Retrieves current health status of a monitored service from Datadog by service name."
tags:
- monitoring
- datadog
- health-check
- operations
capability:
exposes:
- type: mcp
namespace: monitoring
port: 8080
tools:
- name: get-service-health
description: "Given a Datadog service name, retrieve the current health status including uptime, error rate, and active alerts. Use for quick service health verification."
inputParameters:
- name: service_name
in: body
type: string
description: "Datadog service name, e.g. 'flight-systems-api'."
call: "datadog.get-service-summary"
with:
service: "{{service_name}}"
outputParameters:
- name: status
type: string
mapping: "$.data.attributes.status"
- name: error_rate
type: string
mapping: "$.data.attributes.error_rate"
consumes:
- namespace: datadog
type: http
baseUri: "https://api.datadoghq.com/api/v2"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: services
path: "/services/definitions/{{service}}"
inputParameters:
- name: service
in: path
operations:
- name: get-service-summary
method: GET
Retrieves current SLO status for all tagged Boeing production services from Datadog and posts a weekly compliance summary to a Snowflake reporting table.
naftiko: "0.5"
info:
label: "Datadog SLO Compliance Report"
description: "Retrieves current SLO status for all tagged Boeing production services from Datadog and posts a weekly compliance summary to a Snowflake reporting table."
tags:
- observability
- slo
- datadog
- snowflake
- reporting
capability:
exposes:
- type: mcp
namespace: slo-reporting
port: 8080
tools:
- name: digest-slo-compliance
description: "Given a Datadog SLO tag filter (e.g. 'env:production,team:platform') and a reporting period, retrieve all matching SLOs with their current status and error budget from Datadog, then write the compliance summary to Snowflake for BI reporting. Use for weekly SLO reviews."
inputParameters:
- name: tag_filter
in: body
type: string
description: "Datadog tag filter string for scoping SLOs, e.g. 'env:production,team:avionics'."
- name: report_date
in: body
type: string
description: "The date for the compliance report in ISO 8601 format."
steps:
- name: get-slos
type: call
call: "datadog.list-slos"
with:
tags_query: "{{tag_filter}}"
- name: write-report
type: call
call: "snowflake.insert-slo-report"
with:
report_date: "{{report_date}}"
tag_filter: "{{tag_filter}}"
slo_count: "{{get-slos.total_count}}"
consumes:
- namespace: datadog
type: http
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: slos
path: "/slo"
inputParameters:
- name: tags_query
in: query
operations:
- name: list-slos
method: GET
- namespace: snowflake
type: http
baseUri: "https://boeing.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_bearer_token"
resources:
- name: slo-reports
path: "/statements"
operations:
- name: insert-slo-report
method: POST
Provisions building badge access by syncing employee data from Workday, creating an access request in ServiceNow, and confirming via Teams.
naftiko: "0.5"
info:
label: "Employee Badge Access Provisioning"
description: "Provisions building badge access by syncing employee data from Workday, creating an access request in ServiceNow, and confirming via Teams."
tags:
- security
- workday
- servicenow
- microsoft-teams
- access-management
capability:
exposes:
- type: mcp
namespace: security-ops
port: 8080
tools:
- name: provision-badge-access
description: "Given an employee ID and requested facility, retrieve employee data from Workday, create a ServiceNow access request, and notify security via Teams. Use when new or transferred employees need building access."
inputParameters:
- name: employee_id
in: body
type: string
description: "Workday employee ID."
- name: facility_code
in: body
type: string
description: "Facility code for badge access."
- name: access_level
in: body
type: string
description: "Access level, e.g. 'general', 'restricted', 'classified'."
steps:
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{employee_id}}"
- name: create-access-request
type: call
call: "servicenow.create-request"
with:
short_description: "Badge Access: {{get-employee.Name}} to {{facility_code}}"
description: "Employee: {{get-employee.Name}} | Facility: {{facility_code}} | Level: {{access_level}} | Department: {{get-employee.Organization.Name}}"
category: "access"
- name: notify-security
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_security_channel_id"
text: "BADGE ACCESS REQUEST: {{get-employee.Name}} | Facility: {{facility_code}} | Level: {{access_level}} | SNOW: {{create-access-request.number}}"
consumes:
- namespace: workday
type: http
baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/boeing"
authentication:
type: bearer
token: "$secrets.workday_bearer_token"
resources:
- name: workers
path: "/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- namespace: servicenow
type: http
baseUri: "https://boeing.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_username"
password: "$secrets.servicenow_password"
resources:
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
When an employee separation is recorded in Workday, disables the Microsoft 365 account, revokes Okta sessions, and creates a ServiceNow offboarding task to track hardware retrieval.
naftiko: "0.5"
info:
label: "Employee Offboarding Workflow"
description: "When an employee separation is recorded in Workday, disables the Microsoft 365 account, revokes Okta sessions, and creates a ServiceNow offboarding task to track hardware retrieval."
tags:
- hr
- offboarding
- workday
- okta
- microsoft-graph
- servicenow
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: trigger-offboarding
description: "Given a Workday employee ID and termination date, disable the Microsoft 365 account, expire all Okta sessions, and open a ServiceNow offboarding task for hardware and badge retrieval. Invoke when HR records a separation in Workday."
inputParameters:
- name: workday_employee_id
in: body
type: string
description: "The Workday worker ID for the departing employee."
- name: termination_date
in: body
type: string
description: "The effective termination date in ISO 8601 format."
steps:
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{workday_employee_id}}"
- name: disable-m365
type: call
call: "msgraph.disable-user"
with:
user_id: "{{get-employee.work_email}}"
- name: revoke-okta
type: call
call: "okta.clear-user-sessions"
with:
login: "{{get-employee.work_email}}"
- name: open-offboard-ticket
type: call
call: "servicenow.create-incident"
with:
category: "hr_offboarding"
short_description: "Offboarding: {{get-employee.full_name}} — term date {{termination_date}}"
assigned_group: "IT_Offboarding"
consumes:
- namespace: workday
type: http
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_bearer_token"
resources:
- name: workers
path: "/boeing/workers/{worker_id}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- namespace: msgraph
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: users
path: "/users/{user_id}"
inputParameters:
- name: user_id
in: path
operations:
- name: disable-user
method: PATCH
- namespace: okta
type: http
baseUri: "https://boeing.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: user-sessions
path: "/users/{login}/sessions"
inputParameters:
- name: login
in: path
operations:
- name: clear-user-sessions
method: DELETE
- namespace: servicenow
type: http
baseUri: "https://boeing.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_username"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
Checks safety training compliance by pulling training records from Workday, comparing against requirements in SAP EHS, and alerting managers via Teams for gaps.
naftiko: "0.5"
info:
label: "Employee Safety Training Compliance Check"
description: "Checks safety training compliance by pulling training records from Workday, comparing against requirements in SAP EHS, and alerting managers via Teams for gaps."
tags:
- safety
- workday
- sap
- microsoft-teams
- training
- compliance
capability:
exposes:
- type: mcp
namespace: safety-ops
port: 8080
tools:
- name: check-safety-training-compliance
description: "Given a department code and training requirement ID, pull training records from Workday, compare against SAP EHS requirements, and alert managers via Teams for any gaps. Use for periodic safety compliance reviews."
inputParameters:
- name: department_code
in: body
type: string
description: "Department code, e.g. 'MFG-EVERETT-787'."
- name: training_requirement_id
in: body
type: string
description: "SAP EHS training requirement identifier."
steps:
- name: get-training-records
type: call
call: "workday.get-training-completions"
with:
department: "{{department_code}}"
- name: get-requirements
type: call
call: "sap-ehs.get-training-requirements"
with:
requirement_id: "{{training_requirement_id}}"
department: "{{department_code}}"
- name: notify-managers
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_safety_channel_id"
text: "SAFETY TRAINING COMPLIANCE: {{department_code}} | Required: {{get-requirements.total}} | Completed: {{get-training-records.completed}} | Gaps: {{get-requirements.gaps}}"
consumes:
- namespace: workday
type: http
baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/boeing"
authentication:
type: bearer
token: "$secrets.workday_bearer_token"
resources:
- name: training
path: "/workers/training"
operations:
- name: get-training-completions
method: GET
- namespace: sap-ehs
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_EHS_TRAINING_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: requirements
path: "/A_TrainingRequirement"
operations:
- name: get-training-requirements
method: GET
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Processes an engineering change order by creating a Jira ECO ticket, updating the BOM in SAP, and notifying affected teams via Microsoft Teams.
naftiko: "0.5"
info:
label: "Engineering Change Order Process"
description: "Processes an engineering change order by creating a Jira ECO ticket, updating the BOM in SAP, and notifying affected teams via Microsoft Teams."
tags:
- engineering
- jira
- sap
- microsoft-teams
- manufacturing
- aerospace
capability:
exposes:
- type: mcp
namespace: engineering-ops
port: 8080
tools:
- name: process-engineering-change
description: "Given a change description, affected part number, and aircraft program, create a Jira ECO ticket, update the SAP BOM, and notify affected teams via Teams. Use when an engineering change is approved."
inputParameters:
- name: change_description
in: body
type: string
description: "Description of the engineering change."
- name: affected_part
in: body
type: string
description: "Part number affected by the change, e.g. 'P/N 787-FLAP-ASY-01'."
- name: aircraft_program
in: body
type: string
description: "Aircraft program, e.g. '787 Dreamliner'."
steps:
- name: create-eco-ticket
type: call
call: "jira.create-issue"
with:
project_key: "ECO"
issuetype: "Story"
summary: "ECO: {{affected_part}} - {{aircraft_program}}"
description: "{{change_description}} | Part: {{affected_part}} | Program: {{aircraft_program}}"
- name: update-sap-bom
type: call
call: "sap-s4.update-bom"
with:
material: "{{affected_part}}"
change_number: "{{create-eco-ticket.key}}"
description: "{{change_description}}"
- name: notify-affected-teams
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_engineering_channel_id"
text: "ECO ISSUED: {{create-eco-ticket.key}} | Part: {{affected_part}} | Program: {{aircraft_program}} | {{change_description}}"
consumes:
- namespace: jira
type: http
baseUri: "https://boeing.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
- namespace: sap-s4
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_BILL_OF_MATERIAL_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: bom
path: "/A_BillOfMaterial"
operations:
- name: update-bom
method: PATCH
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Orchestrates an engineering design review by collecting documents from Confluence, scheduling the review via Teams, and creating a Jira tracking issue.
naftiko: "0.5"
info:
label: "Engineering Design Review Orchestration"
description: "Orchestrates an engineering design review by collecting documents from Confluence, scheduling the review via Teams, and creating a Jira tracking issue."
tags:
- engineering
- confluence
- microsoft-teams
- jira
- aerospace
- design-review
capability:
exposes:
- type: mcp
namespace: engineering-ops
port: 8080
tools:
- name: orchestrate-design-review
description: "Given a design document Confluence page ID, review date, and reviewers list, gather the design docs, create a Jira review task, and notify reviewers via Teams. Use when scheduling formal design reviews."
inputParameters:
- name: confluence_page_id
in: body
type: string
description: "Confluence page ID of the design document."
- name: review_date
in: body
type: string
description: "Scheduled review date in ISO 8601 format."
- name: reviewers
in: body
type: string
description: "Comma-separated list of reviewer emails."
steps:
- name: get-design-doc
type: call
call: "confluence.get-page"
with:
page_id: "{{confluence_page_id}}"
- name: create-review-task
type: call
call: "jira.create-issue"
with:
project_key: "ENG"
issuetype: "Task"
summary: "Design Review: {{get-design-doc.title}}"
description: "Document: {{get-design-doc.title}} | Date: {{review_date}} | Reviewers: {{reviewers}}"
duedate: "{{review_date}}"
- name: notify-reviewers
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_engineering_channel_id"
text: "DESIGN REVIEW: {{get-design-doc.title}} | Date: {{review_date}} | Jira: {{create-review-task.key}} | Reviewers: {{reviewers}}"
consumes:
- namespace: confluence
type: http
baseUri: "https://boeing.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: pages
path: "/content/{{page_id}}"
inputParameters:
- name: page_id
in: path
operations:
- name: get-page
method: GET
- namespace: jira
type: http
baseUri: "https://boeing.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
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Collects environmental sensor data via Datadog, logs readings in ServiceNow, and alerts the EHS team via Teams when thresholds are exceeded.
naftiko: "0.5"
info:
label: "Environmental Compliance Monitoring"
description: "Collects environmental sensor data via Datadog, logs readings in ServiceNow, and alerts the EHS team via Teams when thresholds are exceeded."
tags:
- safety
- ehs
- datadog
- servicenow
- microsoft-teams
- manufacturing
capability:
exposes:
- type: mcp
namespace: ehs-ops
port: 8080
tools:
- name: monitor-environmental-compliance
description: "Given a facility code and sensor type, retrieve environmental readings from Datadog, log them in ServiceNow, and alert EHS if thresholds are exceeded. Use for continuous environmental compliance monitoring."
inputParameters:
- name: facility_code
in: body
type: string
description: "Facility code, e.g. 'FAC-EVERETT-747'."
- name: sensor_type
in: body
type: string
description: "Sensor type, e.g. 'VOC', 'particulate', 'noise'."
steps:
- name: get-sensor-data
type: call
call: "datadog.query-metrics"
with:
query: "avg:env.{{sensor_type}}.level{facility:{{facility_code}}}"
from: "-1h"
- name: log-reading
type: call
call: "servicenow.create-record"
with:
table: "u_environmental_readings"
facility: "{{facility_code}}"
sensor_type: "{{sensor_type}}"
value: "{{get-sensor-data.series[0].pointlist[-1][1]}}"
- name: alert-ehs
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_ehs_channel_id"
text: "ENV READING: {{facility_code}} | {{sensor_type}} | Value: {{get-sensor-data.series[0].pointlist[-1][1]}} | Record: {{log-reading.sys_id}}"
consumes:
- namespace: datadog
type: http
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: metrics
path: "/query"
operations:
- name: query-metrics
method: GET
- namespace: servicenow
type: http
baseUri: "https://boeing.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_username"
password: "$secrets.servicenow_password"
resources:
- name: records
path: "/table/{{table}}"
inputParameters:
- name: table
in: path
operations:
- name: create-record
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Verifies export control classification of a part by querying SAP, checking against a Salesforce compliance record, and logging the result in ServiceNow.
naftiko: "0.5"
info:
label: "Export Control Classification Check"
description: "Verifies export control classification of a part by querying SAP, checking against a Salesforce compliance record, and logging the result in ServiceNow."
tags:
- compliance
- sap
- salesforce
- servicenow
- export-control
- aerospace
capability:
exposes:
- type: mcp
namespace: compliance-ops
port: 8080
tools:
- name: check-export-classification
description: "Given a part number, retrieve the export control classification from SAP, verify against the Salesforce compliance database, and log the verification result in ServiceNow. Use before shipping parts internationally."
inputParameters:
- name: part_number
in: body
type: string
description: "Part number to verify, e.g. 'P/N 787-ENGINE-MOUNT-01'."
- name: destination_country
in: body
type: string
description: "Destination country code, e.g. 'GB'."
steps:
- name: get-sap-classification
type: call
call: "sap-s4.get-material-classification"
with:
material: "{{part_number}}"
- name: verify-compliance
type: call
call: "salesforce.check-export-compliance"
with:
part_number: "{{part_number}}"
eccn: "{{get-sap-classification.ECCN}}"
country: "{{destination_country}}"
- name: log-verification
type: call
call: "servicenow.create-record"
with:
table: "u_export_control_log"
part_number: "{{part_number}}"
eccn: "{{get-sap-classification.ECCN}}"
destination: "{{destination_country}}"
result: "{{verify-compliance.status}}"
consumes:
- namespace: sap-s4
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_MASTER_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: materials
path: "/A_Material('{material}')"
inputParameters:
- name: material
in: path
operations:
- name: get-material-classification
method: GET
- namespace: salesforce
type: http
baseUri: "https://boeing.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_access_token"
resources:
- name: compliance
path: "/query"
operations:
- name: check-export-compliance
method: GET
- namespace: servicenow
type: http
baseUri: "https://boeing.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_username"
password: "$secrets.servicenow_password"
resources:
- name: records
path: "/table/{{table}}"
inputParameters:
- name: table
in: path
operations:
- name: create-record
method: POST
Creates a facility maintenance work order in SAP PM, assigns a ServiceNow task, and alerts the facilities team via Teams.
naftiko: "0.5"
info:
label: "Facility Maintenance Work Order Orchestration"
description: "Creates a facility maintenance work order in SAP PM, assigns a ServiceNow task, and alerts the facilities team via Teams."
tags:
- manufacturing
- sap
- servicenow
- microsoft-teams
- maintenance
capability:
exposes:
- type: mcp
namespace: facilities-ops
port: 8080
tools:
- name: create-maintenance-work-order
description: "Given an equipment ID, maintenance description, and priority, create a SAP PM work order, a ServiceNow assignment task, and notify the facilities team via Teams. Use for scheduled or unscheduled facility maintenance."
inputParameters:
- name: equipment_id
in: body
type: string
description: "SAP equipment ID, e.g. 'HVAC-EVERETT-B40-02'."
- name: maintenance_desc
in: body
type: string
description: "Description of the maintenance needed."
- name: priority
in: body
type: string
description: "Priority: high, medium, or low."
steps:
- name: create-sap-wo
type: call
call: "sap-pm.create-work-order"
with:
equipment: "{{equipment_id}}"
description: "{{maintenance_desc}}"
priority: "{{priority}}"
- name: create-snow-task
type: call
call: "servicenow.create-task"
with:
short_description: "Maintenance: {{equipment_id}}"
description: "SAP WO: {{create-sap-wo.MaintenanceOrder}} | {{maintenance_desc}}"
priority: "{{priority}}"
- name: notify-facilities
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_facilities_channel_id"
text: "MAINTENANCE WO: {{equipment_id}} | SAP: {{create-sap-wo.MaintenanceOrder}} | SNOW: {{create-snow-task.number}} | Priority: {{priority}}"
consumes:
- namespace: sap-pm
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_MAINTORDER_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: work-orders
path: "/MaintenanceOrder"
operations:
- name: create-work-order
method: POST
- namespace: servicenow
type: http
baseUri: "https://boeing.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_username"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/sc_task"
operations:
- name: create-task
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
When Datadog detects an IoT sensor anomaly on the factory floor, creates a ServiceNow incident, triggers a SAP PM work order, and alerts maintenance via Teams.
naftiko: "0.5"
info:
label: "Factory Floor IoT Anomaly Response"
description: "When Datadog detects an IoT sensor anomaly on the factory floor, creates a ServiceNow incident, triggers a SAP PM work order, and alerts maintenance via Teams."
tags:
- manufacturing
- datadog
- servicenow
- sap
- microsoft-teams
- iot
capability:
exposes:
- type: mcp
namespace: manufacturing-ops
port: 8080
tools:
- name: handle-iot-anomaly
description: "Given a Datadog alert ID, sensor ID, and anomaly type, create a ServiceNow incident, a SAP PM work order, and alert the maintenance team via Teams. Use when IoT sensors detect abnormal conditions."
inputParameters:
- name: alert_id
in: body
type: string
description: "Datadog alert identifier."
- name: sensor_id
in: body
type: string
description: "IoT sensor identifier."
- name: anomaly_type
in: body
type: string
description: "Type of anomaly, e.g. 'temperature', 'vibration', 'pressure'."
steps:
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "IoT Anomaly: {{anomaly_type}} on sensor {{sensor_id}}"
urgency: "2"
description: "Datadog Alert: {{alert_id}} | Sensor: {{sensor_id}} | Type: {{anomaly_type}}"
- name: create-work-order
type: call
call: "sap-pm.create-work-order"
with:
equipment: "{{sensor_id}}"
description: "IoT anomaly: {{anomaly_type}} | Alert: {{alert_id}}"
priority: "high"
- name: alert-maintenance
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_maintenance_channel_id"
text: "IoT ANOMALY: {{anomaly_type}} | Sensor: {{sensor_id}} | INC: {{create-incident.number}} | WO: {{create-work-order.MaintenanceOrder}}"
consumes:
- namespace: servicenow
type: http
baseUri: "https://boeing.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_username"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- namespace: sap-pm
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_MAINTORDER_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: work-orders
path: "/MaintenanceOrder"
operations:
- name: create-work-order
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Ingests flight test data by triggering a Snowflake data load, refreshing a Tableau dashboard, and sending a summary to the test engineering team via Teams.
naftiko: "0.5"
info:
label: "Flight Test Data Ingestion Pipeline"
description: "Ingests flight test data by triggering a Snowflake data load, refreshing a Tableau dashboard, and sending a summary to the test engineering team via Teams."
tags:
- engineering
- snowflake
- tableau
- microsoft-teams
- aerospace
- analytics
capability:
exposes:
- type: mcp
namespace: engineering-ops
port: 8080
tools:
- name: ingest-flight-test-data
description: "Given a flight test ID and data source path, trigger the Snowflake data pipeline, refresh the Tableau flight test dashboard, and notify the test engineering team via Teams. Use after a flight test completes."
inputParameters:
- name: flight_test_id
in: body
type: string
description: "Flight test identifier, e.g. 'FT-787-2026-0412'."
- name: data_source
in: body
type: string
description: "S3 path to flight test data, e.g. 's3://boeing-flight-data/FT-787-2026-0412/'."
steps:
- name: load-to-snowflake
type: call
call: "snowflake.execute-query"
with:
warehouse: "FLIGHT_TEST_WH"
query: "CALL sp_ingest_flight_test('{{flight_test_id}}', '{{data_source}}');"
- name: refresh-dashboard
type: call
call: "tableau.refresh-workbook"
with:
workbook_id: "$secrets.tableau_flight_test_workbook_id"
- name: notify-test-team
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_flight_test_channel_id"
text: "Flight test data ingested: {{flight_test_id}} | Snowflake load: {{load-to-snowflake.status}} | Dashboard refreshed"
consumes:
- namespace: snowflake
type: http
baseUri: "https://boeing.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: queries
path: "/statements"
operations:
- name: execute-query
method: POST
- namespace: tableau
type: http
baseUri: "https://tableau.boeing.com/api/3.19"
authentication:
type: bearer
token: "$secrets.tableau_access_token"
resources:
- name: workbooks
path: "/sites/boeing/workbooks/{{workbook_id}}/refresh"
inputParameters:
- name: workbook_id
in: path
operations:
- name: refresh-workbook
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
When FOD is reported on the factory floor, creates a ServiceNow incident, triggers a SAP quality notification, and sends an urgent alert via Teams.
naftiko: "0.5"
info:
label: "Foreign Object Debris Incident Response"
description: "When FOD is reported on the factory floor, creates a ServiceNow incident, triggers a SAP quality notification, and sends an urgent alert via Teams."
tags:
- safety
- manufacturing
- servicenow
- sap
- microsoft-teams
- aerospace
capability:
exposes:
- type: mcp
namespace: safety-ops
port: 8080
tools:
- name: report-fod-incident
description: "Given a facility code, location, and FOD description, create a ServiceNow safety incident, a SAP quality notification, and send an urgent alert to the FOD prevention team via Teams. Use when foreign object debris is found in a production area."
inputParameters:
- name: facility_code
in: body
type: string
description: "Facility code where FOD was found."
- name: location_detail
in: body
type: string
description: "Specific location, e.g. 'Bay 40-2, Wing Assembly Station 3'."
- name: fod_description
in: body
type: string
description: "Description of the FOD found."
steps:
- name: create-safety-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "FOD Found: {{facility_code}} - {{location_detail}}"
urgency: "1"
impact: "2"
category: "safety"
description: "FOD: {{fod_description}} | Location: {{location_detail}} | Facility: {{facility_code}}"
- name: create-quality-notification
type: call
call: "sap-s4.create-qn"
with:
notification_type: "Q1"
description: "FOD: {{fod_description}} at {{location_detail}}"
plant: "{{facility_code}}"
- name: alert-fod-team
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_fod_channel_id"
text: "FOD ALERT: {{facility_code}} | {{location_detail}} | {{fod_description}} | INC: {{create-safety-incident.number}} | QN: {{create-quality-notification.number}}"
consumes:
- namespace: servicenow
type: http
baseUri: "https://boeing.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_username"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- namespace: sap-s4
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_QUALITYNOTIFICATION_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: quality-notifications
path: "/A_QualityNotification"
operations:
- name: create-qn
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Retrieves open Dependabot security alerts for a GitHub repository, filters by severity, and creates Jira security tasks for each critical or high vulnerability requiring remediation.
naftiko: "0.5"
info:
label: "GitHub Dependabot Vulnerability Triage"
description: "Retrieves open Dependabot security alerts for a GitHub repository, filters by severity, and creates Jira security tasks for each critical or high vulnerability requiring remediation."
tags:
- security
- devops
- github
- jira
- vulnerability-management
- dependabot
capability:
exposes:
- type: mcp
namespace: vuln-triage
port: 8080
tools:
- name: triage-dependabot-alerts
description: "Given a GitHub repository name and minimum severity level, retrieve all open Dependabot alerts at or above that severity from GitHub and create a Jira security task for each one in the SECSCAN project. Use during weekly security triage for Boeing software repositories."
inputParameters:
- name: repo_name
in: body
type: string
description: "The GitHub repository full name to scan, e.g. 'boeing/ground-systems-api'."
- name: min_severity
in: body
type: string
description: "Minimum severity to triage: 'critical', 'high', 'medium', or 'low'."
steps:
- name: get-alerts
type: call
call: "github.list-dependabot-alerts"
with:
repo: "{{repo_name}}"
severity: "{{min_severity}}"
- name: create-security-task
type: call
call: "jira.create-issue"
with:
project_key: "SECSCAN"
issuetype: "Task"
summary: "Dependabot alerts in {{repo_name}}: {{get-alerts.total_count}} at {{min_severity}}+"
description: "Repository: {{repo_name}}\nSeverity filter: {{min_severity}}\nOpen alerts: {{get-alerts.total_count}}\nCritical: {{get-alerts.critical_count}}\nHigh: {{get-alerts.high_count}}"
consumes:
- namespace: github
type: http
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: dependabot-alerts
path: "/repos/{repo}/dependabot/alerts"
inputParameters:
- name: repo
in: path
- name: severity
in: query
operations:
- name: list-dependabot-alerts
method: GET
- namespace: jira
type: http
baseUri: "https://boeing.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_username"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
When a GitHub pull request is opened against a protected branch, triggers a Checkmarx SAST scan and posts the scan results as a PR comment.
naftiko: "0.5"
info:
label: "GitHub Pull Request Security Scan Trigger"
description: "When a GitHub pull request is opened against a protected branch, triggers a Checkmarx SAST scan and posts the scan results as a PR comment."
tags:
- devops
- security
- github
- sast
- code-quality
- pull-request
capability:
exposes:
- type: mcp
namespace: devsec
port: 8080
tools:
- name: trigger-pr-scan
description: "Given a GitHub repository name, pull request number, and branch name, submit a Checkmarx SAST security scan for the PR diff and post the scan result summary as a GitHub PR comment. Use when a pull request is opened or updated against a protected branch."
inputParameters:
- name: repo_name
in: body
type: string
description: "The GitHub repository full name, e.g. 'boeing/flight-control-software'."
- name: pr_number
in: body
type: integer
description: "The pull request number to scan."
- name: branch_name
in: body
type: string
description: "The source branch name for the PR."
steps:
- name: start-scan
type: call
call: "checkmarx.create-scan"
with:
project_name: "{{repo_name}}"
branch: "{{branch_name}}"
- name: post-pr-comment
type: call
call: "github.create-pr-comment"
with:
repo: "{{repo_name}}"
pr_number: "{{pr_number}}"
body: "Security scan initiated. Checkmarx scan ID: {{start-scan.scan_id}}. Results will be posted when complete."
consumes:
- namespace: checkmarx
type: http
baseUri: "https://boeing.checkmarx.net/cxrestapi"
authentication:
type: bearer
token: "$secrets.checkmarx_bearer_token"
resources:
- name: scans
path: "/scans"
operations:
- name: create-scan
method: POST
- namespace: github
type: http
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: pr-comments
path: "/repos/{repo}/issues/{pr_number}/comments"
inputParameters:
- name: repo
in: path
- name: pr_number
in: path
operations:
- name: create-pr-comment
method: POST
When a GitHub release is published, creates a Datadog deployment marker and updates the corresponding Jira release version to Released status.
naftiko: "0.5"
info:
label: "GitHub Release Deployment Marker"
description: "When a GitHub release is published, creates a Datadog deployment marker and updates the corresponding Jira release version to Released status."
tags:
- devops
- deployment
- github
- datadog
- jira
- release-management
capability:
exposes:
- type: mcp
namespace: release-ops
port: 8080
tools:
- name: mark-release-deployed
description: "Given a GitHub repository name, release tag, and Jira project key, create a Datadog deployment marker for observability and update the matching Jira release version status to Released. Use when a GitHub release is published to production."
inputParameters:
- name: repo_name
in: body
type: string
description: "The GitHub repository full name, e.g. 'boeing/avionics-display-firmware'."
- name: release_tag
in: body
type: string
description: "The Git release tag, e.g. 'v2.4.1'."
- name: jira_project_key
in: body
type: string
description: "The Jira project key associated with this repository, e.g. 'AVDIS'."
steps:
- name: create-dd-marker
type: call
call: "datadog.create-event"
with:
title: "Deployment: {{repo_name}} {{release_tag}}"
text: "Production release {{release_tag}} deployed from {{repo_name}}"
alert_type: "info"
- name: update-jira-version
type: call
call: "jira.update-version"
with:
project_key: "{{jira_project_key}}"
version_name: "{{release_tag}}"
released: "true"
consumes:
- namespace: datadog
type: http
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: events
path: "/events"
operations:
- name: create-event
method: POST
- namespace: jira
type: http
baseUri: "https://boeing.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_username"
password: "$secrets.jira_api_token"
resources:
- name: versions
path: "/project/{project_key}/versions"
inputParameters:
- name: project_key
in: path
operations:
- name: update-version
method: PUT
Checks the branch protection rules for a GitHub repository main branch.
naftiko: "0.5"
info:
label: "GitHub Repository Branch Protection Check"
description: "Checks the branch protection rules for a GitHub repository main branch."
tags:
- devops
- github
- security
- compliance
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: check-branch-protection
description: "Given a GitHub repository name, retrieve the branch protection rules for the main branch including required reviews, status checks, and admin enforcement. Use for compliance audits."
inputParameters:
- name: repo_name
in: body
type: string
description: "GitHub repository name, e.g. 'boeing/flight-control-fw'."
call: "github.get-branch-protection"
with:
repo: "{{repo_name}}"
outputParameters:
- name: required_reviews
type: string
mapping: "$.required_pull_request_reviews.required_approving_review_count"
- name: enforce_admins
type: string
mapping: "$.enforce_admins.enabled"
consumes:
- namespace: github
type: http
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: branch-protection
path: "/repos/{{repo}}/branches/main/protection"
inputParameters:
- name: repo
in: path
operations:
- name: get-branch-protection
method: GET
Scans a GitHub organization's repositories for compliance violations such as missing branch protections or public visibility, and logs findings to Snowflake for audit reporting.
naftiko: "0.5"
info:
label: "GitHub Repository Compliance Audit"
description: "Scans a GitHub organization's repositories for compliance violations such as missing branch protections or public visibility, and logs findings to Snowflake for audit reporting."
tags:
- devops
- compliance
- github
- snowflake
- security
- audit
capability:
exposes:
- type: mcp
namespace: repo-compliance
port: 8080
tools:
- name: audit-github-repo
description: "Given a GitHub repository full name, retrieve branch protection rules and repository visibility settings from GitHub and write a compliance audit record to Snowflake. Use for periodic security compliance audits of Boeing's software repositories."
inputParameters:
- name: repo_name
in: body
type: string
description: "GitHub repository full name, e.g. 'boeing/flight-management-system'."
- name: branch
in: body
type: string
description: "The branch to audit for protection rules, typically 'main'."
steps:
- name: get-repo
type: call
call: "github.get-repo"
with:
repo: "{{repo_name}}"
- name: get-branch-protection
type: call
call: "github.get-branch-protection"
with:
repo: "{{repo_name}}"
branch: "{{branch}}"
- name: write-audit-record
type: call
call: "snowflake.insert-audit"
with:
repo: "{{repo_name}}"
visibility: "{{get-repo.visibility}}"
branch_protected: "{{get-branch-protection.enabled}}"
consumes:
- namespace: github
type: http
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: repos
path: "/repos/{repo}"
inputParameters:
- name: repo
in: path
operations:
- name: get-repo
method: GET
- name: branch-protection
path: "/repos/{repo}/branches/{branch}/protection"
inputParameters:
- name: repo
in: path
- name: branch
in: path
operations:
- name: get-branch-protection
method: GET
- namespace: snowflake
type: http
baseUri: "https://boeing.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_bearer_token"
resources:
- name: audit-records
path: "/statements"
operations:
- name: insert-audit
method: POST
When a hazardous material is received, validates the SDS in SharePoint, creates a SAP EHS notification, and alerts the safety team via Teams.
naftiko: "0.5"
info:
label: "Hazardous Material Handling Alert"
description: "When a hazardous material is received, validates the SDS in SharePoint, creates a SAP EHS notification, and alerts the safety team via Teams."
tags:
- safety
- ehs
- sharepoint
- sap
- microsoft-teams
- manufacturing
capability:
exposes:
- type: mcp
namespace: ehs-ops
port: 8080
tools:
- name: process-hazmat-receipt
description: "Given a material number, SDS document ID, and receiving dock, validate the SDS in SharePoint, create a SAP EHS notification, and alert the safety team via Teams. Use when hazardous materials arrive at the facility."
inputParameters:
- name: material_number
in: body
type: string
description: "SAP material number for the hazardous material."
- name: sds_document_id
in: body
type: string
description: "SharePoint document ID for the Safety Data Sheet."
- name: receiving_dock
in: body
type: string
description: "Receiving dock location, e.g. 'DOCK-B40-NORTH'."
steps:
- name: validate-sds
type: call
call: "sharepoint.get-document"
with:
item_id: "{{sds_document_id}}"
- name: create-ehs-notification
type: call
call: "sap-ehs.create-notification"
with:
material: "{{material_number}}"
notification_type: "EHS"
description: "Hazmat received at {{receiving_dock}} | SDS: {{validate-sds.Title}}"
- name: alert-safety-team
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_ehs_channel_id"
text: "HAZMAT RECEIVED: {{material_number}} at {{receiving_dock}} | SDS: {{validate-sds.Title}} | EHS: {{create-ehs-notification.number}}"
consumes:
- namespace: sharepoint
type: http
baseUri: "https://boeing.sharepoint.com/_api"
authentication:
type: bearer
token: "$secrets.sharepoint_access_token"
resources:
- name: documents
path: "/web/lists/getbytitle('SafetyDataSheets')/items({{item_id}})"
inputParameters:
- name: item_id
in: path
operations:
- name: get-document
method: GET
- namespace: sap-ehs
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_EHS_NOTIFICATION_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: notifications
path: "/A_EHSNotification"
operations:
- name: create-notification
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Processes an IT infrastructure change by creating a ServiceNow change request, running a Terraform plan preview, and posting the results for CAB review via Teams.
naftiko: "0.5"
info:
label: "IT Infrastructure Change Approval Workflow"
description: "Processes an IT infrastructure change by creating a ServiceNow change request, running a Terraform plan preview, and posting the results for CAB review via Teams."
tags:
- devops
- servicenow
- microsoft-teams
- infrastructure
- change-management
capability:
exposes:
- type: mcp
namespace: devops-ops
port: 8080
tools:
- name: submit-infra-change
description: "Given a change description, Terraform workspace, and requester, create a ServiceNow change request, trigger a Terraform plan, and post results for CAB review via Teams. Use for infrastructure change approvals."
inputParameters:
- name: change_description
in: body
type: string
description: "Description of the infrastructure change."
- name: terraform_workspace
in: body
type: string
description: "Terraform Cloud workspace name."
- name: requester
in: body
type: string
description: "Requester email address."
steps:
- name: create-change-request
type: call
call: "servicenow.create-change"
with:
short_description: "Infra Change: {{change_description}}"
description: "Workspace: {{terraform_workspace}} | Requester: {{requester}} | {{change_description}}"
type: "standard"
- name: trigger-terraform-plan
type: call
call: "terraform.create-run"
with:
workspace: "{{terraform_workspace}}"
is_plan_only: "true"
message: "CR: {{create-change-request.number}}"
- name: post-for-cab-review
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_cab_channel_id"
text: "CHANGE REQUEST: {{create-change-request.number}} | {{change_description}} | Terraform Plan: {{trigger-terraform-plan.id}} | Requester: {{requester}}"
consumes:
- namespace: servicenow
type: http
baseUri: "https://boeing.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_username"
password: "$secrets.servicenow_password"
resources:
- name: changes
path: "/table/change_request"
operations:
- name: create-change
method: POST
- namespace: terraform
type: http
baseUri: "https://app.terraform.io/api/v2"
authentication:
type: bearer
token: "$secrets.terraform_token"
resources:
- name: runs
path: "/runs"
operations:
- name: create-run
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
When GitHub Dependabot finds a critical vulnerability, creates a Jira security ticket, updates the ServiceNow CMDB, and alerts the security team via Teams.
naftiko: "0.5"
info:
label: "IT Security Vulnerability Remediation"
description: "When GitHub Dependabot finds a critical vulnerability, creates a Jira security ticket, updates the ServiceNow CMDB, and alerts the security team via Teams."
tags:
- security
- github
- jira
- servicenow
- microsoft-teams
- vulnerability-management
capability:
exposes:
- type: mcp
namespace: security-ops
port: 8080
tools:
- name: remediate-vulnerability
description: "Given a GitHub repository, vulnerability CVE, and severity, create a Jira security ticket, update the ServiceNow CMDB entry, and alert the security team via Teams. Use when a critical vulnerability is detected."
inputParameters:
- name: repository
in: body
type: string
description: "GitHub repository name."
- name: cve_id
in: body
type: string
description: "CVE identifier, e.g. 'CVE-2026-12345'."
- name: severity
in: body
type: string
description: "Severity: critical, high, medium, low."
steps:
- name: create-security-ticket
type: call
call: "jira.create-issue"
with:
project_key: "SEC"
issuetype: "Bug"
summary: "[{{severity}}] {{cve_id}} in {{repository}}"
description: "CVE: {{cve_id}} | Repo: {{repository}} | Severity: {{severity}}"
priority: "{{severity}}"
- name: update-cmdb
type: call
call: "servicenow.update-ci"
with:
ci_name: "{{repository}}"
vulnerability: "{{cve_id}}"
status: "Vulnerable"
- name: alert-security
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_security_channel_id"
text: "VULNERABILITY: [{{severity}}] {{cve_id}} in {{repository}} | Jira: {{create-security-ticket.key}} | CMDB updated"
consumes:
- namespace: jira
type: http
baseUri: "https://boeing.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
- namespace: servicenow
type: http
baseUri: "https://boeing.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_username"
password: "$secrets.servicenow_password"
resources:
- name: cmdb
path: "/table/cmdb_ci"
operations:
- name: update-ci
method: PATCH
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Retrieves a Jira engineering issue by key, returning summary, status, assignee, and priority.
naftiko: "0.5"
info:
label: "Jira Engineering Issue Lookup"
description: "Retrieves a Jira engineering issue by key, returning summary, status, assignee, and priority."
tags:
- engineering
- jira
- lookup
- project-management
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: get-engineering-issue
description: "Given a Jira issue key, retrieve the issue details including summary, status, assignee, priority, and component. Use for engineering task status checks."
inputParameters:
- name: issue_key
in: body
type: string
description: "Jira issue key, e.g. 'ENG-4521'."
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"
consumes:
- namespace: jira
type: http
baseUri: "https://boeing.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
Creates a Jira issue in the appropriate Boeing engineering project and posts a notification to the relevant Microsoft Teams channel with the ticket link.
naftiko: "0.5"
info:
label: "Jira Engineering Ticket Creator"
description: "Creates a Jira issue in the appropriate Boeing engineering project and posts a notification to the relevant Microsoft Teams channel with the ticket link."
tags:
- devops
- engineering
- jira
- microsoft-teams
- ticketing
capability:
exposes:
- type: mcp
namespace: eng-ticketing
port: 8080
tools:
- name: create-eng-ticket
description: "Given a project key, issue type, summary, and description, create a Jira issue in the Boeing engineering project and post the new ticket link to the designated Microsoft Teams channel. Use when engineers or automated systems need to log bugs, tasks, or improvement requests."
inputParameters:
- name: project_key
in: body
type: string
description: "The Jira project key, e.g. 'BENG' or 'BDEF'."
- name: issuetype
in: body
type: string
description: "The Jira issue type: 'Bug', 'Task', 'Story', or 'Improvement'."
- name: summary
in: body
type: string
description: "A concise one-line summary of the issue."
- name: description
in: body
type: string
description: "Full description of the issue including steps to reproduce or acceptance criteria."
- name: teams_channel
in: body
type: string
description: "The Microsoft Teams channel ID to post the ticket notification to."
steps:
- name: create-issue
type: call
call: "jira.create-issue"
with:
project_key: "{{project_key}}"
issuetype: "{{issuetype}}"
summary: "{{summary}}"
description: "{{description}}"
- name: notify-team
type: call
call: "msteams.post-message"
with:
channel_id: "{{teams_channel}}"
text: "New Jira ticket created: [{{create-issue.key}}] {{summary}} — https://boeing.atlassian.net/browse/{{create-issue.key}}"
consumes:
- namespace: jira
type: http
baseUri: "https://boeing.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_username"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/{channel_id}/channels/{channel_id}/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Aggregates completed story points and issue counts for all closed sprints in a Jira project over a rolling quarter, then posts the velocity trend to a Snowflake analytics table.
naftiko: "0.5"
info:
label: "Jira Sprint Velocity Report"
description: "Aggregates completed story points and issue counts for all closed sprints in a Jira project over a rolling quarter, then posts the velocity trend to a Snowflake analytics table."
tags:
- devops
- agile
- jira
- snowflake
- reporting
- engineering
capability:
exposes:
- type: mcp
namespace: agile-reporting
port: 8080
tools:
- name: report-sprint-velocity
description: "Given a Jira project key and number of sprints to analyze, retrieve completed sprints with story point totals from Jira and write the velocity trend data to Snowflake for engineering performance reporting. Use at the end of a PI or quarter for portfolio reporting."
inputParameters:
- name: project_key
in: body
type: string
description: "The Jira project key to report on, e.g. 'BENG'."
- name: sprint_count
in: body
type: integer
description: "Number of recent closed sprints to include in the velocity calculation."
steps:
- name: get-sprints
type: call
call: "jira.list-sprints"
with:
project_key: "{{project_key}}"
sprint_count: "{{sprint_count}}"
- name: write-velocity
type: call
call: "snowflake.insert-velocity-report"
with:
project_key: "{{project_key}}"
sprint_data: "{{get-sprints.results}}"
consumes:
- namespace: jira
type: http
baseUri: "https://boeing.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_username"
password: "$secrets.jira_api_token"
resources:
- name: sprints
path: "/project/{project_key}/versions"
inputParameters:
- name: project_key
in: path
- name: sprint_count
in: query
operations:
- name: list-sprints
method: GET
- namespace: snowflake
type: http
baseUri: "https://boeing.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_bearer_token"
resources:
- name: velocity-reports
path: "/statements"
operations:
- name: insert-velocity-report
method: POST
Compiles daily manufacturing KPIs from SAP production data, refreshes the Tableau dashboard, and posts a summary to the plant leadership Teams channel.
naftiko: "0.5"
info:
label: "Manufacturing KPI Daily Digest"
description: "Compiles daily manufacturing KPIs from SAP production data, refreshes the Tableau dashboard, and posts a summary to the plant leadership Teams channel."
tags:
- production
- sap
- tableau
- microsoft-teams
- manufacturing
- analytics
capability:
exposes:
- type: mcp
namespace: production-ops
port: 8080
tools:
- name: generate-daily-kpi-digest
description: "Given a plant code and reporting date, pull production KPIs from SAP, refresh the Tableau manufacturing dashboard, and post a daily summary to the plant leadership Teams channel. Use for daily operations briefings."
inputParameters:
- name: plant_code
in: body
type: string
description: "SAP plant code, e.g. 'EVERETT-1000'."
- name: report_date
in: body
type: string
description: "Reporting date in ISO 8601 format."
steps:
- name: get-production-kpis
type: call
call: "sap-s4.get-production-summary"
with:
Plant: "{{plant_code}}"
Date: "{{report_date}}"
- name: refresh-dashboard
type: call
call: "tableau.refresh-workbook"
with:
workbook_id: "$secrets.tableau_mfg_kpi_workbook_id"
- name: post-digest
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_plant_leadership_channel_id"
text: "DAILY MFG KPIs: {{plant_code}} | Date: {{report_date}} | Output: {{get-production-kpis.total_output}} | Yield: {{get-production-kpis.yield_rate}}% | Downtime: {{get-production-kpis.downtime_hours}}h"
consumes:
- namespace: sap-s4
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_PRODUCTION_ORDER_2_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: production-summary
path: "/A_ProductionOrder_2"
operations:
- name: get-production-summary
method: GET
- namespace: tableau
type: http
baseUri: "https://tableau.boeing.com/api/3.19"
authentication:
type: bearer
token: "$secrets.tableau_access_token"
resources:
- name: workbooks
path: "/sites/boeing/workbooks/{{workbook_id}}/refresh"
inputParameters:
- name: workbook_id
in: path
operations:
- name: refresh-workbook
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Compiles a shift handoff report by pulling production data from SAP, open incidents from ServiceNow, and posting the summary to the manufacturing Teams channel.
naftiko: "0.5"
info:
label: "Manufacturing Shift Handoff Report"
description: "Compiles a shift handoff report by pulling production data from SAP, open incidents from ServiceNow, and posting the summary to the manufacturing Teams channel."
tags:
- production
- sap
- servicenow
- microsoft-teams
- manufacturing
capability:
exposes:
- type: mcp
namespace: production-ops
port: 8080
tools:
- name: generate-shift-handoff
description: "Given a plant code, production line, and shift identifier, pull production output from SAP, open incidents from ServiceNow, and post a shift handoff summary to the manufacturing Teams channel. Use at shift transitions."
inputParameters:
- name: plant_code
in: body
type: string
description: "SAP plant code."
- name: production_line
in: body
type: string
description: "Production line identifier."
- name: shift_id
in: body
type: string
description: "Shift identifier, e.g. 'DAY-2026-03-27'."
steps:
- name: get-production-output
type: call
call: "sap-s4.get-shift-output"
with:
Plant: "{{plant_code}}"
Line: "{{production_line}}"
Shift: "{{shift_id}}"
- name: get-open-incidents
type: call
call: "servicenow.get-incidents"
with:
query: "assignment_group={{production_line}}^state!=6"
- name: post-handoff
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_mfg_channel_id"
text: "SHIFT HANDOFF: {{production_line}} | Shift: {{shift_id}} | Output: {{get-production-output.total_units}} | Open Incidents: {{get-open-incidents.count}}"
consumes:
- namespace: sap-s4
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_PRODUCTION_ORDER_2_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: production-output
path: "/A_ProductionOrder_2"
operations:
- name: get-shift-output
method: GET
- namespace: servicenow
type: http
baseUri: "https://boeing.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_username"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: get-incidents
method: GET
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Creates a Microsoft 365 shared mailbox for a team or project via Graph API, adds the specified members, and records the provisioning in ServiceNow as a completed request.
naftiko: "0.5"
info:
label: "Microsoft 365 Shared Mailbox Provisioning"
description: "Creates a Microsoft 365 shared mailbox for a team or project via Graph API, adds the specified members, and records the provisioning in ServiceNow as a completed request."
tags:
- it-operations
- microsoft-graph
- microsoft-365
- servicenow
- provisioning
capability:
exposes:
- type: mcp
namespace: mailbox-provisioning
port: 8080
tools:
- name: provision-shared-mailbox
description: "Given a mailbox display name, email alias, and list of member UPNs, create a Microsoft 365 shared mailbox via Graph API, add the specified members, and create a completed ServiceNow request record for audit. Use when teams request a shared project or department mailbox."
inputParameters:
- name: display_name
in: body
type: string
description: "The display name for the shared mailbox, e.g. 'Boeing 737 MAX Program Team'."
- name: email_alias
in: body
type: string
description: "The email alias prefix, e.g. '737max-program'."
- name: owner_upn
in: body
type: string
description: "The UPN of the mailbox owner who will manage member access."
steps:
- name: create-mailbox
type: call
call: "msgraph.create-group"
with:
displayName: "{{display_name}}"
mailNickname: "{{email_alias}}"
mailEnabled: "true"
groupTypes: "[]"
- name: log-request
type: call
call: "servicenow.create-incident"
with:
category: "it_provisioning"
state: "resolved"
short_description: "Shared mailbox provisioned: {{email_alias}}@boeing.com"
description: "Mailbox {{display_name}} ({{email_alias}}) created. Owner: {{owner_upn}}. M365 group ID: {{create-mailbox.id}}"
consumes:
- namespace: msgraph
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: groups
path: "/groups"
operations:
- name: create-group
method: POST
- namespace: servicenow
type: http
baseUri: "https://boeing.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_username"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
Provisions a new aircraft program workspace by creating a Jira project, a Confluence space, and a Microsoft Teams channel.
naftiko: "0.5"
info:
label: "New Aircraft Program Workspace Setup"
description: "Provisions a new aircraft program workspace by creating a Jira project, a Confluence space, and a Microsoft Teams channel."
tags:
- engineering
- jira
- confluence
- microsoft-teams
- aerospace
- project-management
capability:
exposes:
- type: mcp
namespace: engineering-ops
port: 8080
tools:
- name: setup-program-workspace
description: "Given a program name and program lead, create a Jira project, a Confluence space, and a Teams channel for the new aircraft program. Use when a new aircraft program is initiated."
inputParameters:
- name: program_name
in: body
type: string
description: "Aircraft program name, e.g. 'NMA-2026'."
- name: program_lead
in: body
type: string
description: "Email of the program lead."
steps:
- name: create-jira-project
type: call
call: "jira.create-project"
with:
name: "{{program_name}}"
key: "{{program_name}}"
lead: "{{program_lead}}"
projectTypeKey: "software"
- name: create-confluence-space
type: call
call: "confluence.create-space"
with:
key: "{{program_name}}"
name: "{{program_name}} Program"
description: "Collaboration space for the {{program_name}} aircraft program"
- name: notify-team
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_engineering_channel_id"
text: "NEW PROGRAM WORKSPACE: {{program_name}} | Jira: {{create-jira-project.key}} | Confluence: {{create-confluence-space.key}} | Lead: {{program_lead}}"
consumes:
- namespace: jira
type: http
baseUri: "https://boeing.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: projects
path: "/project"
operations:
- name: create-project
method: POST
- namespace: confluence
type: http
baseUri: "https://boeing.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: spaces
path: "/space"
operations:
- name: create-space
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
When a new employee record is created in Workday, opens a ServiceNow onboarding task, provisions a Microsoft 365 account via Graph API, and sends a Teams welcome message.
naftiko: "0.5"
info:
label: "New Hire Onboarding Orchestrator"
description: "When a new employee record is created in Workday, opens a ServiceNow onboarding task, provisions a Microsoft 365 account via Graph API, and sends a Teams welcome message."
tags:
- hr
- onboarding
- workday
- servicenow
- microsoft-graph
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-onboarding
port: 8080
tools:
- name: trigger-onboarding
description: "Given a Workday employee ID and start date, orchestrate the full new-hire onboarding sequence: look up employee details in Workday, open a ServiceNow onboarding ticket, provision the Microsoft 365 account, and send a Teams welcome message. Invoke when HR confirms a new hire is ready to activate."
inputParameters:
- name: workday_employee_id
in: body
type: string
description: "The Workday worker ID for the new hire, e.g. 'WD-00042871'."
- name: start_date
in: body
type: string
description: "The employee start date in ISO 8601 format, e.g. '2026-04-01'."
steps:
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{workday_employee_id}}"
- name: open-ticket
type: call
call: "servicenow.create-incident"
with:
category: "hr_onboarding"
short_description: "New hire onboarding: {{get-employee.full_name}}"
assigned_group: "IT_Onboarding"
- name: provision-m365
type: call
call: "msgraph.create-user"
with:
displayName: "{{get-employee.full_name}}"
mailNickname: "{{get-employee.username}}"
userPrincipalName: "{{get-employee.work_email}}"
- name: send-welcome
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{get-employee.work_email}}"
text: "Welcome to Boeing, {{get-employee.first_name}}! Your IT onboarding ticket is {{open-ticket.number}}. Your start date is {{start_date}}."
consumes:
- namespace: workday
type: http
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_bearer_token"
resources:
- name: workers
path: "/boeing/workers/{worker_id}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- namespace: servicenow
type: http
baseUri: "https://boeing.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_username"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- namespace: msgraph
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: users
path: "/users"
operations:
- name: create-user
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: chats
path: "/chats"
operations:
- name: send-message
method: POST
Queries Okta for all users in a security-sensitive group who do not have MFA enrolled and exports the non-compliant user list to Snowflake for security remediation tracking.
naftiko: "0.5"
info:
label: "Okta MFA Policy Enforcement Check"
description: "Queries Okta for all users in a security-sensitive group who do not have MFA enrolled and exports the non-compliant user list to Snowflake for security remediation tracking."
tags:
- security
- iam
- okta
- snowflake
- mfa
- compliance
capability:
exposes:
- type: mcp
namespace: mfa-compliance
port: 8080
tools:
- name: check-mfa-enrollment
description: "Given an Okta group ID and compliance report date, retrieve all users in that group who do not have MFA enrolled from Okta and write the non-compliant list to Snowflake for security team remediation tracking. Use during monthly security posture reviews."
inputParameters:
- name: group_id
in: body
type: string
description: "The Okta group ID to check for MFA enrollment, e.g. '00g1b2c3d4e5f6g7h'."
- name: report_date
in: body
type: string
description: "The compliance check date in ISO 8601 format."
steps:
- name: list-group-users
type: call
call: "okta.list-group-users"
with:
group_id: "{{group_id}}"
- name: write-noncompliant
type: call
call: "snowflake.insert-mfa-report"
with:
group_id: "{{group_id}}"
report_date: "{{report_date}}"
user_count: "{{list-group-users.total_count}}"
consumes:
- namespace: okta
type: http
baseUri: "https://boeing.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: group-users
path: "/groups/{group_id}/users"
inputParameters:
- name: group_id
in: path
operations:
- name: list-group-users
method: GET
- namespace: snowflake
type: http
baseUri: "https://boeing.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_bearer_token"
resources:
- name: mfa-reports
path: "/statements"
operations:
- name: insert-mfa-report
method: POST
Lists all active Okta user-application assignments for a given application, exports the list to Snowflake for audit review, and flags dormant accounts.
naftiko: "0.5"
info:
label: "Okta User Access Certification"
description: "Lists all active Okta user-application assignments for a given application, exports the list to Snowflake for audit review, and flags dormant accounts."
tags:
- security
- iam
- okta
- snowflake
- access-certification
- audit
capability:
exposes:
- type: mcp
namespace: access-cert
port: 8080
tools:
- name: certify-app-access
description: "Given an Okta application ID and certification date, retrieve all user assignments for that application from Okta and write the access roster to Snowflake for quarterly access certification review. Use during semi-annual or quarterly access certification campaigns."
inputParameters:
- name: app_id
in: body
type: string
description: "The Okta application ID to certify, e.g. '0oa1b2c3d4e5f6g7h'."
- name: certification_date
in: body
type: string
description: "The access certification period date in ISO 8601 format."
steps:
- name: list-assignments
type: call
call: "okta.list-app-users"
with:
app_id: "{{app_id}}"
- name: write-roster
type: call
call: "snowflake.insert-access-roster"
with:
app_id: "{{app_id}}"
certification_date: "{{certification_date}}"
consumes:
- namespace: okta
type: http
baseUri: "https://boeing.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: app-users
path: "/apps/{app_id}/users"
inputParameters:
- name: app_id
in: path
operations:
- name: list-app-users
method: GET
- namespace: snowflake
type: http
baseUri: "https://boeing.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_bearer_token"
resources:
- name: access-rosters
path: "/statements"
operations:
- name: insert-access-roster
method: POST
Retrieves the current account status of a user in Okta by email address.
naftiko: "0.5"
info:
label: "Okta User Status Check"
description: "Retrieves the current account status of a user in Okta by email address."
tags:
- identity
- okta
- security
- lookup
capability:
exposes:
- type: mcp
namespace: identity
port: 8080
tools:
- name: get-user-status
description: "Given a user email address, retrieve the Okta account status including activation state, last login, and MFA enrollment. Use for access verification and security checks."
inputParameters:
- name: email
in: body
type: string
description: "User email address, e.g. 'jane.doe@boeing.com'."
call: "okta.get-user"
with:
login: "{{email}}"
outputParameters:
- name: status
type: string
mapping: "$.status"
- name: last_login
type: string
mapping: "$.lastLogin"
consumes:
- namespace: okta
type: http
baseUri: "https://boeing.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "SSWS $secrets.okta_api_token"
placement: header
resources:
- name: users
path: "/users/{{login}}"
inputParameters:
- name: login
in: path
operations:
- name: get-user
method: GET
When a production line goes down, creates a ServiceNow incident, notifies plant management via Teams, and logs downtime in SAP Plant Maintenance.
naftiko: "0.5"
info:
label: "Production Line Downtime Escalation"
description: "When a production line goes down, creates a ServiceNow incident, notifies plant management via Teams, and logs downtime in SAP Plant Maintenance."
tags:
- production
- servicenow
- microsoft-teams
- sap
- manufacturing
- aerospace
capability:
exposes:
- type: mcp
namespace: production-ops
port: 8080
tools:
- name: escalate-line-downtime
description: "Given a production line ID, downtime reason, and severity, create a ServiceNow incident, log a SAP PM notification, and alert plant management via Teams. Use when a production line stops unexpectedly."
inputParameters:
- name: line_id
in: body
type: string
description: "Production line identifier, e.g. 'EVERETT-787-LINE-3'."
- name: downtime_reason
in: body
type: string
description: "Reason for the production line downtime."
- name: severity
in: body
type: string
description: "Severity level: P1, P2, or P3."
steps:
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "[{{severity}}] Line down: {{line_id}}"
urgency: "1"
impact: "1"
description: "Production line {{line_id}} is down. Reason: {{downtime_reason}}"
- name: log-sap-notification
type: call
call: "sap-pm.create-notification"
with:
notification_type: "M2"
equipment: "{{line_id}}"
description: "Line downtime: {{downtime_reason}}"
- name: alert-management
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_plant_mgmt_channel_id"
text: "LINE DOWN: {{line_id}} | {{severity}} | INC: {{create-incident.number}} | SAP: {{log-sap-notification.number}} | Reason: {{downtime_reason}}"
consumes:
- namespace: servicenow
type: http
baseUri: "https://boeing.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_username"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- namespace: sap-pm
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_MAINTNOTIFICATION"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: notifications
path: "/A_MaintenanceNotification"
operations:
- name: create-notification
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Validates quality gate criteria by pulling inspection results from SAP QM, checking against Jira acceptance criteria, and posting the gate status to Teams.
naftiko: "0.5"
info:
label: "Production Quality Gate Check"
description: "Validates quality gate criteria by pulling inspection results from SAP QM, checking against Jira acceptance criteria, and posting the gate status to Teams."
tags:
- quality
- manufacturing
- sap
- jira
- microsoft-teams
- production
capability:
exposes:
- type: mcp
namespace: quality-ops
port: 8080
tools:
- name: check-quality-gate
description: "Given a production order and quality gate ID, pull inspection results from SAP QM, verify against Jira acceptance criteria, and post the pass/fail status to Teams. Use at each production quality gate."
inputParameters:
- name: production_order
in: body
type: string
description: "SAP production order number."
- name: quality_gate_id
in: body
type: string
description: "Quality gate identifier, e.g. 'QG-3-FINAL-ASSEMBLY'."
steps:
- name: get-inspection-results
type: call
call: "sap-qm.get-results"
with:
production_order: "{{production_order}}"
gate: "{{quality_gate_id}}"
- name: check-acceptance
type: call
call: "jira.get-issue"
with:
issue_key: "{{quality_gate_id}}"
- name: post-gate-status
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_quality_channel_id"
text: "QUALITY GATE: {{quality_gate_id}} | Order: {{production_order}} | Result: {{get-inspection-results.disposition}} | Criteria: {{check-acceptance.fields.status.name}}"
consumes:
- namespace: sap-qm
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_INSPECTIONLOT_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: inspection-results
path: "/A_InspectionLot"
operations:
- name: get-results
method: GET
- namespace: jira
type: http
baseUri: "https://boeing.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
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Prepares for a regulatory audit by collecting documents from SharePoint, creating a Jira checklist, and scheduling prep meetings via Teams.
naftiko: "0.5"
info:
label: "Regulatory Audit Preparation Workflow"
description: "Prepares for a regulatory audit by collecting documents from SharePoint, creating a Jira checklist, and scheduling prep meetings via Teams."
tags:
- compliance
- sharepoint
- jira
- microsoft-teams
- audit
- aerospace
capability:
exposes:
- type: mcp
namespace: compliance-ops
port: 8080
tools:
- name: prepare-regulatory-audit
description: "Given an audit type, audit date, and regulatory body, collect required documents from SharePoint, create a Jira audit checklist, and notify the compliance team via Teams. Use when preparing for FAA, EASA, or other regulatory audits."
inputParameters:
- name: audit_type
in: body
type: string
description: "Audit type, e.g. 'FAA Production Certificate Renewal'."
- name: audit_date
in: body
type: string
description: "Scheduled audit date in ISO 8601 format."
- name: regulatory_body
in: body
type: string
description: "Regulatory body, e.g. 'FAA', 'EASA'."
steps:
- name: collect-documents
type: call
call: "sharepoint.search-documents"
with:
query: "audit {{audit_type}} {{regulatory_body}}"
library: "RegulatoryDocs"
- name: create-audit-checklist
type: call
call: "jira.create-issue"
with:
project_key: "COMP"
issuetype: "Epic"
summary: "{{regulatory_body}} Audit: {{audit_type}} - {{audit_date}}"
description: "Regulatory audit preparation | Documents: {{collect-documents.count}} found | Date: {{audit_date}}"
duedate: "{{audit_date}}"
- name: notify-compliance
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_compliance_channel_id"
text: "AUDIT PREP: {{regulatory_body}} {{audit_type}} | Date: {{audit_date}} | Docs: {{collect-documents.count}} | Jira: {{create-audit-checklist.key}}"
consumes:
- namespace: sharepoint
type: http
baseUri: "https://boeing.sharepoint.com/_api"
authentication:
type: bearer
token: "$secrets.sharepoint_access_token"
resources:
- name: search
path: "/search/query"
operations:
- name: search-documents
method: GET
- namespace: jira
type: http
baseUri: "https://boeing.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
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Accepts a workplace safety incident report, creates a high-priority ServiceNow safety incident ticket, and notifies the EHS manager via Microsoft Teams.
naftiko: "0.5"
info:
label: "Safety Incident Report to ServiceNow"
description: "Accepts a workplace safety incident report, creates a high-priority ServiceNow safety incident ticket, and notifies the EHS manager via Microsoft Teams."
tags:
- safety
- ehs
- servicenow
- microsoft-teams
- incident-response
- manufacturing
capability:
exposes:
- type: mcp
namespace: safety-ops
port: 8080
tools:
- name: report-safety-incident
description: "Given a facility code, incident description, reporter name, and incident datetime, create a high-priority ServiceNow safety incident ticket and immediately notify the Environmental Health and Safety manager via Microsoft Teams. Use when a safety incident occurs on any Boeing manufacturing floor or facility."
inputParameters:
- name: facility_code
in: body
type: string
description: "The Boeing facility code where the incident occurred, e.g. 'FAC-EVERETT-747'."
- name: incident_description
in: body
type: string
description: "A detailed description of the safety incident, including what happened and any injuries."
- name: reporter_name
in: body
type: string
description: "Full name of the person reporting the incident."
- name: incident_datetime
in: body
type: string
description: "ISO 8601 datetime when the incident occurred, e.g. '2026-03-20T14:30:00Z'."
steps:
- name: create-safety-ticket
type: call
call: "servicenow.create-incident"
with:
category: "safety"
urgency: "1"
impact: "1"
short_description: "Safety Incident at {{facility_code}}: {{incident_datetime}}"
description: "Reporter: {{reporter_name}}\nFacility: {{facility_code}}\nDatetime: {{incident_datetime}}\nDescription: {{incident_description}}"
- name: notify-ehs
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_ehs_channel_id"
text: "SAFETY INCIDENT REPORTED: Facility {{facility_code}} | {{incident_datetime}} | Ticket: {{create-safety-ticket.number}} | Reporter: {{reporter_name}}"
consumes:
- namespace: servicenow
type: http
baseUri: "https://boeing.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_username"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Retrieves open cases, recent activities, and renewal opportunities for a Salesforce account and compiles a summary digest delivered via Microsoft Teams.
naftiko: "0.5"
info:
label: "Salesforce Account Health Digest"
description: "Retrieves open cases, recent activities, and renewal opportunities for a Salesforce account and compiles a summary digest delivered via Microsoft Teams."
tags:
- sales
- crm
- salesforce
- microsoft-teams
- reporting
- account-management
capability:
exposes:
- type: mcp
namespace: sales-reporting
port: 8080
tools:
- name: digest-account-health
description: "Given a Salesforce account ID and Teams channel ID, retrieve the account's open cases, last activity date, and renewal opportunities from Salesforce, then post a formatted health summary to the Microsoft Teams channel. Use for weekly account reviews or pre-meeting preparation."
inputParameters:
- name: account_id
in: body
type: string
description: "The Salesforce account ID, e.g. '0011500001AbCdEAAV'."
- name: teams_channel_id
in: body
type: string
description: "The Microsoft Teams channel ID to post the digest to."
steps:
- name: get-account
type: call
call: "salesforce.get-account"
with:
account_id: "{{account_id}}"
- name: get-cases
type: call
call: "salesforce.list-cases"
with:
account_id: "{{account_id}}"
- name: post-digest
type: call
call: "msteams.post-message"
with:
channel_id: "{{teams_channel_id}}"
text: "Account Health: {{get-account.name}} | Open Cases: {{get-cases.total_count}} | Last Activity: {{get-account.last_activity_date}}"
consumes:
- namespace: salesforce
type: http
baseUri: "https://boeing.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_bearer_token"
resources:
- name: accounts
path: "/sobjects/Account/{account_id}"
inputParameters:
- name: account_id
in: path
operations:
- name: get-account
method: GET
- name: cases
path: "/sobjects/Case"
inputParameters:
- name: account_id
in: query
operations:
- name: list-cases
method: GET
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Retrieves defense contract details from Salesforce by contract number, returning status, value, and program name.
naftiko: "0.5"
info:
label: "Salesforce Defense Contract Lookup"
description: "Retrieves defense contract details from Salesforce by contract number, returning status, value, and program name."
tags:
- sales
- salesforce
- defense
- lookup
- aerospace
capability:
exposes:
- type: mcp
namespace: sales-ops
port: 8080
tools:
- name: get-defense-contract
description: "Given a Salesforce contract number, retrieve the defense contract record including program name, contract value, status, and contracting officer. Use for contract status inquiries."
inputParameters:
- name: contract_number
in: body
type: string
description: "The Salesforce contract number, e.g. 'CTR-FA8620-22-C-2045'."
call: "salesforce.get-contract"
with:
contract_number: "{{contract_number}}"
outputParameters:
- name: program_name
type: string
mapping: "$.records[0].Program_Name__c"
- name: contract_value
type: string
mapping: "$.records[0].Contract_Value__c"
- name: status
type: string
mapping: "$.records[0].Status"
consumes:
- namespace: salesforce
type: http
baseUri: "https://boeing.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_access_token"
resources:
- name: contracts
path: "/query"
inputParameters:
- name: contract_number
in: query
operations:
- name: get-contract
method: GET
Retrieves newly created defense contract opportunities from Salesforce and syncs key fields to SAP S/4HANA as sales orders for Boeing's defense business unit.
naftiko: "0.5"
info:
label: "Salesforce Government Contract Opportunity Sync"
description: "Retrieves newly created defense contract opportunities from Salesforce and syncs key fields to SAP S/4HANA as sales orders for Boeing's defense business unit."
tags:
- sales
- crm
- salesforce
- sap-s4hana
- defense
- sync
capability:
exposes:
- type: mcp
namespace: sales-sync
port: 8080
tools:
- name: sync-opportunity-to-sap
description: "Given a Salesforce opportunity ID, retrieve the opportunity details from Salesforce CRM and create a corresponding preliminary sales order in SAP S/4HANA for the defense business unit. Use when a Salesforce opportunity reaches Closed-Won or Contract stage."
inputParameters:
- name: opportunity_id
in: body
type: string
description: "The Salesforce opportunity ID, e.g. '0061500001ZsDpOAAV'."
steps:
- name: get-opportunity
type: call
call: "salesforce.get-opportunity"
with:
opportunity_id: "{{opportunity_id}}"
- name: create-sales-order
type: call
call: "sap-s4.create-sales-order"
with:
customer: "{{get-opportunity.account_name}}"
amount: "{{get-opportunity.amount}}"
currency: "{{get-opportunity.currency_iso_code}}"
description: "{{get-opportunity.name}}"
consumes:
- namespace: salesforce
type: http
baseUri: "https://boeing.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_bearer_token"
resources:
- name: opportunities
path: "/sobjects/Opportunity/{opportunity_id}"
inputParameters:
- name: opportunity_id
in: path
operations:
- name: get-opportunity
method: GET
- namespace: sap-s4
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_SALES_ORDER_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: sales-orders
path: "/A_SalesOrder"
operations:
- name: create-sales-order
method: POST
Scans SAP Ariba for supplier contracts expiring within a configurable number of days and notifies the procurement team in Microsoft Teams with a renewal action list.
naftiko: "0.5"
info:
label: "SAP Ariba Contract Expiry Alert"
description: "Scans SAP Ariba for supplier contracts expiring within a configurable number of days and notifies the procurement team in Microsoft Teams with a renewal action list."
tags:
- procurement
- contract-management
- sap-ariba
- microsoft-teams
- alerts
capability:
exposes:
- type: mcp
namespace: contract-alerts
port: 8080
tools:
- name: alert-expiring-contracts
description: "Given a number of days to look ahead, query SAP Ariba for all supplier contracts expiring within that window and post a formatted expiry alert with renewal links to the procurement Microsoft Teams channel. Use for weekly contract hygiene monitoring."
inputParameters:
- name: days_ahead
in: body
type: integer
description: "Number of days from today to look ahead for contract expiration, e.g. 30."
- name: teams_channel_id
in: body
type: string
description: "The Microsoft Teams channel ID for the procurement team."
steps:
- name: list-expiring
type: call
call: "ariba.list-expiring-contracts"
with:
days_ahead: "{{days_ahead}}"
- name: notify-procurement
type: call
call: "msteams.post-message"
with:
channel_id: "{{teams_channel_id}}"
text: "Contract Expiry Alert: {{list-expiring.total_count}} contracts expiring within {{days_ahead}} days. Top expiring: {{list-expiring.summary}}"
consumes:
- namespace: ariba
type: http
baseUri: "https://openapi.ariba.com/api/contract-management/v1"
authentication:
type: apikey
key: "apiKey"
value: "$secrets.ariba_api_key"
placement: query
resources:
- name: contracts
path: "/contracts"
inputParameters:
- name: days_ahead
in: query
operations:
- name: list-expiring-contracts
method: GET
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Retrieves contract status and key terms from SAP Ariba by contract ID.
naftiko: "0.5"
info:
label: "SAP Ariba Contract Status Lookup"
description: "Retrieves contract status and key terms from SAP Ariba by contract ID."
tags:
- procurement
- sap-ariba
- contracts
- lookup
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: get-ariba-contract
description: "Given a SAP Ariba contract ID, retrieve the contract status, effective dates, and total value. Use for procurement contract inquiries."
inputParameters:
- name: contract_id
in: body
type: string
description: "SAP Ariba contract ID, e.g. 'CW12345'."
call: "ariba.get-contract"
with:
contractId: "{{contract_id}}"
outputParameters:
- name: status
type: string
mapping: "$.Status"
- name: effective_date
type: string
mapping: "$.EffectiveDate"
- name: expiration_date
type: string
mapping: "$.ExpirationDate"
consumes:
- namespace: ariba
type: http
baseUri: "https://openapi.ariba.com/api/contract-management/v1"
authentication:
type: bearer
token: "$secrets.ariba_access_token"
resources:
- name: contracts
path: "/contracts/{{contractId}}"
inputParameters:
- name: contractId
in: path
operations:
- name: get-contract
method: GET
Retrieves the current status and supplier responses for an active SAP Ariba sourcing event, allowing procurement agents to monitor bid progress.
naftiko: "0.5"
info:
label: "SAP Ariba Sourcing Event Status"
description: "Retrieves the current status and supplier responses for an active SAP Ariba sourcing event, allowing procurement agents to monitor bid progress."
tags:
- procurement
- sourcing
- sap-ariba
- lookup
capability:
exposes:
- type: mcp
namespace: sourcing
port: 8080
tools:
- name: get-sourcing-event
description: "Given a SAP Ariba sourcing event ID, retrieve the event title, status, bid deadline, and list of invited suppliers with their response status. Use when procurement needs to check bidding progress on an active RFQ or RFP."
inputParameters:
- name: event_id
in: body
type: string
description: "The Ariba sourcing event ID, e.g. 'Doc10123456789'."
call: "ariba.get-event"
with:
eventId: "{{event_id}}"
outputParameters:
- name: event_title
type: string
mapping: "$.title"
- name: status
type: string
mapping: "$.status"
- name: bid_deadline
type: string
mapping: "$.bidDeadline"
consumes:
- namespace: ariba
type: http
baseUri: "https://openapi.ariba.com/api/sourcing-projects/v1"
authentication:
type: apikey
key: "apiKey"
value: "$secrets.ariba_api_key"
placement: query
resources:
- name: events
path: "/events/{eventId}"
inputParameters:
- name: eventId
in: path
operations:
- name: get-event
method: GET
Retrieves a pending employee expense report from SAP Concur, verifies the submitter's cost center in Workday, and posts the approval decision back to Concur.
naftiko: "0.5"
info:
label: "SAP Concur Expense Report Approval"
description: "Retrieves a pending employee expense report from SAP Concur, verifies the submitter's cost center in Workday, and posts the approval decision back to Concur."
tags:
- finance
- expense-management
- sap-concur
- workday
- approval
capability:
exposes:
- type: mcp
namespace: expense-approval
port: 8080
tools:
- name: approve-expense-report
description: "Given an SAP Concur expense report ID and approver employee ID, fetch the expense report from Concur, validate the submitter's cost center via Workday, and approve the report in Concur. Use when a manager or finance agent needs to review and approve an employee's expense report."
inputParameters:
- name: report_id
in: body
type: string
description: "The SAP Concur expense report ID, e.g. 'gWurnt3wk8Nq2v6'."
- name: approver_employee_id
in: body
type: string
description: "The Workday employee ID of the approving manager."
steps:
- name: get-report
type: call
call: "concur.get-expense-report"
with:
report_id: "{{report_id}}"
- name: validate-cost-center
type: call
call: "workday.get-worker"
with:
worker_id: "{{approver_employee_id}}"
- name: approve-report
type: call
call: "concur.approve-expense-report"
with:
report_id: "{{report_id}}"
approver_id: "{{validate-cost-center.employee_id}}"
consumes:
- namespace: concur
type: http
baseUri: "https://www.concursolutions.com/api/v3.0"
authentication:
type: bearer
token: "$secrets.concur_bearer_token"
resources:
- name: expense-reports
path: "/expense/reports/{report_id}"
inputParameters:
- name: report_id
in: path
operations:
- name: get-expense-report
method: GET
- name: approve-expense-report
method: PATCH
- namespace: workday
type: http
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_bearer_token"
resources:
- name: workers
path: "/boeing/workers/{worker_id}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
Retrieves actual-vs-planned budget figures from SAP S/4HANA for an active project or WBS element and posts a variance alert to Microsoft Teams when thresholds are exceeded.
naftiko: "0.5"
info:
label: "SAP Contract Budget Variance Report"
description: "Retrieves actual-vs-planned budget figures from SAP S/4HANA for an active project or WBS element and posts a variance alert to Microsoft Teams when thresholds are exceeded."
tags:
- finance
- project-controls
- sap-s4hana
- microsoft-teams
- reporting
- defense
capability:
exposes:
- type: mcp
namespace: project-finance
port: 8080
tools:
- name: report-budget-variance
description: "Given an SAP WBS element ID and variance threshold percentage, retrieve the planned versus actual cost figures for that project element from SAP S/4HANA and post a Teams alert if actual spend exceeds the threshold. Use for weekly earned value management checks on defense contracts."
inputParameters:
- name: wbs_element
in: body
type: string
description: "The SAP WBS element ID for the contract or project, e.g. 'D-USAF-2026-F15'."
- name: variance_threshold_pct
in: body
type: number
description: "The variance percentage above which to trigger an alert, e.g. 10.0 for 10%."
steps:
- name: get-budget-actuals
type: call
call: "sap-s4-co.get-wbs-actuals"
with:
WBSElement: "{{wbs_element}}"
- name: post-variance-alert
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_finance_channel_id"
text: "Budget Variance Alert: WBS {{wbs_element}} | Planned: {{get-budget-actuals.planned_cost}} | Actual: {{get-budget-actuals.actual_cost}} | Threshold: {{variance_threshold_pct}}%"
consumes:
- namespace: sap-s4-co
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_COPROJECTELMT_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: wbs-elements
path: "/A_EnterpriseProjectElement(ProjectElement='{WBSElement}')"
inputParameters:
- name: WBSElement
in: path
operations:
- name: get-wbs-actuals
method: GET
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Processes a goods receipt in SAP, triggers a quality inspection lot, and notifies the receiving team via Microsoft Teams.
naftiko: "0.5"
info:
label: "SAP Goods Receipt and Quality Inspection"
description: "Processes a goods receipt in SAP, triggers a quality inspection lot, and notifies the receiving team via Microsoft Teams."
tags:
- supply-chain
- sap
- sap-s4hana
- quality
- microsoft-teams
- manufacturing
capability:
exposes:
- type: mcp
namespace: supply-chain-ops
port: 8080
tools:
- name: process-goods-receipt
description: "Given a purchase order number and delivery note, post the goods receipt in SAP, trigger a quality inspection lot, and notify the receiving dock team via Teams. Use when materials arrive at the receiving dock."
inputParameters:
- name: po_number
in: body
type: string
description: "SAP purchase order number, e.g. '4500012345'."
- name: delivery_note
in: body
type: string
description: "Vendor delivery note number."
- name: plant_code
in: body
type: string
description: "Receiving plant code, e.g. 'EVERETT-1000'."
steps:
- name: post-goods-receipt
type: call
call: "sap-s4.create-goods-receipt"
with:
PurchaseOrder: "{{po_number}}"
DeliveryNote: "{{delivery_note}}"
Plant: "{{plant_code}}"
- name: create-inspection-lot
type: call
call: "sap-s4.create-inspection-lot"
with:
material_document: "{{post-goods-receipt.MaterialDocument}}"
inspection_type: "01"
- name: notify-receiving
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_receiving_channel_id"
text: "GOODS RECEIVED: PO {{po_number}} | Plant: {{plant_code}} | GR: {{post-goods-receipt.MaterialDocument}} | QI Lot: {{create-inspection-lot.InspectionLot}}"
consumes:
- namespace: sap-s4
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_DOCUMENT_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: goods-receipts
path: "/A_MaterialDocumentHeader"
operations:
- name: create-goods-receipt
method: POST
- name: inspection-lots
path: "/A_InspectionLot"
operations:
- name: create-inspection-lot
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Checks current inventory stock levels for a given material at a specified plant in SAP S/4HANA.
naftiko: "0.5"
info:
label: "SAP Inventory Stock Level Check"
description: "Checks current inventory stock levels for a given material at a specified plant in SAP S/4HANA."
tags:
- supply-chain
- sap
- sap-s4hana
- inventory
- manufacturing
capability:
exposes:
- type: mcp
namespace: supply-chain
port: 8080
tools:
- name: check-stock-level
description: "Given a material number and plant code, retrieve current unrestricted, in-quality, and blocked stock quantities from SAP S/4HANA. Use when planners or production managers need to verify parts availability."
inputParameters:
- name: material_number
in: body
type: string
description: "SAP material number, e.g. 'MAT-7478832'."
- name: plant_code
in: body
type: string
description: "SAP plant code, e.g. 'EVERETT-1000'."
call: "sap-s4.get-stock"
with:
Material: "{{material_number}}"
Plant: "{{plant_code}}"
outputParameters:
- name: unrestricted_stock
type: string
mapping: "$.d.MatlWrhsStkQtyInMatlBaseUnit"
- name: quality_stock
type: string
mapping: "$.d.QualityInspectionStockQty"
consumes:
- namespace: sap-s4
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: stock
path: "/A_MatlStkInAcctMod"
inputParameters:
- name: Material
in: query
- name: Plant
in: query
operations:
- name: get-stock
method: GET
Retrieves a pending vendor invoice from SAP S/4HANA, validates it against the corresponding purchase order, and posts the approval decision back to SAP.
naftiko: "0.5"
info:
label: "SAP Invoice Processing and Approval"
description: "Retrieves a pending vendor invoice from SAP S/4HANA, validates it against the corresponding purchase order, and posts the approval decision back to SAP."
tags:
- finance
- accounts-payable
- sap
- sap-s4hana
- approval
capability:
exposes:
- type: mcp
namespace: finance-ap
port: 8080
tools:
- name: approve-invoice
description: "Given an SAP invoice document number and fiscal year, fetch the invoice from SAP S/4HANA, look up the matching purchase order to verify amounts, and post the approval back to SAP. Use when an AP agent or approver needs to validate and approve a vendor invoice."
inputParameters:
- name: invoice_document
in: body
type: string
description: "The SAP invoice document number, e.g. '5100001234'."
- name: fiscal_year
in: body
type: string
description: "The fiscal year of the invoice, e.g. '2026'."
steps:
- name: get-invoice
type: call
call: "sap-s4-fi.get-invoice"
with:
InvoiceDocument: "{{invoice_document}}"
FiscalYear: "{{fiscal_year}}"
- name: post-approval
type: call
call: "sap-s4-fi.approve-invoice"
with:
InvoiceDocument: "{{invoice_document}}"
FiscalYear: "{{fiscal_year}}"
consumes:
- namespace: sap-s4-fi
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_SUPPLIER_INVOICE_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: supplier-invoices
path: "/A_SupplierInvoice(InvoiceDocument='{InvoiceDocument}',FiscalYear='{FiscalYear}')"
inputParameters:
- name: InvoiceDocument
in: path
- name: FiscalYear
in: path
operations:
- name: get-invoice
method: GET
- name: approve-invoice
method: POST
Retrieves material master data from SAP S/4HANA by material number, returning description, unit of measure, and procurement type.
naftiko: "0.5"
info:
label: "SAP Material Master Lookup"
description: "Retrieves material master data from SAP S/4HANA by material number, returning description, unit of measure, and procurement type."
tags:
- procurement
- sap
- sap-s4hana
- lookup
- manufacturing
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: get-material-master
description: "Given a SAP material number, retrieve material master data including description, base unit of measure, material group, and procurement type from SAP S/4HANA. Use when an engineer or planner needs material specifications."
inputParameters:
- name: material_number
in: body
type: string
description: "The SAP material number, e.g. 'MAT-7478832'."
call: "sap-s4.get-material"
with:
MaterialNumber: "{{material_number}}"
outputParameters:
- name: material_description
type: string
mapping: "$.d.MaterialDescription"
- name: base_unit
type: string
mapping: "$.d.BaseUnit"
- name: material_group
type: string
mapping: "$.d.MaterialGroup"
consumes:
- namespace: sap-s4
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_MASTER_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: materials
path: "/A_Material('{MaterialNumber}')"
inputParameters:
- name: MaterialNumber
in: path
operations:
- name: get-material
method: GET
Runs MRP exception analysis in SAP, identifies critical shortages, creates Jira procurement tasks, and alerts the supply chain team via Teams.
naftiko: "0.5"
info:
label: "SAP Material Requirements Planning Alert"
description: "Runs MRP exception analysis in SAP, identifies critical shortages, creates Jira procurement tasks, and alerts the supply chain team via Teams."
tags:
- supply-chain
- sap
- jira
- microsoft-teams
- manufacturing
- procurement
capability:
exposes:
- type: mcp
namespace: supply-chain-ops
port: 8080
tools:
- name: analyze-mrp-exceptions
description: "Given a plant code and MRP controller, run MRP exception analysis in SAP, create Jira tasks for critical shortages, and alert the supply chain team via Teams. Use for daily MRP review."
inputParameters:
- name: plant_code
in: body
type: string
description: "SAP plant code, e.g. 'EVERETT-1000'."
- name: mrp_controller
in: body
type: string
description: "MRP controller code."
steps:
- name: get-mrp-exceptions
type: call
call: "sap-s4.get-mrp-exceptions"
with:
Plant: "{{plant_code}}"
MRPController: "{{mrp_controller}}"
- name: create-procurement-tasks
type: call
call: "jira.create-issue"
with:
project_key: "SCM"
issuetype: "Task"
summary: "MRP Shortages: {{plant_code}} - {{mrp_controller}}"
description: "Critical shortages: {{get-mrp-exceptions.critical_count}} items | Plant: {{plant_code}}"
- name: alert-supply-chain
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_supply_chain_channel_id"
text: "MRP ALERT: {{plant_code}} | Controller: {{mrp_controller}} | Critical: {{get-mrp-exceptions.critical_count}} | Jira: {{create-procurement-tasks.key}}"
consumes:
- namespace: sap-s4
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_MRP_MATERIALS_SRV_01"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: mrp-exceptions
path: "/A_MRPMaterial"
operations:
- name: get-mrp-exceptions
method: GET
- namespace: jira
type: http
baseUri: "https://boeing.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
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Retrieves an SAP plant maintenance work order with its status, assigned technician, and estimated completion from SAP S/4HANA for manufacturing operations inquiries.
naftiko: "0.5"
info:
label: "SAP Plant Maintenance Work Order Lookup"
description: "Retrieves an SAP plant maintenance work order with its status, assigned technician, and estimated completion from SAP S/4HANA for manufacturing operations inquiries."
tags:
- manufacturing
- plant-maintenance
- sap
- sap-s4hana
- lookup
capability:
exposes:
- type: mcp
namespace: plant-maintenance
port: 8080
tools:
- name: get-work-order
description: "Given an SAP plant maintenance work order number, retrieve the order's current status, assigned maintenance technician, priority, and planned completion date from SAP S/4HANA. Use when maintenance supervisors or manufacturing agents need to check work order progress."
inputParameters:
- name: order_number
in: body
type: string
description: "The SAP maintenance work order number, e.g. '10000123'."
call: "sap-pm.get-work-order"
with:
MaintenanceOrder: "{{order_number}}"
outputParameters:
- name: status
type: string
mapping: "$.d.SystemStatus"
- name: assigned_technician
type: string
mapping: "$.d.PersonResponsible"
- name: planned_finish_date
type: string
mapping: "$.d.LatestAcceptableCompletionDate"
- name: priority
type: string
mapping: "$.d.OrderPriority"
consumes:
- namespace: sap-pm
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_MAINTORDER_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: maintenance-orders
path: "/MaintenanceOrder('{MaintenanceOrder}')"
inputParameters:
- name: MaintenanceOrder
in: path
operations:
- name: get-work-order
method: GET
Plans a plant shutdown by creating SAP PM maintenance orders, scheduling resources in Workday, and notifying affected teams via Teams.
naftiko: "0.5"
info:
label: "SAP Plant Shutdown Planning Workflow"
description: "Plans a plant shutdown by creating SAP PM maintenance orders, scheduling resources in Workday, and notifying affected teams via Teams."
tags:
- manufacturing
- sap
- workday
- microsoft-teams
- maintenance
- planning
capability:
exposes:
- type: mcp
namespace: manufacturing-ops
port: 8080
tools:
- name: plan-plant-shutdown
description: "Given a plant code, shutdown dates, and maintenance scope, create SAP PM maintenance orders, check Workday resource availability, and notify affected teams via Teams. Use when planning scheduled plant shutdowns."
inputParameters:
- name: plant_code
in: body
type: string
description: "SAP plant code."
- name: start_date
in: body
type: string
description: "Shutdown start date in ISO 8601 format."
- name: end_date
in: body
type: string
description: "Shutdown end date in ISO 8601 format."
- name: maintenance_scope
in: body
type: string
description: "Scope of maintenance activities."
steps:
- name: create-maintenance-orders
type: call
call: "sap-pm.create-shutdown-orders"
with:
Plant: "{{plant_code}}"
StartDate: "{{start_date}}"
EndDate: "{{end_date}}"
Scope: "{{maintenance_scope}}"
- name: check-resource-availability
type: call
call: "workday.get-availability"
with:
department: "MAINTENANCE-{{plant_code}}"
start_date: "{{start_date}}"
end_date: "{{end_date}}"
- name: notify-teams
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_plant_mgmt_channel_id"
text: "PLANT SHUTDOWN: {{plant_code}} | {{start_date}} to {{end_date}} | Scope: {{maintenance_scope}} | SAP Orders: {{create-maintenance-orders.count}} | Available Staff: {{check-resource-availability.count}}"
consumes:
- namespace: sap-pm
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_MAINTORDER_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: maintenance-orders
path: "/MaintenanceOrder"
operations:
- name: create-shutdown-orders
method: POST
- namespace: workday
type: http
baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/boeing"
authentication:
type: bearer
token: "$secrets.workday_bearer_token"
resources:
- name: availability
path: "/workers/availability"
operations:
- name: get-availability
method: GET
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Retrieves the status and progress of a production order from SAP S/4HANA by order number.
naftiko: "0.5"
info:
label: "SAP Production Order Status"
description: "Retrieves the status and progress of a production order from SAP S/4HANA by order number."
tags:
- production
- sap
- sap-s4hana
- manufacturing
- lookup
capability:
exposes:
- type: mcp
namespace: production
port: 8080
tools:
- name: get-production-order
description: "Given a SAP production order number, retrieve the order status, planned vs actual quantities, and scheduled dates. Use when production managers need to check manufacturing order progress."
inputParameters:
- name: order_number
in: body
type: string
description: "SAP production order number, e.g. 'PRD-1000234'."
call: "sap-s4.get-prod-order"
with:
ManufacturingOrder: "{{order_number}}"
outputParameters:
- name: planned_qty
type: string
mapping: "$.d.MfgOrderPlannedTotalQty"
- name: actual_qty
type: string
mapping: "$.d.MfgOrderConfirmedYieldQty"
- name: status
type: string
mapping: "$.d.ManufacturingOrderStatus"
consumes:
- namespace: sap-s4
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_PRODUCTION_ORDER_2_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: production-orders
path: "/A_ProductionOrder_2('{ManufacturingOrder}')"
inputParameters:
- name: ManufacturingOrder
in: path
operations:
- name: get-prod-order
method: GET
Retrieves a purchase order and its line items from SAP S/4HANA by PO number, returning vendor, amount, and approval status for agent or employee queries.
naftiko: "0.5"
info:
label: "SAP Purchase Order Lookup"
description: "Retrieves a purchase order and its line items from SAP S/4HANA by PO number, returning vendor, amount, and approval status for agent or employee queries."
tags:
- finance
- procurement
- sap
- sap-s4hana
- lookup
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: get-purchase-order
description: "Given a SAP purchase order number, retrieve the PO header and line items including vendor name, total amount, currency, and current approval status from SAP S/4HANA. Use this when an employee or agent needs to check PO details, approval state, or vendor information."
inputParameters:
- name: po_number
in: body
type: string
description: "The SAP purchase order number, e.g. '4500012345'."
call: "sap-s4.get-po"
with:
PurchaseOrder: "{{po_number}}"
outputParameters:
- name: vendor_name
type: string
mapping: "$.d.Supplier"
- name: net_amount
type: string
mapping: "$.d.NetAmount"
- name: currency
type: string
mapping: "$.d.DocumentCurrency"
- name: status
type: string
mapping: "$.d.ProcessingStatus"
consumes:
- namespace: sap-s4
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_PURCHASEORDER_PROCESS_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: purchase-orders
path: "/A_PurchaseOrder('{PurchaseOrder}')"
inputParameters:
- name: PurchaseOrder
in: path
operations:
- name: get-po
method: GET
Retrieves vendor master data from SAP by vendor number, returning name, address, and payment terms.
naftiko: "0.5"
info:
label: "SAP Vendor Master Lookup"
description: "Retrieves vendor master data from SAP by vendor number, returning name, address, and payment terms."
tags:
- procurement
- sap
- sap-s4hana
- vendor
- lookup
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: get-vendor
description: "Given a SAP vendor number, retrieve vendor master data including company name, address, payment terms, and status. Use for supplier verification and procurement inquiries."
inputParameters:
- name: vendor_number
in: body
type: string
description: "SAP vendor number, e.g. '0001000234'."
call: "sap-s4.get-vendor"
with:
Supplier: "{{vendor_number}}"
outputParameters:
- name: vendor_name
type: string
mapping: "$.d.SupplierName"
- name: payment_terms
type: string
mapping: "$.d.PaymentTerms"
- name: country
type: string
mapping: "$.d.Country"
consumes:
- namespace: sap-s4
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: suppliers
path: "/A_Supplier('{Supplier}')"
inputParameters:
- name: Supplier
in: path
operations:
- name: get-vendor
method: GET
Retrieves IT asset details from ServiceNow CMDB by asset tag, returning owner, location, and lifecycle status.
naftiko: "0.5"
info:
label: "ServiceNow IT Asset Lookup"
description: "Retrieves IT asset details from ServiceNow CMDB by asset tag, returning owner, location, and lifecycle status."
tags:
- it-operations
- servicenow
- cmdb
- lookup
capability:
exposes:
- type: mcp
namespace: it-ops
port: 8080
tools:
- name: get-asset
description: "Given an IT asset tag, retrieve the asset record from ServiceNow CMDB including owner, location, model, and lifecycle status. Use when support staff need to verify asset details."
inputParameters:
- name: asset_tag
in: body
type: string
description: "The IT asset tag, e.g. 'BOE-LAP-00412'."
call: "servicenow.get-asset"
with:
asset_tag: "{{asset_tag}}"
outputParameters:
- name: owner
type: string
mapping: "$.result.assigned_to.display_value"
- name: location
type: string
mapping: "$.result.location.display_value"
- name: status
type: string
mapping: "$.result.install_status"
consumes:
- namespace: servicenow
type: http
baseUri: "https://boeing.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_username"
password: "$secrets.servicenow_password"
resources:
- name: assets
path: "/table/alm_hardware"
inputParameters:
- name: asset_tag
in: query
operations:
- name: get-asset
method: GET
Queries ServiceNow for the latest backup job execution records for a given configuration item and alerts via Microsoft Teams if the most recent backup is older than the defined threshold.
naftiko: "0.5"
info:
label: "ServiceNow Backup Verification Check"
description: "Queries ServiceNow for the latest backup job execution records for a given configuration item and alerts via Microsoft Teams if the most recent backup is older than the defined threshold."
tags:
- itsm
- backup
- servicenow
- microsoft-teams
- operations
capability:
exposes:
- type: mcp
namespace: backup-ops
port: 8080
tools:
- name: verify-backup-status
description: "Given a ServiceNow configuration item name and maximum acceptable backup age in hours, retrieve the most recent backup job record for that CI from ServiceNow and post a Teams alert if the backup is stale or failed. Use for daily backup verification across Boeing's critical IT systems."
inputParameters:
- name: ci_name
in: body
type: string
description: "The ServiceNow configuration item name to check, e.g. 'PROD-SAP-DB-01'."
- name: max_age_hours
in: body
type: integer
description: "Maximum acceptable age of the last successful backup in hours, e.g. 24."
steps:
- name: get-backup-record
type: call
call: "servicenow.get-backup-job"
with:
ci_name: "{{ci_name}}"
- name: alert-if-stale
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_ops_channel_id"
text: "Backup Check: {{ci_name}} | Last successful backup: {{get-backup-record.last_success}} | Status: {{get-backup-record.status}} | Max age threshold: {{max_age_hours}}h"
consumes:
- namespace: servicenow
type: http
baseUri: "https://boeing.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_username"
password: "$secrets.servicenow_password"
resources:
- name: backup-jobs
path: "/table/u_backup_job"
inputParameters:
- name: ci_name
in: query
operations:
- name: get-backup-job
method: GET
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Retrieves a pending ServiceNow change request, looks up the approver's profile from Microsoft Graph, and records the approval decision back to ServiceNow.
naftiko: "0.5"
info:
label: "ServiceNow Change Request Approval"
description: "Retrieves a pending ServiceNow change request, looks up the approver's profile from Microsoft Graph, and records the approval decision back to ServiceNow."
tags:
- itsm
- change-management
- servicenow
- microsoft-graph
- approval
capability:
exposes:
- type: mcp
namespace: change-mgmt
port: 8080
tools:
- name: approve-change-request
description: "Given a ServiceNow change request number and approver email, fetch the change request details, verify the approver is authorized via Microsoft Graph, and post the approval to ServiceNow. Use when an ITSM agent or approver needs to authorize a production change."
inputParameters:
- name: change_number
in: body
type: string
description: "The ServiceNow change request number, e.g. 'CHG0012345'."
- name: approver_email
in: body
type: string
description: "The email address of the approving manager."
steps:
- name: get-change
type: call
call: "servicenow.get-change"
with:
number: "{{change_number}}"
- name: get-approver
type: call
call: "msgraph.get-user"
with:
user_id: "{{approver_email}}"
- name: post-approval
type: call
call: "servicenow.approve-change"
with:
sys_id: "{{get-change.sys_id}}"
approver_id: "{{get-approver.id}}"
state: "approved"
consumes:
- namespace: servicenow
type: http
baseUri: "https://boeing.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_username"
password: "$secrets.servicenow_password"
resources:
- name: change-requests
path: "/table/change_request"
inputParameters:
- name: number
in: query
operations:
- name: get-change
method: GET
- name: approve-change
method: PATCH
- namespace: msgraph
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: users
path: "/users/{user_id}"
inputParameters:
- name: user_id
in: path
operations:
- name: get-user
method: GET
Retrieves a quality document from SharePoint by document ID, returning content, version, and approval status.
naftiko: "0.5"
info:
label: "SharePoint Quality Document Retrieval"
description: "Retrieves a quality document from SharePoint by document ID, returning content, version, and approval status."
tags:
- quality
- sharepoint
- document-management
- manufacturing
capability:
exposes:
- type: mcp
namespace: quality
port: 8080
tools:
- name: get-quality-document
description: "Given a SharePoint document ID, retrieve the quality assurance document including title, version, approval status, and download link. Use for quality audits and inspections."
inputParameters:
- name: document_id
in: body
type: string
description: "SharePoint document ID, e.g. 'QA-DOC-2026-0412'."
call: "sharepoint.get-document"
with:
item_id: "{{document_id}}"
outputParameters:
- name: title
type: string
mapping: "$.d.Title"
- name: version
type: string
mapping: "$.d.UIVersionLabel"
- name: approval_status
type: string
mapping: "$.d.OData__ModerationStatus"
consumes:
- namespace: sharepoint
type: http
baseUri: "https://boeing.sharepoint.com/_api"
authentication:
type: bearer
token: "$secrets.sharepoint_access_token"
resources:
- name: documents
path: "/web/lists/getbytitle('QualityDocs')/items({{item_id}})"
inputParameters:
- name: item_id
in: path
operations:
- name: get-document
method: GET
Triggers a Snowflake stored procedure to refresh Boeing's executive financial dashboard materialized views and notifies the analytics team in Microsoft Teams when complete.
naftiko: "0.5"
info:
label: "Snowflake BI Refresh Trigger"
description: "Triggers a Snowflake stored procedure to refresh Boeing's executive financial dashboard materialized views and notifies the analytics team in Microsoft Teams when complete."
tags:
- data
- analytics
- snowflake
- microsoft-teams
- bi
- reporting
capability:
exposes:
- type: mcp
namespace: bi-refresh
port: 8080
tools:
- name: refresh-executive-dashboard
description: "Given a Snowflake warehouse name and dashboard name, execute the materialized view refresh procedure in Snowflake and post a completion notification to the analytics Microsoft Teams channel. Use at period close or when the CFO dashboard requires fresh data."
inputParameters:
- name: warehouse_name
in: body
type: string
description: "The Snowflake warehouse to use for the refresh, e.g. 'BOEING_BI_WH'."
- name: dashboard_name
in: body
type: string
description: "The name of the dashboard to refresh, e.g. 'EXECUTIVE_FINANCIAL_SUMMARY'."
steps:
- name: run-refresh
type: call
call: "snowflake.execute-refresh"
with:
warehouse: "{{warehouse_name}}"
procedure: "REFRESH_{{dashboard_name}}"
- name: notify-analytics
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_analytics_channel_id"
text: "Dashboard refresh complete: {{dashboard_name}} | Warehouse: {{warehouse_name}} | Duration: {{run-refresh.elapsed_seconds}}s"
consumes:
- namespace: snowflake
type: http
baseUri: "https://boeing.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_bearer_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-refresh
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Queries Snowflake query history to detect failed or long-running pipeline jobs and creates a Datadog alert if thresholds are exceeded.
naftiko: "0.5"
info:
label: "Snowflake Data Pipeline Health Check"
description: "Queries Snowflake query history to detect failed or long-running pipeline jobs and creates a Datadog alert if thresholds are exceeded."
tags:
- data
- analytics
- snowflake
- datadog
- pipeline-monitoring
capability:
exposes:
- type: mcp
namespace: data-ops
port: 8080
tools:
- name: check-pipeline-health
description: "Given a Snowflake warehouse name and time window, query the Snowflake query history for failed or slow-running jobs, and if failures are found, create a Datadog event to surface the issue to the data engineering team. Use for scheduled data pipeline health monitoring."
inputParameters:
- name: warehouse_name
in: body
type: string
description: "The Snowflake virtual warehouse name to inspect, e.g. 'BOEING_ETL_WH'."
- name: lookback_minutes
in: body
type: integer
description: "Number of minutes to look back in query history, e.g. 60."
steps:
- name: query-history
type: call
call: "snowflake.get-query-history"
with:
warehouse: "{{warehouse_name}}"
lookback_minutes: "{{lookback_minutes}}"
- name: flag-failure
type: call
call: "datadog.create-event"
with:
title: "Snowflake pipeline failures in {{warehouse_name}}"
text: "Failed queries detected in last {{lookback_minutes}} minutes. Count: {{query-history.failure_count}}"
alert_type: "warning"
consumes:
- namespace: snowflake
type: http
baseUri: "https://boeing.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_bearer_token"
resources:
- name: query-history
path: "/statements"
inputParameters:
- name: warehouse
in: query
- name: lookback_minutes
in: query
operations:
- name: get-query-history
method: POST
- namespace: datadog
type: http
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: events
path: "/events"
operations:
- name: create-event
method: POST
Searches Splunk for security events matching a given query within a specified time range.
naftiko: "0.5"
info:
label: "Splunk Security Event Search"
description: "Searches Splunk for security events matching a given query within a specified time range."
tags:
- security
- splunk
- search
- monitoring
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: search-security-events
description: "Given a Splunk search query and time range, execute the search and return matching security events. Use for incident investigation and security audits."
inputParameters:
- name: search_query
in: body
type: string
description: "Splunk SPL search query, e.g. 'index=security sourcetype=firewall action=blocked'."
- name: time_range
in: body
type: string
description: "Time range for the search, e.g. '-24h'."
call: "splunk.create-search"
with:
search: "{{search_query}}"
earliest_time: "{{time_range}}"
outputParameters:
- name: sid
type: string
mapping: "$.sid"
consumes:
- namespace: splunk
type: http
baseUri: "https://splunk.boeing.com:8089/services"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: searches
path: "/search/jobs"
operations:
- name: create-search
method: POST
Onboards a new supplier by creating a vendor master record in SAP, a Salesforce account, and a ServiceNow onboarding task, then notifying procurement via Teams.
naftiko: "0.5"
info:
label: "Supplier Onboarding Orchestration"
description: "Onboards a new supplier by creating a vendor master record in SAP, a Salesforce account, and a ServiceNow onboarding task, then notifying procurement via Teams."
tags:
- procurement
- sap
- salesforce
- servicenow
- microsoft-teams
- supply-chain
capability:
exposes:
- type: mcp
namespace: procurement-ops
port: 8080
tools:
- name: onboard-supplier
description: "Given a supplier name, DUNS number, and primary contact, create a SAP vendor master record, a Salesforce account, a ServiceNow onboarding task, and notify procurement via Teams. Use when a new supplier is approved for onboarding."
inputParameters:
- name: supplier_name
in: body
type: string
description: "Name of the new supplier."
- name: duns_number
in: body
type: string
description: "DUNS number for the supplier."
- name: primary_contact
in: body
type: string
description: "Primary contact email for the supplier."
steps:
- name: create-sap-vendor
type: call
call: "sap-s4.create-vendor"
with:
SupplierName: "{{supplier_name}}"
DUNSNumber: "{{duns_number}}"
- name: create-sf-account
type: call
call: "salesforce.create-account"
with:
Name: "{{supplier_name}}"
Type: "Vendor"
DUNS: "{{duns_number}}"
- name: create-onboarding-task
type: call
call: "servicenow.create-task"
with:
short_description: "Supplier Onboarding: {{supplier_name}}"
description: "SAP Vendor: {{create-sap-vendor.Supplier}} | SF Account: {{create-sf-account.id}} | Contact: {{primary_contact}}"
- name: notify-procurement
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_procurement_channel_id"
text: "NEW SUPPLIER: {{supplier_name}} | SAP: {{create-sap-vendor.Supplier}} | SNOW: {{create-onboarding-task.number}}"
consumes:
- namespace: sap-s4
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: suppliers
path: "/A_Supplier"
operations:
- name: create-vendor
method: POST
- namespace: salesforce
type: http
baseUri: "https://boeing.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_access_token"
resources:
- name: accounts
path: "/sobjects/Account"
operations:
- name: create-account
method: POST
- namespace: servicenow
type: http
baseUri: "https://boeing.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_username"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/sc_task"
operations:
- name: create-task
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Initiates a supplier quality audit by pulling vendor data from SAP, creating a Jira audit task, and scheduling a review meeting via Microsoft Teams.
naftiko: "0.5"
info:
label: "Supplier Quality Audit Workflow"
description: "Initiates a supplier quality audit by pulling vendor data from SAP, creating a Jira audit task, and scheduling a review meeting via Microsoft Teams."
tags:
- quality
- supply-chain
- sap
- jira
- microsoft-teams
- procurement
capability:
exposes:
- type: mcp
namespace: quality-ops
port: 8080
tools:
- name: initiate-supplier-audit
description: "Given a vendor number and audit scope, pull vendor data from SAP, create a Jira audit task, and schedule a review meeting via Teams. Use when a supplier quality audit is required."
inputParameters:
- name: vendor_number
in: body
type: string
description: "SAP vendor number, e.g. '0001000234'."
- name: audit_scope
in: body
type: string
description: "Scope of the audit, e.g. 'Annual quality system review'."
steps:
- name: get-vendor-data
type: call
call: "sap-s4.get-vendor"
with:
Supplier: "{{vendor_number}}"
- name: create-audit-task
type: call
call: "jira.create-issue"
with:
project_key: "QA"
issuetype: "Task"
summary: "Supplier Audit: {{get-vendor-data.SupplierName}} ({{vendor_number}})"
description: "Scope: {{audit_scope}} | Vendor: {{get-vendor-data.SupplierName}}"
- name: notify-audit-team
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_quality_channel_id"
text: "SUPPLIER AUDIT INITIATED: {{get-vendor-data.SupplierName}} | Scope: {{audit_scope}} | Jira: {{create-audit-task.key}}"
consumes:
- namespace: sap-s4
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: suppliers
path: "/A_Supplier('{Supplier}')"
inputParameters:
- name: Supplier
in: path
operations:
- name: get-vendor
method: GET
- namespace: jira
type: http
baseUri: "https://boeing.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
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
When a supply chain disruption is detected, creates a Jira incident, updates affected SAP purchase orders, and notifies procurement via Teams.
naftiko: "0.5"
info:
label: "Supply Chain Disruption Alert"
description: "When a supply chain disruption is detected, creates a Jira incident, updates affected SAP purchase orders, and notifies procurement via Teams."
tags:
- supply-chain
- jira
- sap
- microsoft-teams
- procurement
- aerospace
capability:
exposes:
- type: mcp
namespace: supply-chain-ops
port: 8080
tools:
- name: handle-supply-disruption
description: "Given a supplier ID, disruption description, and affected PO numbers, create a Jira incident, flag the SAP purchase orders, and notify procurement via Teams. Use when a supply chain disruption impacts Boeing operations."
inputParameters:
- name: supplier_id
in: body
type: string
description: "SAP supplier ID affected by the disruption."
- name: disruption_desc
in: body
type: string
description: "Description of the supply chain disruption."
- name: affected_pos
in: body
type: string
description: "Comma-separated list of affected PO numbers."
steps:
- name: create-disruption-ticket
type: call
call: "jira.create-issue"
with:
project_key: "SCM"
issuetype: "Bug"
summary: "Supply Disruption: Supplier {{supplier_id}}"
description: "{{disruption_desc}} | Affected POs: {{affected_pos}}"
- name: flag-purchase-orders
type: call
call: "sap-s4.update-po-status"
with:
po_numbers: "{{affected_pos}}"
status_note: "Supply disruption: {{create-disruption-ticket.key}}"
- name: notify-procurement
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_procurement_channel_id"
text: "SUPPLY DISRUPTION: Supplier {{supplier_id}} | {{disruption_desc}} | POs: {{affected_pos}} | Jira: {{create-disruption-ticket.key}}"
consumes:
- namespace: jira
type: http
baseUri: "https://boeing.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
- namespace: sap-s4
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_PURCHASEORDER_PROCESS_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: purchase-orders
path: "/A_PurchaseOrder"
operations:
- name: update-po-status
method: PATCH
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Triggers a refresh of a Tableau manufacturing analytics dashboard by workbook ID.
naftiko: "0.5"
info:
label: "Tableau Manufacturing Dashboard Refresh"
description: "Triggers a refresh of a Tableau manufacturing analytics dashboard by workbook ID."
tags:
- analytics
- tableau
- manufacturing
- dashboard
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: refresh-dashboard
description: "Given a Tableau workbook ID, trigger an extract refresh for the manufacturing analytics dashboard. Use to ensure dashboards reflect latest production data."
inputParameters:
- name: workbook_id
in: body
type: string
description: "Tableau workbook ID, e.g. 'wb-mfg-quality-2026'."
call: "tableau.refresh-workbook"
with:
workbook_id: "{{workbook_id}}"
outputParameters:
- name: job_id
type: string
mapping: "$.job.id"
- name: status
type: string
mapping: "$.job.status"
consumes:
- namespace: tableau
type: http
baseUri: "https://tableau.boeing.com/api/3.19"
authentication:
type: bearer
token: "$secrets.tableau_access_token"
resources:
- name: workbooks
path: "/sites/boeing/workbooks/{{workbook_id}}/refresh"
inputParameters:
- name: workbook_id
in: path
operations:
- name: refresh-workbook
method: POST
Checks SAP PM for tooling calibration due dates, creates ServiceNow reminders, and alerts tool crib managers via Microsoft Teams.
naftiko: "0.5"
info:
label: "Tooling Calibration Due Alert"
description: "Checks SAP PM for tooling calibration due dates, creates ServiceNow reminders, and alerts tool crib managers via Microsoft Teams."
tags:
- manufacturing
- sap
- servicenow
- microsoft-teams
- quality
- tooling
capability:
exposes:
- type: mcp
namespace: quality-ops
port: 8080
tools:
- name: check-calibration-due
description: "Given a tool category and plant code, query SAP PM for tools with calibration due within the next 30 days, create ServiceNow reminder tasks, and alert tool crib managers via Teams. Use for proactive calibration management."
inputParameters:
- name: tool_category
in: body
type: string
description: "Tool category, e.g. 'torque-wrenches'."
- name: plant_code
in: body
type: string
description: "Plant code, e.g. 'EVERETT-1000'."
steps:
- name: query-calibration-due
type: call
call: "sap-pm.get-calibration-due"
with:
category: "{{tool_category}}"
plant: "{{plant_code}}"
- name: create-reminder
type: call
call: "servicenow.create-task"
with:
short_description: "Calibration Due: {{tool_category}} at {{plant_code}}"
description: "Tools due for calibration: {{query-calibration-due.count}} items"
- name: alert-tool-crib
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_toolcrib_channel_id"
text: "CALIBRATION DUE: {{query-calibration-due.count}} {{tool_category}} tools at {{plant_code}} | SNOW: {{create-reminder.number}}"
consumes:
- namespace: sap-pm
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_MAINTORDER_SRV"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: calibration
path: "/MaintenanceOrder"
operations:
- name: get-calibration-due
method: GET
- namespace: servicenow
type: http
baseUri: "https://boeing.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_username"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/sc_task"
operations:
- name: create-task
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Compiles a vendor performance scorecard by pulling delivery and quality data from SAP, aggregating in Snowflake, and publishing to Tableau.
naftiko: "0.5"
info:
label: "Vendor Performance Scorecard Generation"
description: "Compiles a vendor performance scorecard by pulling delivery and quality data from SAP, aggregating in Snowflake, and publishing to Tableau."
tags:
- supply-chain
- sap
- snowflake
- tableau
- procurement
- analytics
capability:
exposes:
- type: mcp
namespace: procurement-ops
port: 8080
tools:
- name: generate-vendor-scorecard
description: "Given a vendor number and reporting period, pull delivery and quality metrics from SAP, aggregate in Snowflake, and refresh the Tableau vendor scorecard. Use for quarterly vendor performance reviews."
inputParameters:
- name: vendor_number
in: body
type: string
description: "SAP vendor number, e.g. '0001000234'."
- name: period
in: body
type: string
description: "Reporting period, e.g. '2026-Q1'."
steps:
- name: extract-sap-data
type: call
call: "sap-s4.get-vendor-metrics"
with:
Supplier: "{{vendor_number}}"
Period: "{{period}}"
- name: aggregate-in-snowflake
type: call
call: "snowflake.execute-query"
with:
warehouse: "PROCUREMENT_WH"
query: "CALL sp_vendor_scorecard('{{vendor_number}}', '{{period}}');"
- name: refresh-scorecard
type: call
call: "tableau.refresh-workbook"
with:
workbook_id: "$secrets.tableau_vendor_scorecard_id"
consumes:
- namespace: sap-s4
type: http
baseUri: "https://boeing-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
authentication:
type: basic
username: "$secrets.sap_s4_username"
password: "$secrets.sap_s4_password"
resources:
- name: vendor-metrics
path: "/A_Supplier('{Supplier}')/to_SupplierEvaluation"
inputParameters:
- name: Supplier
in: path
operations:
- name: get-vendor-metrics
method: GET
- namespace: snowflake
type: http
baseUri: "https://boeing.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: queries
path: "/statements"
operations:
- name: execute-query
method: POST
- namespace: tableau
type: http
baseUri: "https://tableau.boeing.com/api/3.19"
authentication:
type: bearer
token: "$secrets.tableau_access_token"
resources:
- name: workbooks
path: "/sites/boeing/workbooks/{{workbook_id}}/refresh"
inputParameters:
- name: workbook_id
in: path
operations:
- name: refresh-workbook
method: POST
Retrieves an employee profile from Workday by employee ID, returning name, title, department, and manager.
naftiko: "0.5"
info:
label: "Workday Employee Profile Lookup"
description: "Retrieves an employee profile from Workday by employee ID, returning name, title, department, and manager."
tags:
- hr
- workday
- lookup
- employee
capability:
exposes:
- type: mcp
namespace: hr-ops
port: 8080
tools:
- name: get-employee-profile
description: "Given a Workday employee ID, retrieve the employee profile including full name, job title, department, cost center, and direct manager. Use for HR inquiries or onboarding verification."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday employee ID, e.g. 'EMP-204817'."
call: "workday.get-worker"
with:
worker_id: "{{employee_id}}"
outputParameters:
- name: full_name
type: string
mapping: "$.Worker.Name"
- name: job_title
type: string
mapping: "$.Worker.Position.Title"
- name: department
type: string
mapping: "$.Worker.Organization.Name"
consumes:
- namespace: workday
type: http
baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/boeing"
authentication:
type: bearer
token: "$secrets.workday_bearer_token"
resources:
- name: workers
path: "/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
Queries Workday for current active headcount by business unit and exports the summary to a Snowflake table for downstream analytics and reporting.
naftiko: "0.5"
info:
label: "Workday Headcount Snapshot"
description: "Queries Workday for current active headcount by business unit and exports the summary to a Snowflake table for downstream analytics and reporting."
tags:
- hr
- analytics
- headcount
- workday
- snowflake
- reporting
capability:
exposes:
- type: mcp
namespace: hr-reporting
port: 8080
tools:
- name: snapshot-headcount
description: "Given a Workday organization ID, retrieve all active worker records for that org from Workday and write the aggregated headcount record to the Snowflake HR analytics table. Use at period close or on-demand when headcount data is needed for workforce planning."
inputParameters:
- name: org_id
in: body
type: string
description: "The Workday organization reference ID, e.g. 'ORG-COMMERCIAL-AIRPLANES'."
- name: as_of_date
in: body
type: string
description: "The snapshot date in ISO 8601 format, e.g. '2026-03-31'."
steps:
- name: get-workers
type: call
call: "workday.list-workers"
with:
org_id: "{{org_id}}"
effective_date: "{{as_of_date}}"
- name: write-snapshot
type: call
call: "snowflake.insert-headcount"
with:
org_id: "{{org_id}}"
as_of_date: "{{as_of_date}}"
headcount: "{{get-workers.total_count}}"
consumes:
- namespace: workday
type: http
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_bearer_token"
resources:
- name: workers
path: "/boeing/workers"
inputParameters:
- name: org_id
in: query
- name: effective_date
in: query
operations:
- name: list-workers
method: GET
- namespace: snowflake
type: http
baseUri: "https://boeing.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_bearer_token"
resources:
- name: headcount-records
path: "/statements"
operations:
- name: insert-headcount
method: POST
Retrieves all open job requisitions from Workday for a given business unit and posts a weekly hiring digest to the recruiting Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Workday Open Requisition Digest"
description: "Retrieves all open job requisitions from Workday for a given business unit and posts a weekly hiring digest to the recruiting Microsoft Teams channel."
tags:
- hr
- recruiting
- workday
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: recruiting-reporting
port: 8080
tools:
- name: digest-open-requisitions
description: "Given a Workday organization ID and Teams channel ID, retrieve all open job requisitions for that business unit from Workday and post a formatted weekly recruiting digest to the Microsoft Teams recruiting channel. Use every Monday for the weekly recruiting standup."
inputParameters:
- name: org_id
in: body
type: string
description: "The Workday organization ID to scope requisitions, e.g. 'ORG-DEFENSE-SPACE'."
- name: teams_channel_id
in: body
type: string
description: "The Microsoft Teams channel ID for the recruiting team."
steps:
- name: list-requisitions
type: call
call: "workday.list-job-requisitions"
with:
org_id: "{{org_id}}"
status: "Open"
- name: post-digest
type: call
call: "msteams.post-message"
with:
channel_id: "{{teams_channel_id}}"
text: "Weekly Recruiting Digest — {{org_id}}: {{list-requisitions.total_count}} open requisitions. Top roles: {{list-requisitions.top_titles}}"
consumes:
- namespace: workday
type: http
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_bearer_token"
resources:
- name: job-requisitions
path: "/boeing/jobRequisitions"
inputParameters:
- name: org_id
in: query
- name: status
in: query
operations:
- name: list-job-requisitions
method: GET
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Queries Workday for the latest payroll run results, compares gross pay totals against the prior period baseline, and alerts the payroll team in Microsoft Teams if variance exceeds the defined threshold.
naftiko: "0.5"
info:
label: "Workday Payroll Variance Check"
description: "Queries Workday for the latest payroll run results, compares gross pay totals against the prior period baseline, and alerts the payroll team in Microsoft Teams if variance exceeds the defined threshold."
tags:
- hr
- payroll
- workday
- microsoft-teams
- finance
capability:
exposes:
- type: mcp
namespace: payroll-ops
port: 8080
tools:
- name: check-payroll-variance
description: "Given a Workday pay group ID, pay period end date, and variance threshold percentage, retrieve the current payroll run totals from Workday and post a Teams alert if gross pay has deviated from the prior period by more than the threshold. Use before payroll finalization to catch data entry errors or anomalies."
inputParameters:
- name: pay_group_id
in: body
type: string
description: "The Workday pay group ID, e.g. 'PG-BOEING-US-BIWEEKLY'."
- name: pay_period_end
in: body
type: string
description: "The pay period end date in ISO 8601 format, e.g. '2026-03-28'."
- name: variance_threshold_pct
in: body
type: number
description: "Variance percentage above which to alert, e.g. 5.0 for 5%."
steps:
- name: get-payroll-results
type: call
call: "workday.get-payroll-results"
with:
pay_group_id: "{{pay_group_id}}"
pay_period_end: "{{pay_period_end}}"
- name: alert-payroll-team
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_payroll_channel_id"
text: "Payroll Variance Check: Pay Group {{pay_group_id}} | Period: {{pay_period_end}} | Gross Pay: {{get-payroll-results.gross_pay}} | Prior Period: {{get-payroll-results.prior_gross_pay}} | Threshold: {{variance_threshold_pct}}%"
consumes:
- namespace: workday
type: http
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_bearer_token"
resources:
- name: payroll-results
path: "/boeing/payrollResults"
inputParameters:
- name: pay_group_id
in: query
- name: pay_period_end
in: query
operations:
- name: get-payroll-results
method: GET
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
Initiates an annual performance review cycle in Workday for a business unit, creates tracking tasks in Jira for HR operations, and notifies managers via Microsoft Teams.
naftiko: "0.5"
info:
label: "Workday Performance Review Cycle Launch"
description: "Initiates an annual performance review cycle in Workday for a business unit, creates tracking tasks in Jira for HR operations, and notifies managers via Microsoft Teams."
tags:
- hr
- performance-management
- workday
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: perf-review
port: 8080
tools:
- name: launch-review-cycle
description: "Given a Workday organization ID, review cycle name, and deadline date, initiate the performance review cycle in Workday, create a Jira tracking epic for HR operations to monitor progress, and broadcast the cycle launch announcement to the management Microsoft Teams channel. Use when HR kicks off annual or mid-year performance reviews."
inputParameters:
- name: org_id
in: body
type: string
description: "The Workday organization ID for the review cycle scope."
- name: cycle_name
in: body
type: string
description: "The name of the review cycle, e.g. '2026 Annual Performance Review'."
- name: deadline_date
in: body
type: string
description: "The review submission deadline in ISO 8601 format."
steps:
- name: create-review-cycle
type: call
call: "workday.create-review-cycle"
with:
org_id: "{{org_id}}"
cycle_name: "{{cycle_name}}"
deadline: "{{deadline_date}}"
- name: create-jira-epic
type: call
call: "jira.create-issue"
with:
project_key: "HR"
issuetype: "Epic"
summary: "{{cycle_name}} — {{org_id}}"
description: "Performance review cycle launched for org {{org_id}}. Deadline: {{deadline_date}}. Workday cycle ID: {{create-review-cycle.cycle_id}}"
- name: notify-managers
type: call
call: "msteams.post-message"
with:
channel_id: "$secrets.teams_hr_channel_id"
text: "Performance review cycle launched: {{cycle_name}} | Org: {{org_id}} | Deadline: {{deadline_date}} | Jira Epic: {{create-jira-epic.key}}"
consumes:
- namespace: workday
type: http
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_bearer_token"
resources:
- name: review-cycles
path: "/boeing/performanceReviewCycles"
operations:
- name: create-review-cycle
method: POST
- namespace: jira
type: http
baseUri: "https://boeing.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_username"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- namespace: msteams
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: channel-messages
path: "/teams/messages"
operations:
- name: post-message
method: POST
When a job role change is recorded in Workday, updates the employee's Okta group memberships and Microsoft 365 license assignment to match their new role profile.
naftiko: "0.5"
info:
label: "Workday Role Change Access Sync"
description: "When a job role change is recorded in Workday, updates the employee's Okta group memberships and Microsoft 365 license assignment to match their new role profile."
tags:
- hr
- iam
- workday
- okta
- microsoft-graph
- access-management
capability:
exposes:
- type: mcp
namespace: iam-sync
port: 8080
tools:
- name: sync-role-change
description: "Given a Workday employee ID and new job profile ID, fetch the updated employee record from Workday, update the employee's Okta group memberships to reflect the new role, and update their Microsoft 365 license assignment. Use when HR records a promotion, transfer, or job reclassification in Workday."
inputParameters:
- name: workday_employee_id
in: body
type: string
description: "The Workday worker ID for the employee whose role changed."
- name: new_job_profile_id
in: body
type: string
description: "The Workday job profile ID of the new role, e.g. 'JP-SE-AVIONICS-SR'."
steps:
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{workday_employee_id}}"
- name: update-okta-groups
type: call
call: "okta.update-user-groups"
with:
login: "{{get-employee.work_email}}"
job_profile: "{{new_job_profile_id}}"
- name: update-m365-license
type: call
call: "msgraph.assign-license"
with:
user_id: "{{get-employee.work_email}}"
sku_id: "$secrets.m365_e3_sku_id"
consumes:
- namespace: workday
type: http
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_bearer_token"
resources:
- name: workers
path: "/boeing/workers/{worker_id}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- namespace: okta
type: http
baseUri: "https://boeing.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: user-groups
path: "/users/{login}/groups"
inputParameters:
- name: login
in: path
operations:
- name: update-user-groups
method: PUT
- namespace: msgraph
type: http
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_bearer_token"
resources:
- name: license-assignments
path: "/users/{user_id}/assignLicense"
inputParameters:
- name: user_id
in: path
operations:
- name: assign-license
method: POST
Retrieves the current time-off balance for an employee from Workday by employee ID.
naftiko: "0.5"
info:
label: "Workday Time Off Balance Check"
description: "Retrieves the current time-off balance for an employee from Workday by employee ID."
tags:
- hr
- workday
- time-off
- lookup
capability:
exposes:
- type: mcp
namespace: hr-ops
port: 8080
tools:
- name: get-time-off-balance
description: "Given a Workday employee ID, retrieve current time-off balances including vacation, sick, and personal days. Use for HR and employee self-service inquiries."
inputParameters:
- name: employee_id
in: body
type: string
description: "Workday employee ID, e.g. 'EMP-204817'."
call: "workday.get-time-off"
with:
worker_id: "{{employee_id}}"
outputParameters:
- name: vacation_balance
type: string
mapping: "$.TimeOffBalance.Vacation"
- name: sick_balance
type: string
mapping: "$.TimeOffBalance.Sick"
consumes:
- namespace: workday
type: http
baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/boeing"
authentication:
type: bearer
token: "$secrets.workday_bearer_token"
resources:
- name: time-off
path: "/workers/{{worker_id}}/timeOffBalances"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-time-off
method: GET
Generates a workforce capacity report by pulling headcount from Workday, comparing against project demand in Jira, and publishing insights to Tableau.
naftiko: "0.5"
info:
label: "Workforce Capacity Planning Report"
description: "Generates a workforce capacity report by pulling headcount from Workday, comparing against project demand in Jira, and publishing insights to Tableau."
tags:
- hr
- workday
- jira
- tableau
- analytics
- manufacturing
capability:
exposes:
- type: mcp
namespace: hr-ops
port: 8080
tools:
- name: generate-capacity-report
description: "Given a department code and planning horizon, pull headcount from Workday, assess demand from Jira project backlogs, and refresh the Tableau capacity dashboard. Use for monthly workforce planning."
inputParameters:
- name: department_code
in: body
type: string
description: "Department code, e.g. 'MFG-EVERETT'."
- name: planning_horizon
in: body
type: string
description: "Planning horizon, e.g. 'Q2-2026'."
steps:
- name: get-headcount
type: call
call: "workday.get-headcount"
with:
department: "{{department_code}}"
- name: get-project-demand
type: call
call: "jira.search-issues"
with:
jql: "project in (ENG, MFG) AND department = '{{department_code}}' AND duedate <= '{{planning_horizon}}'"
- name: refresh-capacity-dashboard
type: call
call: "tableau.refresh-workbook"
with:
workbook_id: "$secrets.tableau_capacity_workbook_id"
consumes:
- namespace: workday
type: http
baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/boeing"
authentication:
type: bearer
token: "$secrets.workday_bearer_token"
resources:
- name: headcount
path: "/workers/headcount"
operations:
- name: get-headcount
method: GET
- namespace: jira
type: http
baseUri: "https://boeing.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: search
path: "/search"
operations:
- name: search-issues
method: POST
- namespace: tableau
type: http
baseUri: "https://tableau.boeing.com/api/3.19"
authentication:
type: bearer
token: "$secrets.tableau_access_token"
resources:
- name: workbooks
path: "/sites/boeing/workbooks/{{workbook_id}}/refresh"
inputParameters:
- name: workbook_id
in: path
operations:
- name: refresh-workbook
method: POST