GE Aerospace Capabilities

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

Sort
Expand

Reviews access at GE Aerospace via Okta, IAM, and Jira.

naftiko: "0.5"
info:
  label: "Access Review Pipeline"
  description: "Reviews access at GE Aerospace via Okta, IAM, and Jira."
  tags:
    - security
    - access-management
    - okta
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: access-rev
      port: 8080
      tools:
        - name: review
          description: "Review access at GE Aerospace."
          inputParameters:
            - name: dept
              in: body
              type: string
              description: "Department."
          steps:
            - name: ent
              type: call
              call: "okta.get-users"
              with:
                dept: "{{dept}}"
            - name: compare
              type: call
              call: "iam.compare"
              with:
                data: "{{ent.data}}"
            - name: flag
              type: call
              call: "iam.flag"
              with:
                violations: "{{compare.violations}}"
            - name: fix
              type: call
              call: "jira.create-issue"
              with:
                project: "IAM"
                summary: "Violations in {{dept}}"
  consumes:
    - type: http
      namespace: okta
      baseUri: "https://geaerospace.com.okta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.okta_api_token"
      resources:
        - name: users
          path: "/users"
          operations:
            - name: get-users
              method: GET
    - type: http
      namespace: iam
      baseUri: "https://iam.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.iam_token"
      resources:
        - name: reviews
          path: "/compare"
          operations:
            - name: compare
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://geaerospace.com.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST

Manages API deprecation at GE Aerospace via consumer identification, notices, and tracking.

naftiko: "0.5"
info:
  label: "API Deprecation Pipeline"
  description: "Manages API deprecation at GE Aerospace via consumer identification, notices, and tracking."
  tags:
    - api-management
    - communications
    - governance
capability:
  exposes:
    - type: mcp
      namespace: api-sunset
      port: 8080
      tools:
        - name: notify-sunset
          description: "Manage API sunset at GE Aerospace."
          inputParameters:
            - name: api
              in: body
              type: string
              description: "API name."
            - name: date
              in: body
              type: string
              description: "Sunset date."
          steps:
            - name: consumers
              type: call
              call: "api-gw.consumers"
              with:
                api: "{{api}}"
            - name: notify
              type: call
              call: "email.batch"
              with:
                to: "{{consumers.emails}}"
                subject: "{{api}} sunset: {{date}}"
            - name: track
              type: call
              call: "analytics.usage"
              with:
                api: "{{api}}"
            - name: ticket
              type: call
              call: "jira.create-issue"
              with:
                project: "API"
                summary: "Sunset {{api}} by {{date}}"
  consumes:
    - type: http
      namespace: api-gw
      baseUri: "https://api-gw.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.api_gw_token"
      resources:
        - name: consumers
          path: "/apis/{{api}}/consumers"
          inputParameters:
            - name: api
              in: path
          operations:
            - name: consumers
              method: GET
    - type: http
      namespace: email
      baseUri: "https://email.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.email_token"
      resources:
        - name: batch
          path: "/send-batch"
          operations:
            - name: batch
              method: POST
    - type: http
      namespace: analytics
      baseUri: "https://analytics.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.analytics_token"
      resources:
        - name: usage
          path: "/api-usage"
          operations:
            - name: usage
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://geaerospace.com.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST

Retrieves metadata for an AutoCAD drawing file stored in the Autodesk cloud, including version, creator, modification date, and associated part numbers.

naftiko: "0.5"
info:
  label: "AutoCAD Drawing Metadata"
  description: "Retrieves metadata for an AutoCAD drawing file stored in the Autodesk cloud, including version, creator, modification date, and associated part numbers."
  tags:
    - engineering
    - cad
    - autocad
capability:
  exposes:
    - type: mcp
      namespace: cad-management
      port: 8080
      tools:
        - name: get-drawing-metadata
          description: "Look up an AutoCAD drawing by file URN. Returns version, creator, last modified, and thumbnail URL."
          inputParameters:
            - name: file_urn
              in: body
              type: string
              description: "The Autodesk cloud file URN."
          call: "autodesk.get-item-metadata"
          with:
            urn: "{{file_urn}}"
  consumes:
    - type: http
      namespace: autodesk
      baseUri: "https://developer.api.autodesk.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.autodesk_token"
      resources:
        - name: items
          path: "/projects/{{project_id}}/items/{{urn}}"
          inputParameters:
            - name: urn
              in: path
          operations:
            - name: get-item-metadata
              method: GET

Retrieves monthly Azure spend by resource group for GE Aerospace cloud workloads, returning total cost, top services, and month-over-month trend.

naftiko: "0.5"
info:
  label: "Azure Cost Management Report"
  description: "Retrieves monthly Azure spend by resource group for GE Aerospace cloud workloads, returning total cost, top services, and month-over-month trend."
  tags:
    - finance
    - cloud
    - microsoft-azure
capability:
  exposes:
    - type: mcp
      namespace: cloud-cost
      port: 8080
      tools:
        - name: get-azure-spend
          description: "Retrieve Azure cost summary by subscription and billing period."
          inputParameters:
            - name: subscription_id
              in: body
              type: string
              description: "The Azure subscription ID."
            - name: billing_period
              in: body
              type: string
              description: "Billing period in YYYYMM format."
          call: "azure.get-cost-report"
          with:
            subscription_id: "{{subscription_id}}"
            billing_period: "{{billing_period}}"
  consumes:
    - type: http
      namespace: azure
      baseUri: "https://management.azure.com"
      authentication:
        type: bearer
        token: "$secrets.azure_mgmt_token"
      resources:
        - name: cost-management
          path: "/subscriptions/{{subscription_id}}/providers/Microsoft.CostManagement/query"
          inputParameters:
            - name: subscription_id
              in: path
          operations:
            - name: get-cost-report
              method: POST

Checks the status of an Azure Data Factory pipeline run, returning run state, start time, duration, and activity details.

naftiko: "0.5"
info:
  label: "Azure Data Factory Pipeline Status"
  description: "Checks the status of an Azure Data Factory pipeline run, returning run state, start time, duration, and activity details."
  tags:
    - data-engineering
    - azure-data-factory
capability:
  exposes:
    - type: mcp
      namespace: data-pipelines
      port: 8080
      tools:
        - name: get-pipeline-run
          description: "Look up an ADF pipeline run by run ID."
          inputParameters:
            - name: run_id
              in: body
              type: string
              description: "The ADF pipeline run ID."
          call: "adf.get-pipeline-run"
          with:
            run_id: "{{run_id}}"
  consumes:
    - type: http
      namespace: adf
      baseUri: "https://management.azure.com"
      authentication:
        type: bearer
        token: "$secrets.azure_mgmt_token"
      resources:
        - name: pipeline-runs
          path: "/subscriptions/{{sub_id}}/resourceGroups/{{rg}}/providers/Microsoft.DataFactory/factories/{{factory}}/pipelineruns/{{run_id}}"
          inputParameters:
            - name: run_id
              in: path
          operations:
            - name: get-pipeline-run
              method: GET

Checks build at GE Aerospace.

naftiko: "0.5"
info:
  label: "Azure DevOps Build Check"
  description: "Checks build at GE Aerospace."
  tags:
    - devops
    - azure-devops
    - ci-cd
capability:
  exposes:
    - type: mcp
      namespace: azdo-build
      port: 8080
      tools:
        - name: check-build
          description: "Check build at GE Aerospace."
          inputParameters:
            - name: project
              in: body
              type: string
              description: "Project."
            - name: build_id
              in: body
              type: string
              description: "Build ID."
          call: "azdo.get-build"
          with:
            project: "{{project}}"
            build_id: "{{build_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: azdo
      baseUri: "https://dev.azure.com/geaerospace.com"
      authentication:
        type: bearer
        token: "$secrets.azdo_token"
      resources:
        - name: builds
          path: "/{{project}}/_apis/build/builds/{{build_id}}"
          inputParameters:
            - name: project
              in: path
            - name: build_id
              in: path
          operations:
            - name: get-build
              method: GET

Retrieves the latest Azure DevOps build status for a given pipeline, returning build result, duration, triggered by, and artifacts.

naftiko: "0.5"
info:
  label: "Azure DevOps Build Status"
  description: "Retrieves the latest Azure DevOps build status for a given pipeline, returning build result, duration, triggered by, and artifacts."
  tags:
    - engineering
    - cicd
    - azure-devops
capability:
  exposes:
    - type: mcp
      namespace: cicd
      port: 8080
      tools:
        - name: get-build-status
          description: "Look up the latest build for an Azure DevOps pipeline. Returns status, result, duration, and trigger."
          inputParameters:
            - name: project
              in: body
              type: string
              description: "The Azure DevOps project name."
            - name: pipeline_id
              in: body
              type: string
              description: "The pipeline definition ID."
          call: "azdo.get-latest-build"
          with:
            project: "{{project}}"
            pipeline_id: "{{pipeline_id}}"
  consumes:
    - type: http
      namespace: azdo
      baseUri: "https://dev.azure.com/geaerospace"
      authentication:
        type: basic
        username: ""
        password: "$secrets.azdo_pat"
      resources:
        - name: builds
          path: "/{{project}}/_apis/build/builds?definitions={{pipeline_id}}&$top=1&api-version=7.0"
          inputParameters:
            - name: project
              in: path
            - name: pipeline_id
              in: query
          operations:
            - name: get-latest-build
              method: GET

Retrieves Azure Kubernetes Service cluster health for GE Aerospace workloads, returning node count, pod status, resource utilization, and any failing deployments.

naftiko: "0.5"
info:
  label: "Azure Kubernetes Cluster Health"
  description: "Retrieves Azure Kubernetes Service cluster health for GE Aerospace workloads, returning node count, pod status, resource utilization, and any failing deployments."
  tags:
    - infrastructure
    - kubernetes
    - azure-kubernetes-service
capability:
  exposes:
    - type: mcp
      namespace: k8s-ops
      port: 8080
      tools:
        - name: get-cluster-health
          description: "Check AKS cluster health by resource group and cluster name. Returns node status, pod counts, and resource utilization."
          inputParameters:
            - name: resource_group
              in: body
              type: string
              description: "The Azure resource group name."
            - name: cluster_name
              in: body
              type: string
              description: "The AKS cluster name."
          call: "aks.get-cluster"
          with:
            resource_group: "{{resource_group}}"
            cluster_name: "{{cluster_name}}"
  consumes:
    - type: http
      namespace: aks
      baseUri: "https://management.azure.com"
      authentication:
        type: bearer
        token: "$secrets.azure_mgmt_token"
      resources:
        - name: clusters
          path: "/subscriptions/{{subscription_id}}/resourceGroups/{{resource_group}}/providers/Microsoft.ContainerService/managedClusters/{{cluster_name}}"
          inputParameters:
            - name: resource_group
              in: path
            - name: cluster_name
              in: path
          operations:
            - name: get-cluster
              method: GET

Verifies backups at GE Aerospace.

naftiko: "0.5"
info:
  label: "Backup Verification Pipeline"
  description: "Verifies backups at GE Aerospace."
  tags:
    - database
    - backup
    - operations
capability:
  exposes:
    - type: mcp
      namespace: backup-verify
      port: 8080
      tools:
        - name: verify-backups
          description: "Verify backups at GE Aerospace."
          inputParameters:
            - name: db
              in: body
              type: string
              description: "Database."
            - name: date
              in: body
              type: string
              description: "Backup date."
          steps:
            - name: status
              type: call
              call: "backup.get-status"
              with:
                db: "{{db}}"
                date: "{{date}}"
            - name: verify
              type: call
              call: "backup.verify"
              with:
                id: "{{status.backup_id}}"
            - name: log
              type: call
              call: "snowflake.query"
              with:
                query: "INSERT INTO backup_log VALUES ('{{db}}','{{date}}','{{verify.status}}')"
            - name: alert
              type: call
              call: "slack.post-message"
              with:
                channel: "#dba"
                text: "Backup {{db}}: {{verify.status}}"
  consumes:
    - type: http
      namespace: backup
      baseUri: "https://backup.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.backup_token"
      resources:
        - name: backups
          path: "/databases/{{db}}/status"
          inputParameters:
            - name: db
              in: path
          operations:
            - name: get-status
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://geaerospace.com.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: query
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Analyzes budget variance at GE Aerospace via Oracle, Workday, and Slack.

naftiko: "0.5"
info:
  label: "Budget Variance Pipeline"
  description: "Analyzes budget variance at GE Aerospace via Oracle, Workday, and Slack."
  tags:
    - finance
    - budget
    - oracle
    - workday
capability:
  exposes:
    - type: mcp
      namespace: budget-var
      port: 8080
      tools:
        - name: analyze-variance
          description: "Check budget variance at GE Aerospace."
          inputParameters:
            - name: cc
              in: body
              type: string
              description: "Cost center."
            - name: period
              in: body
              type: string
              description: "Period."
          steps:
            - name: actuals
              type: call
              call: "oracle.get-actuals"
              with:
                cc: "{{cc}}"
                period: "{{period}}"
            - name: budget
              type: call
              call: "workday.get-budget"
              with:
                cc: "{{cc}}"
            - name: compute
              type: call
              call: "analytics.variance"
              with:
                a: "{{actuals.total}}"
                b: "{{budget.total}}"
            - name: alert
              type: call
              call: "slack.post-message"
              with:
                channel: "#finance"
                text: "Variance {{cc}}: ${{compute.variance}}"
  consumes:
    - type: http
      namespace: oracle
      baseUri: "https://oracle.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_token"
      resources:
        - name: fin
          path: "/actuals"
          operations:
            - name: get-actuals
              method: GET
    - type: http
      namespace: workday
      baseUri: "https://wd5.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: budgets
          path: "/budgets"
          operations:
            - name: get-budget
              method: GET
    - type: http
      namespace: analytics
      baseUri: "https://analytics.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.analytics_token"
      resources:
        - name: var
          path: "/compute"
          operations:
            - name: variance
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Plans capacity at GE Aerospace by collecting utilization and forecasting.

naftiko: "0.5"
info:
  label: "Capacity Planning Pipeline"
  description: "Plans capacity at GE Aerospace by collecting utilization and forecasting."
  tags:
    - infrastructure
    - capacity-planning
    - forecasting
capability:
  exposes:
    - type: mcp
      namespace: capacity
      port: 8080
      tools:
        - name: plan-capacity
          description: "Plan capacity at GE Aerospace."
          inputParameters:
            - name: resource
              in: body
              type: string
              description: "Resource type."
            - name: months
              in: body
              type: number
              description: "Forecast months."
          steps:
            - name: util
              type: call
              call: "monitoring.get-util"
              with:
                resource: "{{resource}}"
            - name: forecast
              type: call
              call: "analytics.forecast"
              with:
                current: "{{util.pct}}"
                months: "{{months}}"
            - name: procure
              type: call
              call: "servicenow.create-request"
              with:
                type: "capacity"
                resource: "{{resource}}"
            - name: dashboard
              type: call
              call: "power-bi.refresh"
              with:
                dataset: "capacity"
  consumes:
    - type: http
      namespace: monitoring
      baseUri: "https://monitoring.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.monitoring_token"
      resources:
        - name: util
          path: "/resources/{{resource}}/util"
          inputParameters:
            - name: resource
              in: path
          operations:
            - name: get-util
              method: GET
    - type: http
      namespace: analytics
      baseUri: "https://analytics.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.analytics_token"
      resources:
        - name: forecast
          path: "/demand"
          operations:
            - name: forecast
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://geaerospace.com.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: requests
          path: "/table/sc_request"
          operations:
            - name: create-request
              method: POST
    - type: http
      namespace: power-bi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.power_bi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset}}/refreshes"
          inputParameters:
            - name: dataset
              in: path
          operations:
            - name: refresh
              method: POST

Monitors cert expiry at GE Aerospace.

naftiko: "0.5"
info:
  label: "Certificate Expiry Pipeline"
  description: "Monitors cert expiry at GE Aerospace."
  tags:
    - security
    - certificates
    - monitoring
capability:
  exposes:
    - type: mcp
      namespace: cert-monitor
      port: 8080
      tools:
        - name: check-certs
          description: "Monitor certs at GE Aerospace."
          inputParameters:
            - name: domains
              in: body
              type: string
              description: "Domains to check."
          steps:
            - name: scan
              type: call
              call: "cert-scanner.scan"
              with:
                domains: "{{domains}}"
            - name: filter
              type: call
              call: "analytics.filter-expiring"
              with:
                certs: "{{scan.results}}"
            - name: ticket
              type: call
              call: "jira.create-issue"
              with:
                project: "SEC"
                summary: "{{filter.count}} certs expiring"
            - name: alert
              type: call
              call: "slack.post-message"
              with:
                channel: "#security"
                text: "Cert alert: {{filter.count}} expiring"
  consumes:
    - type: http
      namespace: cert-scanner
      baseUri: "https://certs.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.cert_token"
      resources:
        - name: scans
          path: "/scan"
          operations:
            - name: scan
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://geaerospace.com.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Routes changes at GE Aerospace through ServiceNow and CAB approval.

naftiko: "0.5"
info:
  label: "Change Management Pipeline"
  description: "Routes changes at GE Aerospace through ServiceNow and CAB approval."
  tags:
    - change-management
    - servicenow
    - itil
capability:
  exposes:
    - type: mcp
      namespace: change-mgmt
      port: 8080
      tools:
        - name: process-change
          description: "Process changes at GE Aerospace."
          inputParameters:
            - name: change_id
              in: body
              type: string
              description: "Change ID."
            - name: date
              in: body
              type: string
              description: "Date."
          steps:
            - name: get
              type: call
              call: "servicenow.get-change"
              with:
                id: "{{change_id}}"
            - name: conflicts
              type: call
              call: "servicenow.check-conflicts"
              with:
                date: "{{date}}"
            - name: submit
              type: call
              call: "servicenow.update"
              with:
                id: "{{change_id}}"
                state: "approval"
            - name: notify
              type: call
              call: "email.send"
              with:
                to: "cab@co.com"
                subject: "CAB: {{change_id}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://geaerospace.com.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: changes
          path: "/table/change_request/{{id}}"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-change
              method: GET
    - type: http
      namespace: email
      baseUri: "https://email.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.email_token"
      resources:
        - name: messages
          path: "/send"
          operations:
            - name: send
              method: POST

Queries Cisco DNA Center for network device inventory across GE Aerospace facilities, returning device type, OS version, management IP, and health status.

naftiko: "0.5"
info:
  label: "Cisco Network Device Inventory"
  description: "Queries Cisco DNA Center for network device inventory across GE Aerospace facilities, returning device type, OS version, management IP, and health status."
  tags:
    - infrastructure
    - networking
    - cisco
capability:
  exposes:
    - type: mcp
      namespace: network-inventory
      port: 8080
      tools:
        - name: get-network-devices
          description: "List network devices from Cisco DNA Center by site. Returns device type, hostname, IP, OS version, and health."
          inputParameters:
            - name: site_name
              in: body
              type: string
              description: "The facility site name."
          call: "cisco.get-devices"
          with:
            site_name: "{{site_name}}"
  consumes:
    - type: http
      namespace: cisco
      baseUri: "https://ge-aerospace-dnac.internal/dna/intent/api/v1"
      authentication:
        type: bearer
        token: "$secrets.cisco_dnac_token"
      resources:
        - name: devices
          path: "/network-device"
          operations:
            - name: get-devices
              method: GET

Optimizes cloud costs at GE Aerospace via Azure, FinOps, Jira, and Power BI.

naftiko: "0.5"
info:
  label: "Cloud Cost Optimization Pipeline"
  description: "Optimizes cloud costs at GE Aerospace via Azure, FinOps, Jira, and Power BI."
  tags:
    - cloud
    - cost-management
    - finops
capability:
  exposes:
    - type: mcp
      namespace: cloud-opt
      port: 8080
      tools:
        - name: optimize
          description: "Optimize cloud costs at GE Aerospace."
          inputParameters:
            - name: provider
              in: body
              type: string
              description: "Provider."
            - name: range
              in: body
              type: string
              description: "Range."
          steps:
            - name: spend
              type: call
              call: "cloud.get-costs"
              with:
                provider: "{{provider}}"
                range: "{{range}}"
            - name: savings
              type: call
              call: "finops.analyze"
              with:
                data: "{{spend.data}}"
            - name: action
              type: call
              call: "jira.create-issue"
              with:
                project: "FINOPS"
                summary: "Save ${{savings.potential}}"
            - name: report
              type: call
              call: "power-bi.refresh"
              with:
                dataset: "cloud"
  consumes:
    - type: http
      namespace: cloud
      baseUri: "https://management.azure.com"
      authentication:
        type: bearer
        token: "$secrets.azure_token"
      resources:
        - name: costs
          path: "/providers/Microsoft.CostManagement/query"
          operations:
            - name: get-costs
              method: POST
    - type: http
      namespace: finops
      baseUri: "https://finops.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.finops_token"
      resources:
        - name: analysis
          path: "/savings"
          operations:
            - name: analyze
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://geaerospace.com.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: power-bi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.power_bi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset}}/refreshes"
          inputParameters:
            - name: dataset
              in: path
          operations:
            - name: refresh
              method: POST

Searches Confluence at GE Aerospace.

naftiko: "0.5"
info:
  label: "Confluence Article Search"
  description: "Searches Confluence at GE Aerospace."
  tags:
    - knowledge-management
    - confluence
    - documentation
capability:
  exposes:
    - type: mcp
      namespace: confluence-search
      port: 8080
      tools:
        - name: search-articles
          description: "Search Confluence at GE Aerospace."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "Query."
          call: "confluence.search"
          with:
            query: "{{query}}"
          outputParameters:
            - name: title
              type: string
              mapping: "$.results[0].title"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://geaerospace.com.atlassian.net/wiki/rest/api"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: content
          path: "/content/search"
          operations:
            - name: search
              method: GET

Searches GE Aerospace Confluence for technical documentation by keyword, returning matching page titles, spaces, authors, and direct links.

naftiko: "0.5"
info:
  label: "Confluence Technical Document Search"
  description: "Searches GE Aerospace Confluence for technical documentation by keyword, returning matching page titles, spaces, authors, and direct links."
  tags:
    - knowledge-management
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: tech-docs
      port: 8080
      tools:
        - name: search-documents
          description: "Search Confluence for technical documents by keyword. Returns page titles, spaces, and URLs."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "Search keyword or phrase."
          call: "confluence.search"
          with:
            cql: "text~\"{{query}}\" AND space.type=global"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://geaerospace.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_token"
      resources:
        - name: search
          path: "/search"
          operations:
            - name: search
              method: GET

Tracks contract renewals at GE Aerospace via contracts system, email, Jira, and Salesforce.

naftiko: "0.5"
info:
  label: "Contract Renewal Pipeline"
  description: "Tracks contract renewals at GE Aerospace via contracts system, email, Jira, and Salesforce."
  tags:
    - procurement
    - contracts
    - salesforce
    - jira
capability:
  exposes:
    - type: mcp
      namespace: contract-renew
      port: 8080
      tools:
        - name: track
          description: "Track renewals at GE Aerospace."
          inputParameters:
            - name: contract_id
              in: body
              type: string
              description: "Contract ID."
            - name: owner
              in: body
              type: string
              description: "Owner email."
          steps:
            - name: get
              type: call
              call: "contracts.get"
              with:
                id: "{{contract_id}}"
            - name: remind
              type: call
              call: "email.send"
              with:
                to: "{{owner}}"
                subject: "Renewal: {{contract_id}}"
            - name: task
              type: call
              call: "jira.create-issue"
              with:
                project: "PROC"
                summary: "Renew {{contract_id}}"
            - name: crm
              type: call
              call: "salesforce.update"
              with:
                id: "{{contract_id}}"
                stage: "Renewal"
  consumes:
    - type: http
      namespace: contracts
      baseUri: "https://contracts.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.contracts_token"
      resources:
        - name: contracts
          path: "/contracts/{{id}}"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get
              method: GET
    - type: http
      namespace: email
      baseUri: "https://email.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.email_token"
      resources:
        - name: messages
          path: "/send"
          operations:
            - name: send
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://geaerospace.com.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://geaerospace.com.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opps
          path: "/sobjects/Opportunity"
          operations:
            - name: update
              method: PATCH

Reallocates costs at GE Aerospace.

naftiko: "0.5"
info:
  label: "Cost Reallocation Pipeline"
  description: "Reallocates costs at GE Aerospace."
  tags:
    - finance
    - cost-allocation
    - oracle
capability:
  exposes:
    - type: mcp
      namespace: cost-realloc
      port: 8080
      tools:
        - name: reallocate
          description: "Reallocate costs at GE Aerospace."
          inputParameters:
            - name: source
              in: body
              type: string
              description: "Source CC."
            - name: target
              in: body
              type: string
              description: "Target CC."
            - name: amount
              in: body
              type: number
              description: "Amount."
          steps:
            - name: current
              type: call
              call: "oracle.get-alloc"
              with:
                cc: "{{source}}"
            - name: compute
              type: call
              call: "analytics.realloc"
              with:
                source: "{{source}}"
                target: "{{target}}"
                amount: "{{amount}}"
            - name: post
              type: call
              call: "oracle.post-journal"
              with:
                entries: "{{compute.entries}}"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                channel: "#finance"
                text: "Reallocated ${{amount}} from {{source}} to {{target}}"
  consumes:
    - type: http
      namespace: oracle
      baseUri: "https://oracle.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_token"
      resources:
        - name: allocations
          path: "/cost-centers/{{cc}}/allocations"
          inputParameters:
            - name: cc
              in: path
          operations:
            - name: get-alloc
              method: GET
    - type: http
      namespace: analytics
      baseUri: "https://analytics.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.analytics_token"
      resources:
        - name: realloc
          path: "/compute"
          operations:
            - name: realloc
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

When a customer service contract nears expiration in Salesforce, pulls contract details, generates a renewal proposal document in SharePoint, sends renewal notice via Microsoft Outlook, and logs the activity in Salesforce.

naftiko: "0.5"
info:
  label: "Customer Contract Renewal Orchestrator"
  description: "When a customer service contract nears expiration in Salesforce, pulls contract details, generates a renewal proposal document in SharePoint, sends renewal notice via Microsoft Outlook, and logs the activity in Salesforce."
  tags:
    - sales
    - contracts
    - salesforce
    - sharepoint
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: contract-renewal
      port: 8080
      tools:
        - name: process-contract-renewal
          description: "Given a Salesforce contract ID, pull details, generate renewal doc, email the customer, and log the activity."
          inputParameters:
            - name: contract_id
              in: body
              type: string
              description: "The Salesforce contract ID."
          steps:
            - name: get-contract
              type: call
              call: "salesforce.get-contract"
              with:
                contract_id: "{{contract_id}}"
            - name: generate-proposal
              type: call
              call: "sharepoint.create-file"
              with:
                site_id: "sales-proposals"
                folder_path: "Renewals/{{get-contract.AccountName}}"
                content: "Service Contract Renewal Proposal for {{get-contract.AccountName}}. Contract: {{contract_id}}. Current value: {{get-contract.ContractAmount}}. Expiry: {{get-contract.EndDate}}."
            - name: send-renewal-notice
              type: call
              call: "outlook.send-email"
              with:
                to: "{{get-contract.CustomerEmail}}"
                subject: "GE Aerospace Service Contract Renewal — {{get-contract.ContractNumber}}"
                body: "Dear {{get-contract.ContactName}}, your service contract {{get-contract.ContractNumber}} expires on {{get-contract.EndDate}}. Please find the renewal proposal attached: {{generate-proposal.url}}."
            - name: log-activity
              type: call
              call: "salesforce.create-activity"
              with:
                contract_id: "{{contract_id}}"
                subject: "Renewal notice sent"
                description: "Renewal proposal sent to {{get-contract.CustomerEmail}}. Proposal: {{generate-proposal.url}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://geaerospace.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: contracts
          path: "/sobjects/Contract/{{contract_id}}"
          inputParameters:
            - name: contract_id
              in: path
          operations:
            - name: get-contract
              method: GET
        - name: activities
          path: "/sobjects/Task"
          operations:
            - name: create-activity
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: files
          path: "/{{site_id}}/drive/root:/{{folder_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: create-file
              method: PUT
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Monitors data pipelines at GE Aerospace via Databricks, Snowflake, Slack, and ServiceNow.

naftiko: "0.5"
info:
  label: "Data Pipeline Monitor Pipeline"
  description: "Monitors data pipelines at GE Aerospace via Databricks, Snowflake, Slack, and ServiceNow."
  tags:
    - data-engineering
    - databricks
    - monitoring
    - slack
capability:
  exposes:
    - type: mcp
      namespace: pipeline-mon
      port: 8080
      tools:
        - name: monitor
          description: "Monitor pipelines at GE Aerospace."
          inputParameters:
            - name: pipeline_id
              in: body
              type: string
              description: "Pipeline ID."
          steps:
            - name: status
              type: call
              call: "databricks.get-run"
              with:
                id: "{{pipeline_id}}"
            - name: quality
              type: call
              call: "snowflake.query"
              with:
                query: "SELECT COUNT(*) FROM out WHERE p='{{pipeline_id}}'"
            - name: alert
              type: call
              call: "slack.post-message"
              with:
                channel: "#data"
                text: "Pipeline {{pipeline_id}}: {{status.state}}"
            - name: incident
              type: call
              call: "servicenow.create-incident"
              with:
                desc: "Pipeline {{pipeline_id}} issue"
  consumes:
    - type: http
      namespace: databricks
      baseUri: "https://geaerospace.com.cloud.databricks.com/api/2.1"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: jobs
          path: "/jobs/runs/get"
          operations:
            - name: get-run
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://geaerospace.com.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: query
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://geaerospace.com.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST

Checks the status of a Databricks analytics job run, returning state, start time, duration, and output artifacts for data engineering pipelines.

naftiko: "0.5"
info:
  label: "Databricks Analytics Job Status"
  description: "Checks the status of a Databricks analytics job run, returning state, start time, duration, and output artifacts for data engineering pipelines."
  tags:
    - data-engineering
    - analytics
    - databricks
capability:
  exposes:
    - type: mcp
      namespace: data-analytics
      port: 8080
      tools:
        - name: get-job-run-status
          description: "Look up a Databricks job run by run ID. Returns state, start time, duration, and result."
          inputParameters:
            - name: run_id
              in: body
              type: string
              description: "The Databricks job run ID."
          call: "databricks.get-run"
          with:
            run_id: "{{run_id}}"
  consumes:
    - type: http
      namespace: databricks
      baseUri: "https://ge-aerospace.cloud.databricks.com/api/2.1"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: runs
          path: "/jobs/runs/get?run_id={{run_id}}"
          inputParameters:
            - name: run_id
              in: query
          operations:
            - name: get-run
              method: GET

Queries Datadog for current infrastructure health metrics for GE Aerospace cloud workloads, returning host status, CPU utilization, and active alerts.

naftiko: "0.5"
info:
  label: "Datadog Infrastructure Monitoring"
  description: "Queries Datadog for current infrastructure health metrics for GE Aerospace cloud workloads, returning host status, CPU utilization, and active alerts."
  tags:
    - infrastructure
    - monitoring
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: infra-monitoring
      port: 8080
      tools:
        - name: get-host-metrics
          description: "Retrieve host health metrics from Datadog by hostname. Returns CPU, memory, disk utilization, and alert status."
          inputParameters:
            - name: hostname
              in: body
              type: string
              description: "The Datadog hostname or host tag filter."
          call: "datadog.get-host-totals"
          with:
            filter: "host:{{hostname}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        name: "DD-API-KEY"
        in: header
        value: "$secrets.datadog_api_key"
      resources:
        - name: hosts
          path: "/hosts"
          operations:
            - name: get-host-totals
              method: GET

Checks Datadog monitor at GE Aerospace.

naftiko: "0.5"
info:
  label: "Datadog Monitor Check"
  description: "Checks Datadog monitor at GE Aerospace."
  tags:
    - monitoring
    - datadog
    - observability
capability:
  exposes:
    - type: mcp
      namespace: dd-monitor
      port: 8080
      tools:
        - name: check-monitor
          description: "Check monitor at GE Aerospace."
          inputParameters:
            - name: monitor_id
              in: body
              type: string
              description: "Monitor ID."
          call: "datadog.get-monitor"
          with:
            monitor_id: "{{monitor_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.overall_state"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: monitors
          path: "/monitor/{{monitor_id}}"
          inputParameters:
            - name: monitor_id
              in: path
          operations:
            - name: get-monitor
              method: GET

Tests disaster recovery at GE Aerospace via failover, health checks, and reporting.

naftiko: "0.5"
info:
  label: "DR Test Pipeline"
  description: "Tests disaster recovery at GE Aerospace via failover, health checks, and reporting."
  tags:
    - disaster-recovery
    - business-continuity
    - testing
capability:
  exposes:
    - type: mcp
      namespace: dr-test
      port: 8080
      tools:
        - name: test-dr
          description: "Test DR at GE Aerospace."
          inputParameters:
            - name: plan_id
              in: body
              type: string
              description: "Plan ID."
            - name: type
              in: body
              type: string
              description: "Test type."
          steps:
            - name: failover
              type: call
              call: "dr.failover"
              with:
                plan: "{{plan_id}}"
                type: "{{type}}"
            - name: validate
              type: call
              call: "monitoring.check"
              with:
                scope: "critical"
            - name: measure
              type: call
              call: "dr.metrics"
              with:
                id: "{{failover.id}}"
            - name: report
              type: call
              call: "confluence.create-page"
              with:
                title: "DR - {{plan_id}}"
                body: "RTO:{{measure.rto}}m RPO:{{measure.rpo}}m"
  consumes:
    - type: http
      namespace: dr
      baseUri: "https://dr.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.dr_token"
      resources:
        - name: failovers
          path: "/failovers"
          operations:
            - name: failover
              method: POST
    - type: http
      namespace: monitoring
      baseUri: "https://monitoring.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.monitoring_token"
      resources:
        - name: health
          path: "/checks"
          operations:
            - name: check
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://geaerospace.com.atlassian.net/wiki/rest/api"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST

Detects infrastructure drift at GE Aerospace via Terraform, Slack, and Jira.

naftiko: "0.5"
info:
  label: "Drift Detection Pipeline"
  description: "Detects infrastructure drift at GE Aerospace via Terraform, Slack, and Jira."
  tags:
    - infrastructure
    - terraform
    - drift-detection
    - devops
capability:
  exposes:
    - type: mcp
      namespace: drift-det
      port: 8080
      tools:
        - name: detect
          description: "Detect drift at GE Aerospace."
          inputParameters:
            - name: ws_id
              in: body
              type: string
              description: "Workspace ID."
            - name: env
              in: body
              type: string
              description: "Environment."
          steps:
            - name: plan
              type: call
              call: "terraform.run"
              with:
                ws: "{{ws_id}}"
            - name: check
              type: call
              call: "terraform.get-plan"
              with:
                run: "{{plan.id}}"
            - name: alert
              type: call
              call: "slack.post-message"
              with:
                channel: "#infra"
                text: "Drift {{env}}: {{check.changes}} changes"
            - name: ticket
              type: call
              call: "jira.create-issue"
              with:
                project: "INFRA"
                summary: "Drift in {{env}}"
  consumes:
    - type: http
      namespace: terraform
      baseUri: "https://app.terraform.io/api/v2"
      authentication:
        type: bearer
        token: "$secrets.terraform_token"
      resources:
        - name: runs
          path: "/runs"
          operations:
            - name: run
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://geaerospace.com.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST

Retrieves Dynatrace application monitoring data for GE Aerospace services, returning response time, failure rate, and user action counts.

naftiko: "0.5"
info:
  label: "Dynatrace Application Monitoring"
  description: "Retrieves Dynatrace application monitoring data for GE Aerospace services, returning response time, failure rate, and user action counts."
  tags:
    - infrastructure
    - apm
    - dynatrace
capability:
  exposes:
    - type: mcp
      namespace: dynatrace-apm
      port: 8080
      tools:
        - name: get-app-metrics
          description: "Retrieve Dynatrace application performance by entity ID."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The Dynatrace entity ID."
          call: "dynatrace.get-entity"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: dynatrace
      baseUri: "https://ge-aerospace.live.dynatrace.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.dynatrace_token"
      resources:
        - name: entities
          path: "/entities/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-entity
              method: GET

Checks ES index at GE Aerospace.

naftiko: "0.5"
info:
  label: "ES Index Health"
  description: "Checks ES index at GE Aerospace."
  tags:
    - search
    - elasticsearch
    - infrastructure
capability:
  exposes:
    - type: mcp
      namespace: es-health
      port: 8080
      tools:
        - name: check-index
          description: "Check ES index at GE Aerospace."
          inputParameters:
            - name: index
              in: body
              type: string
              description: "Index name."
          call: "es.get-health"
          with:
            index: "{{index}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.status"
            - name: docs
              type: number
              mapping: "$.docs.count"
  consumes:
    - type: http
      namespace: es
      baseUri: "https://es.geaerospace.com:9200"
      authentication:
        type: bearer
        token: "$secrets.es_token"
      resources:
        - name: indices
          path: "/{{index}}/_stats"
          inputParameters:
            - name: index
              in: path
          operations:
            - name: get-health
              method: GET

Offboards employees at GE Aerospace via Okta, Slack, ServiceNow, and storage.

naftiko: "0.5"
info:
  label: "Employee Offboarding Pipeline"
  description: "Offboards employees at GE Aerospace via Okta, Slack, ServiceNow, and storage."
  tags:
    - hr
    - offboarding
    - okta
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: offboarding
      port: 8080
      tools:
        - name: offboard
          description: "Offboard employees at GE Aerospace."
          inputParameters:
            - name: emp_id
              in: body
              type: string
              description: "Employee ID."
            - name: last_day
              in: body
              type: string
              description: "Last day."
          steps:
            - name: disable
              type: call
              call: "okta.deactivate"
              with:
                user: "{{emp_id}}"
            - name: revoke
              type: call
              call: "slack.remove"
              with:
                user: "{{emp_id}}"
            - name: return
              type: call
              call: "servicenow.create-request"
              with:
                type: "return"
                emp: "{{emp_id}}"
            - name: archive
              type: call
              call: "storage.archive"
              with:
                user: "{{emp_id}}"
  consumes:
    - type: http
      namespace: okta
      baseUri: "https://geaerospace.com.okta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.okta_api_token"
      resources:
        - name: users
          path: "/users/{{user}}/lifecycle/deactivate"
          inputParameters:
            - name: user
              in: path
          operations:
            - name: deactivate
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: users
          path: "/users.admin.remove"
          operations:
            - name: remove
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://geaerospace.com.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: requests
          path: "/table/sc_request"
          operations:
            - name: create-request
              method: POST
    - type: http
      namespace: storage
      baseUri: "https://storage.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.storage_token"
      resources:
        - name: archives
          path: "/archive"
          operations:
            - name: archive
              method: POST

On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder for training documents, assigns a Pluralsight learning path, and sends a Microsoft Teams welcome message.

naftiko: "0.5"
info:
  label: "Employee Onboarding Orchestrator"
  description: "On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder for training documents, assigns a Pluralsight learning path, and sends a Microsoft Teams welcome message."
  tags:
    - hr
    - onboarding
    - workday
    - servicenow
    - sharepoint
    - pluralsight
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: hr-onboarding
      port: 8080
      tools:
        - name: onboard-employee
          description: "Given a Workday worker ID and start date, orchestrate IT ticket, training folder, learning path, and welcome message."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "The Workday worker ID."
            - name: start_date
              in: body
              type: string
              description: "Employee start date in YYYY-MM-DD format."
            - name: department
              in: body
              type: string
              description: "The department the new hire is joining."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{worker_id}}"
            - name: open-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "New hire onboarding: {{get-employee.full_name}}"
                category: "hr_onboarding"
                assigned_group: "IT_Onboarding"
                description: "Onboarding for {{get-employee.full_name}} starting {{start_date}} in {{department}}."
            - name: provision-folder
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "hr_onboarding"
                folder_path: "NewHires/{{get-employee.full_name}}_{{start_date}}"
            - name: assign-learning
              type: call
              call: "pluralsight.assign-path"
              with:
                user_email: "{{get-employee.work_email}}"
                path_id: "aerospace-fundamentals"
            - name: send-welcome
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-employee.work_email}}"
                text: "Welcome to GE Aerospace, {{get-employee.first_name}}! IT ticket: {{open-ticket.number}}. Training docs: {{provision-folder.url}}. Your Pluralsight path: {{assign-learning.path_url}}."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://geaerospace.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: folders
          path: "/{{site_id}}/drive/root:/{{folder_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: create-folder
              method: POST
    - type: http
      namespace: pluralsight
      baseUri: "https://api.pluralsight.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.pluralsight_token"
      resources:
        - name: assignments
          path: "/learning-paths/{{path_id}}/assignments"
          inputParameters:
            - name: path_id
              in: path
          operations:
            - name: assign-path
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

When an engine reaches delivery milestone, updates SAP delivery status, creates a Salesforce activity for the account team, uploads delivery documentation to SharePoint, and notifies the customer program manager via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Engine Delivery Milestone Orchestrator"
  description: "When an engine reaches delivery milestone, updates SAP delivery status, creates a Salesforce activity for the account team, uploads delivery documentation to SharePoint, and notifies the customer program manager via Microsoft Teams."
  tags:
    - engine-delivery
    - sap
    - salesforce
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: engine-delivery
      port: 8080
      tools:
        - name: process-delivery-milestone
          description: "Given an engine serial number and milestone, update SAP, log Salesforce activity, upload docs, and notify the PM."
          inputParameters:
            - name: serial_number
              in: body
              type: string
              description: "The engine serial number."
            - name: milestone
              in: body
              type: string
              description: "The delivery milestone (e.g. Final Test Complete, Shipping, Delivered)."
            - name: customer_account_id
              in: body
              type: string
              description: "The Salesforce customer account ID."
          steps:
            - name: update-sap-status
              type: call
              call: "sap.update-delivery-status"
              with:
                equipment: "{{serial_number}}"
                milestone: "{{milestone}}"
            - name: log-sf-activity
              type: call
              call: "salesforce.create-activity"
              with:
                account_id: "{{customer_account_id}}"
                subject: "Engine {{serial_number}} — {{milestone}}"
                description: "Engine {{serial_number}} reached milestone: {{milestone}}."
            - name: upload-docs
              type: call
              call: "sharepoint.upload-file"
              with:
                site_id: "engine-deliveries"
                folder_path: "{{serial_number}}/{{milestone}}"
            - name: notify-pm
              type: call
              call: "msteams.post-channel-message"
              with:
                team_id: "customer-programs"
                channel_id: "delivery-milestones"
                text: "Engine {{serial_number}} milestone: {{milestone}}. SAP updated. Salesforce logged. Documents: {{upload-docs.url}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://ge-aerospace-s4.sap.com/sap/opu/odata/sap/ZPM_DELIVERY_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: delivery-status
          path: "/DeliveryStatusSet"
          operations:
            - name: update-delivery-status
              method: PATCH
    - type: http
      namespace: salesforce
      baseUri: "https://geaerospace.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: activities
          path: "/sobjects/Task"
          operations:
            - name: create-activity
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: files
          path: "/{{site_id}}/drive/root:/{{folder_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: upload-file
              method: PUT
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Retrieves engine configuration and status from SAP S/4HANA by engine serial number, returning engine model, build date, total flight hours, and current operator.

naftiko: "0.5"
info:
  label: "Engine Serial Number Lookup"
  description: "Retrieves engine configuration and status from SAP S/4HANA by engine serial number, returning engine model, build date, total flight hours, and current operator."
  tags:
    - engine-management
    - sap
capability:
  exposes:
    - type: mcp
      namespace: engine-registry
      port: 8080
      tools:
        - name: get-engine-details
          description: "Look up an engine by serial number. Returns model, build date, flight hours, cycles, and current operator."
          inputParameters:
            - name: serial_number
              in: body
              type: string
              description: "The engine serial number."
          call: "sap.get-engine"
          with:
            serial_number: "{{serial_number}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://ge-aerospace-s4.sap.com/sap/opu/odata/sap/ZPM_ENGINE_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: engines
          path: "/EngineSet('{{serial_number}}')"
          inputParameters:
            - name: serial_number
              in: path
          operations:
            - name: get-engine
              method: GET

When an engine arrives for overhaul, creates the work order in SAP, opens a ServiceNow MRO ticket, provisions a SharePoint documentation folder, and notifies the shop floor team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Engine Shop Visit Orchestrator"
  description: "When an engine arrives for overhaul, creates the work order in SAP, opens a ServiceNow MRO ticket, provisions a SharePoint documentation folder, and notifies the shop floor team via Microsoft Teams."
  tags:
    - mro
    - engine-overhaul
    - sap
    - servicenow
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: shop-visit
      port: 8080
      tools:
        - name: initiate-shop-visit
          description: "Given an engine serial number and shop location, create the SAP work order, ServiceNow ticket, documentation folder, and notify the shop team."
          inputParameters:
            - name: serial_number
              in: body
              type: string
              description: "The engine serial number."
            - name: shop_code
              in: body
              type: string
              description: "The MRO shop facility code."
            - name: visit_type
              in: body
              type: string
              description: "Type of shop visit (e.g. overhaul, repair, inspection)."
          steps:
            - name: get-engine
              type: call
              call: "sap.get-engine"
              with:
                serial_number: "{{serial_number}}"
            - name: create-work-order
              type: call
              call: "sap.create-work-order"
              with:
                equipment: "{{serial_number}}"
                order_type: "{{visit_type}}"
                plant: "{{shop_code}}"
                description: "Shop visit: {{visit_type}} for engine {{serial_number}} ({{get-engine.model}})"
            - name: open-mro-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Engine shop visit: {{serial_number}} — {{visit_type}}"
                category: "mro"
                assigned_group: "MRO_{{shop_code}}"
                description: "Engine: {{get-engine.model}} (SN: {{serial_number}}). Visit type: {{visit_type}}. SAP WO: {{create-work-order.order_number}}. Flight hours: {{get-engine.total_flight_hours}}."
            - name: provision-docs
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "mro-documentation"
                folder_path: "ShopVisits/{{serial_number}}_{{create-work-order.order_number}}"
            - name: notify-shop
              type: call
              call: "msteams.post-channel-message"
              with:
                team_id: "mro-{{shop_code}}"
                channel_id: "shop-floor"
                text: "New shop visit: Engine {{serial_number}} ({{get-engine.model}}). Type: {{visit_type}}. SAP WO: {{create-work-order.order_number}}. ServiceNow: {{open-mro-ticket.number}}. Docs: {{provision-docs.url}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://ge-aerospace-s4.sap.com/sap/opu/odata/sap/ZPM_ENGINE_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: engines
          path: "/EngineSet('{{serial_number}}')"
          inputParameters:
            - name: serial_number
              in: path
          operations:
            - name: get-engine
              method: GET
        - name: work-orders
          path: "/WorkOrderSet"
          operations:
            - name: create-work-order
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://geaerospace.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: folders
          path: "/{{site_id}}/drive/root:/{{folder_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: create-folder
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

After an engine test run, collects test data from Azure IoT Hub, logs results in SAP, generates a test report in Confluence, and notifies the test engineering team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Engine Test Cell Data Orchestrator"
  description: "After an engine test run, collects test data from Azure IoT Hub, logs results in SAP, generates a test report in Confluence, and notifies the test engineering team via Microsoft Teams."
  tags:
    - engine-testing
    - telemetry
    - microsoft-azure
    - sap
    - confluence
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: test-cell
      port: 8080
      tools:
        - name: process-test-run
          description: "Given a test run ID and engine serial number, collect telemetry, log in SAP, generate report, and notify the team."
          inputParameters:
            - name: test_run_id
              in: body
              type: string
              description: "The test run identifier."
            - name: serial_number
              in: body
              type: string
              description: "The engine serial number under test."
          steps:
            - name: get-test-data
              type: call
              call: "azure-iot.get-test-telemetry"
              with:
                test_run_id: "{{test_run_id}}"
            - name: log-results
              type: call
              call: "sap.create-test-record"
              with:
                equipment: "{{serial_number}}"
                test_run: "{{test_run_id}}"
                results: "{{get-test-data.summary}}"
            - name: generate-report
              type: call
              call: "confluence.create-page"
              with:
                space_key: "TESTENG"
                title: "Test Report: {{serial_number}} — Run {{test_run_id}}"
                body: "Engine: {{serial_number}}. Test Run: {{test_run_id}}. Peak thrust: {{get-test-data.peak_thrust}}. EGT margin: {{get-test-data.egt_margin}}. Result: {{get-test-data.pass_fail}}."
            - name: notify-team
              type: call
              call: "msteams.post-channel-message"
              with:
                team_id: "test-engineering"
                channel_id: "test-results"
                text: "Test complete: Engine {{serial_number}}, Run {{test_run_id}}. Result: {{get-test-data.pass_fail}}. Peak thrust: {{get-test-data.peak_thrust}}. Report: {{generate-report.url}}."
  consumes:
    - type: http
      namespace: azure-iot
      baseUri: "https://ge-aerospace-iothub.azure-devices.net"
      authentication:
        type: bearer
        token: "$secrets.azure_iot_token"
      resources:
        - name: test-telemetry
          path: "/twins/query"
          operations:
            - name: get-test-telemetry
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://ge-aerospace-s4.sap.com/sap/opu/odata/sap/ZPM_TEST_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: test-records
          path: "/TestRecordSet"
          operations:
            - name: create-test-record
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://geaerospace.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Processes an engineering change order by retrieving the ECO from SAP, updating the bill of materials, creating a Jira task for implementation, documenting the change in Confluence, and notifying affected programs via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Engineering Change Order Orchestrator"
  description: "Processes an engineering change order by retrieving the ECO from SAP, updating the bill of materials, creating a Jira task for implementation, documenting the change in Confluence, and notifying affected programs via Microsoft Teams."
  tags:
    - engineering
    - change-management
    - sap
    - jira
    - confluence
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: eco-management
      port: 8080
      tools:
        - name: process-change-order
          description: "Given an ECO number, retrieve the change details, log implementation tasks, document in Confluence, and notify programs."
          inputParameters:
            - name: eco_number
              in: body
              type: string
              description: "The SAP engineering change order number."
            - name: affected_programs
              in: body
              type: string
              description: "Comma-separated list of affected engine programs."
          steps:
            - name: get-eco
              type: call
              call: "sap.get-change-order"
              with:
                eco_number: "{{eco_number}}"
            - name: create-implementation-task
              type: call
              call: "jira.create-issue"
              with:
                project: "ECO"
                summary: "Implement ECO {{eco_number}}: {{get-eco.description}}"
                description: "ECO: {{eco_number}}. Affected parts: {{get-eco.affected_parts}}. Programs: {{affected_programs}}. Effective date: {{get-eco.effective_date}}."
                issue_type: "Task"
            - name: document-change
              type: call
              call: "confluence.create-page"
              with:
                space_key: "ENG"
                title: "ECO {{eco_number}} — {{get-eco.description}}"
                body: "Change order: {{eco_number}}. Description: {{get-eco.description}}. Affected parts: {{get-eco.affected_parts}}. Programs: {{affected_programs}}. Jira: {{create-implementation-task.key}}."
            - name: notify-programs
              type: call
              call: "msteams.post-channel-message"
              with:
                team_id: "engineering"
                channel_id: "change-orders"
                text: "ECO {{eco_number}}: {{get-eco.description}}. Affected programs: {{affected_programs}}. Jira: {{create-implementation-task.key}}. Documentation: {{document-change.url}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://ge-aerospace-s4.sap.com/sap/opu/odata/sap/ZPM_ECO_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: change-orders
          path: "/ChangeOrderSet('{{eco_number}}')"
          inputParameters:
            - name: eco_number
              in: path
          operations:
            - name: get-change-order
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://geaerospace.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://geaerospace.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Audits expenses at GE Aerospace via Concur, compliance checks, and email.

naftiko: "0.5"
info:
  label: "Expense Audit Pipeline"
  description: "Audits expenses at GE Aerospace via Concur, compliance checks, and email."
  tags:
    - finance
    - travel
    - sap-concur
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: expense-audit
      port: 8080
      tools:
        - name: audit
          description: "Audit expenses at GE Aerospace."
          inputParameters:
            - name: report_id
              in: body
              type: string
              description: "Report ID."
          steps:
            - name: get
              type: call
              call: "concur.get-report"
              with:
                id: "{{report_id}}"
            - name: check
              type: call
              call: "compliance.check"
              with:
                expenses: "{{get.entries}}"
            - name: flag
              type: call
              call: "workflow.flag"
              with:
                id: "{{report_id}}"
                violations: "{{check.violations}}"
            - name: notify
              type: call
              call: "email.send"
              with:
                to: "{{get.approver}}"
                subject: "Expense {{report_id}} violations"
  consumes:
    - type: http
      namespace: concur
      baseUri: "https://us.api.concursolutions.com/api/v3.0"
      authentication:
        type: bearer
        token: "$secrets.concur_token"
      resources:
        - name: reports
          path: "/expense/reports/{{id}}"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-report
              method: GET
    - type: http
      namespace: compliance
      baseUri: "https://compliance.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.compliance_token"
      resources:
        - name: policies
          path: "/check"
          operations:
            - name: check
              method: POST
    - type: http
      namespace: workflow
      baseUri: "https://workflow.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workflow_token"
      resources:
        - name: reviews
          path: "/flag"
          operations:
            - name: flag
              method: POST
    - type: http
      namespace: email
      baseUri: "https://email.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.email_token"
      resources:
        - name: messages
          path: "/send"
          operations:
            - name: send
              method: POST

Retrieves a SAP Concur expense report, validates against Workday cost center data, and opens a ServiceNow task for finance review when policy exceptions are detected.

naftiko: "0.5"
info:
  label: "Expense Report Compliance Review"
  description: "Retrieves a SAP Concur expense report, validates against Workday cost center data, and opens a ServiceNow task for finance review when policy exceptions are detected."
  tags:
    - finance
    - compliance
    - sap-concur
    - workday
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: expense-compliance
      port: 8080
      tools:
        - name: review-expense-compliance
          description: "Given a Concur report ID and employee ID, validate the expense against policy and cost center, and flag violations."
          inputParameters:
            - name: report_id
              in: body
              type: string
              description: "The SAP Concur expense report ID."
            - name: employee_id
              in: body
              type: string
              description: "The Workday employee ID."
          steps:
            - name: get-report
              type: call
              call: "concur.get-report"
              with:
                report_id: "{{report_id}}"
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{employee_id}}"
            - name: create-review-task
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Expense review: {{get-report.report_name}} — {{get-employee.full_name}}"
                description: "Report {{report_id}} total: {{get-report.total_amount}}. Cost center: {{get-employee.cost_center}}. Employee: {{get-employee.full_name}}."
                assigned_group: "Finance_Audit"
                category: "expense_review"
  consumes:
    - type: http
      namespace: concur
      baseUri: "https://us2.api.concursolutions.com/api/v3.0"
      authentication:
        type: bearer
        token: "$secrets.concur_token"
      resources:
        - name: reports
          path: "/expense/reports/{{report_id}}"
          inputParameters:
            - name: report_id
              in: path
          operations:
            - name: get-report
              method: GET
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://geaerospace.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/sc_task"
          operations:
            - name: create-task
              method: POST

When a new FAA AD is published, creates a compliance tracking record in SAP, opens a Jira task for engineering review, logs the AD in Confluence, and notifies the regulatory compliance team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "FAA Airworthiness Directive Compliance Tracker"
  description: "When a new FAA AD is published, creates a compliance tracking record in SAP, opens a Jira task for engineering review, logs the AD in Confluence, and notifies the regulatory compliance team via Microsoft Teams."
  tags:
    - compliance
    - regulatory
    - sap
    - jira
    - confluence
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: ad-compliance
      port: 8080
      tools:
        - name: track-airworthiness-directive
          description: "Given an AD number and affected engine models, create SAP compliance record, Jira task, Confluence documentation, and team notification."
          inputParameters:
            - name: ad_number
              in: body
              type: string
              description: "The FAA Airworthiness Directive number."
            - name: ad_title
              in: body
              type: string
              description: "Title of the AD."
            - name: affected_models
              in: body
              type: string
              description: "Comma-separated list of affected engine models."
            - name: compliance_deadline
              in: body
              type: string
              description: "Compliance deadline in YYYY-MM-DD format."
          steps:
            - name: create-compliance-record
              type: call
              call: "sap.create-compliance-record"
              with:
                ad_number: "{{ad_number}}"
                description: "{{ad_title}}"
                affected_models: "{{affected_models}}"
                deadline: "{{compliance_deadline}}"
            - name: create-review-task
              type: call
              call: "jira.create-issue"
              with:
                project: "COMPLY"
                summary: "AD {{ad_number}}: {{ad_title}}"
                description: "Affected models: {{affected_models}}. Deadline: {{compliance_deadline}}. SAP record: {{create-compliance-record.record_id}}."
                issue_type: "Task"
                due_date: "{{compliance_deadline}}"
            - name: document-ad
              type: call
              call: "confluence.create-page"
              with:
                space_key: "REGCOMP"
                title: "AD {{ad_number}} — {{ad_title}}"
                body: "AD Number: {{ad_number}}. Title: {{ad_title}}. Models: {{affected_models}}. Deadline: {{compliance_deadline}}. SAP: {{create-compliance-record.record_id}}. Jira: {{create-review-task.key}}."
            - name: notify-compliance
              type: call
              call: "msteams.post-channel-message"
              with:
                team_id: "regulatory-compliance"
                channel_id: "airworthiness-directives"
                text: "New AD {{ad_number}}: {{ad_title}}. Models: {{affected_models}}. Deadline: {{compliance_deadline}}. Jira: {{create-review-task.key}}. Docs: {{document-ad.url}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://ge-aerospace-s4.sap.com/sap/opu/odata/sap/ZPM_COMPLIANCE_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: compliance-records
          path: "/ComplianceRecordSet"
          operations:
            - name: create-compliance-record
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://geaerospace.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://geaerospace.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Analyzes feedback at GE Aerospace via surveys, AI sentiment, and Power BI.

naftiko: "0.5"
info:
  label: "Customer Feedback Pipeline"
  description: "Analyzes feedback at GE Aerospace via surveys, AI sentiment, and Power BI."
  tags:
    - customer-experience
    - analytics
    - sentiment-analysis
capability:
  exposes:
    - type: mcp
      namespace: feedback
      port: 8080
      tools:
        - name: analyze
          description: "Analyze feedback at GE Aerospace."
          inputParameters:
            - name: survey_id
              in: body
              type: string
              description: "Survey ID."
          steps:
            - name: collect
              type: call
              call: "survey.get"
              with:
                id: "{{survey_id}}"
            - name: sentiment
              type: call
              call: "ai.analyze"
              with:
                text: "{{collect.responses}}"
            - name: themes
              type: call
              call: "ai.themes"
              with:
                data: "{{collect.responses}}"
            - name: dashboard
              type: call
              call: "power-bi.refresh"
              with:
                dataset: "cx"
  consumes:
    - type: http
      namespace: survey
      baseUri: "https://surveys.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.survey_token"
      resources:
        - name: responses
          path: "/surveys/{{id}}/responses"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get
              method: GET
    - type: http
      namespace: ai
      baseUri: "https://api.openai.com/v1"
      authentication:
        type: bearer
        token: "$secrets.openai_api_key"
      resources:
        - name: completions
          path: "/chat/completions"
          operations:
            - name: analyze
              method: POST
    - type: http
      namespace: power-bi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.power_bi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset}}/refreshes"
          inputParameters:
            - name: dataset
              in: path
          operations:
            - name: refresh
              method: POST

Aggregates engine telemetry from Azure IoT Hub, correlates with maintenance history from SAP, refreshes the Power BI fleet dashboard, and alerts the fleet management team in Microsoft Teams when health scores drop.

naftiko: "0.5"
info:
  label: "Fleet Health Monitoring Dashboard Pipeline"
  description: "Aggregates engine telemetry from Azure IoT Hub, correlates with maintenance history from SAP, refreshes the Power BI fleet dashboard, and alerts the fleet management team in Microsoft Teams when health scores drop."
  tags:
    - fleet-management
    - telemetry
    - microsoft-azure
    - sap
    - power-bi
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: fleet-health
      port: 8080
      tools:
        - name: refresh-fleet-health
          description: "Given a fleet ID, pull latest telemetry, correlate with SAP maintenance data, refresh Power BI, and alert on anomalies."
          inputParameters:
            - name: fleet_id
              in: body
              type: string
              description: "The fleet identifier for the airline customer."
            - name: threshold_score
              in: body
              type: number
              description: "Minimum health score threshold for alerting."
          steps:
            - name: get-telemetry
              type: call
              call: "azure-iot.get-fleet-telemetry"
              with:
                fleet_id: "{{fleet_id}}"
            - name: get-maintenance-history
              type: call
              call: "sap.get-fleet-maintenance"
              with:
                fleet_id: "{{fleet_id}}"
            - name: refresh-dashboard
              type: call
              call: "powerbi.refresh-dataset"
              with:
                dataset_id: "fleet-health-dashboard"
            - name: alert-team
              type: call
              call: "msteams.post-channel-message"
              with:
                team_id: "fleet-ops"
                channel_id: "health-alerts"
                text: "Fleet {{fleet_id}} health update: {{get-telemetry.engine_count}} engines monitored. Avg health score: {{get-telemetry.avg_health_score}}. {{get-maintenance-history.open_work_orders}} open work orders. Dashboard refreshed."
  consumes:
    - type: http
      namespace: azure-iot
      baseUri: "https://ge-aerospace-iothub.azure-devices.net"
      authentication:
        type: bearer
        token: "$secrets.azure_iot_token"
      resources:
        - name: fleet-telemetry
          path: "/twins/query"
          operations:
            - name: get-fleet-telemetry
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://ge-aerospace-s4.sap.com/sap/opu/odata/sap/ZPM_FLEET_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: fleet-maintenance
          path: "/FleetMaintenanceSet"
          operations:
            - name: get-fleet-maintenance
              method: GET
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: refresh-dataset
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Checks GitHub repo at GE Aerospace.

naftiko: "0.5"
info:
  label: "GitHub Repo Check"
  description: "Checks GitHub repo at GE Aerospace."
  tags:
    - devops
    - github
    - version-control
capability:
  exposes:
    - type: mcp
      namespace: gh-repo
      port: 8080
      tools:
        - name: get-branch
          description: "Check branch at GE Aerospace."
          inputParameters:
            - name: repo
              in: body
              type: string
              description: "Repo."
            - name: branch
              in: body
              type: string
              description: "Branch."
          call: "github.get-branch"
          with:
            repo: "{{repo}}"
            branch: "{{branch}}"
          outputParameters:
            - name: sha
              type: string
              mapping: "$.commit.sha"
  consumes:
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: branches
          path: "/repos/org/{{repo}}/branches/{{branch}}"
          inputParameters:
            - name: repo
              in: path
            - name: branch
              in: path
          operations:
            - name: get-branch
              method: GET

Retrieves GCP Cloud Storage usage metrics for GE Aerospace buckets, returning total size, object count, and egress bandwidth.

naftiko: "0.5"
info:
  label: "Google Cloud Platform Storage Usage"
  description: "Retrieves GCP Cloud Storage usage metrics for GE Aerospace buckets, returning total size, object count, and egress bandwidth."
  tags:
    - infrastructure
    - cloud-storage
    - google-cloud-platform
capability:
  exposes:
    - type: mcp
      namespace: cloud-storage
      port: 8080
      tools:
        - name: get-storage-usage
          description: "Retrieve GCP Cloud Storage bucket metrics by bucket name."
          inputParameters:
            - name: bucket_name
              in: body
              type: string
              description: "The GCS bucket name."
          call: "gcs.get-bucket"
          with:
            bucket: "{{bucket_name}}"
  consumes:
    - type: http
      namespace: gcs
      baseUri: "https://storage.googleapis.com/storage/v1"
      authentication:
        type: bearer
        token: "$secrets.gcp_token"
      resources:
        - name: buckets
          path: "/b/{{bucket}}"
          inputParameters:
            - name: bucket
              in: path
          operations:
            - name: get-bucket
              method: GET

Checks Grafana dashboard at GE Aerospace.

naftiko: "0.5"
info:
  label: "Grafana Dashboard Status"
  description: "Checks Grafana dashboard at GE Aerospace."
  tags:
    - monitoring
    - grafana
    - dashboards
capability:
  exposes:
    - type: mcp
      namespace: grafana
      port: 8080
      tools:
        - name: check-dash
          description: "Check dashboard at GE Aerospace."
          inputParameters:
            - name: uid
              in: body
              type: string
              description: "Dashboard UID."
          call: "grafana.get-dash"
          with:
            uid: "{{uid}}"
          outputParameters:
            - name: title
              type: string
              mapping: "$.dashboard.title"
  consumes:
    - type: http
      namespace: grafana
      baseUri: "https://grafana.geaerospace.com/api"
      authentication:
        type: bearer
        token: "$secrets.grafana_token"
      resources:
        - name: dashboards
          path: "/dashboards/uid/{{uid}}"
          inputParameters:
            - name: uid
              in: path
          operations:
            - name: get-dash
              method: GET

Queries Grafana for operational metrics dashboards covering MRO throughput, engine delivery times, and quality KPIs.

naftiko: "0.5"
info:
  label: "Grafana Operational Metrics"
  description: "Queries Grafana for operational metrics dashboards covering MRO throughput, engine delivery times, and quality KPIs."
  tags:
    - operations
    - monitoring
    - grafana
capability:
  exposes:
    - type: mcp
      namespace: ops-metrics
      port: 8080
      tools:
        - name: get-dashboard-snapshot
          description: "Retrieve current metric values from a Grafana dashboard by UID."
          inputParameters:
            - name: dashboard_uid
              in: body
              type: string
              description: "The Grafana dashboard UID."
          call: "grafana.get-dashboard"
          with:
            uid: "{{dashboard_uid}}"
  consumes:
    - type: http
      namespace: grafana
      baseUri: "https://ge-aerospace-grafana.internal/api"
      authentication:
        type: bearer
        token: "$secrets.grafana_token"
      resources:
        - name: dashboards
          path: "/dashboards/uid/{{uid}}"
          inputParameters:
            - name: uid
              in: path
          operations:
            - name: get-dashboard
              method: GET

Retrieves new marketing leads from HubSpot for GE Aerospace's aviation services marketing campaigns, returning contact details, lead source, and engagement score.

naftiko: "0.5"
info:
  label: "HubSpot Marketing Lead Capture"
  description: "Retrieves new marketing leads from HubSpot for GE Aerospace's aviation services marketing campaigns, returning contact details, lead source, and engagement score."
  tags:
    - marketing
    - lead-management
    - hubspot
capability:
  exposes:
    - type: mcp
      namespace: marketing-leads
      port: 8080
      tools:
        - name: get-recent-leads
          description: "Retrieve recent leads from HubSpot for a given campaign. Returns contact name, email, company, and lead score."
          inputParameters:
            - name: campaign_id
              in: body
              type: string
              description: "The HubSpot campaign ID."
          call: "hubspot.get-campaign-contacts"
          with:
            campaign_id: "{{campaign_id}}"
  consumes:
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: contacts
          path: "/crm/v3/objects/contacts/search"
          operations:
            - name: get-campaign-contacts
              method: POST

Checks the status of an Informatica data integration job, returning execution status, rows processed, errors, and runtime duration.

naftiko: "0.5"
info:
  label: "Informatica Data Pipeline Monitoring"
  description: "Checks the status of an Informatica data integration job, returning execution status, rows processed, errors, and runtime duration."
  tags:
    - data-engineering
    - etl
    - informatica
capability:
  exposes:
    - type: mcp
      namespace: data-integration
      port: 8080
      tools:
        - name: get-job-status
          description: "Look up an Informatica job by task ID. Returns status, rows processed, errors, and duration."
          inputParameters:
            - name: task_id
              in: body
              type: string
              description: "The Informatica task ID."
          call: "informatica.get-activity-log"
          with:
            task_id: "{{task_id}}"
  consumes:
    - type: http
      namespace: informatica
      baseUri: "https://dm-us.informaticacloud.com/saas/api/v2"
      authentication:
        type: bearer
        token: "$secrets.informatica_token"
      resources:
        - name: activity-log
          path: "/activity/activityLog?taskId={{task_id}}"
          inputParameters:
            - name: task_id
              in: query
          operations:
            - name: get-activity-log
              method: GET

Escalates IT incidents at GE Aerospace via ServiceNow, PagerDuty, and Slack.

naftiko: "0.5"
info:
  label: "IT Incident Escalation Pipeline"
  description: "Escalates IT incidents at GE Aerospace via ServiceNow, PagerDuty, and Slack."
  tags:
    - incident-management
    - servicenow
    - pagerduty
    - slack
capability:
  exposes:
    - type: mcp
      namespace: incident-escalation
      port: 8080
      tools:
        - name: escalate-incident
          description: "Escalate incidents at GE Aerospace."
          inputParameters:
            - name: incident_id
              in: body
              type: string
              description: "Incident ID."
            - name: severity
              in: body
              type: string
              description: "Severity."
          steps:
            - name: get-incident
              type: call
              call: "servicenow.get-incident"
              with:
                incident_id: "{{incident_id}}"
            - name: page
              type: call
              call: "pagerduty.create-incident"
              with:
                title: "{{get-incident.description}}"
                urgency: "{{severity}}"
            - name: channel
              type: call
              call: "slack.create-channel"
              with:
                name: "inc-{{incident_id}}"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                channel: "#inc-{{incident_id}}"
                text: "P{{severity}}: {{get-incident.description}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://geaerospace.com.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: incidents
          path: "/table/incident/{{incident_id}}"
          inputParameters:
            - name: incident_id
              in: path
          operations:
            - name: get-incident
              method: GET
    - type: http
      namespace: pagerduty
      baseUri: "https://api.pagerduty.com"
      authentication:
        type: bearer
        token: "$secrets.pagerduty_token"
      resources:
        - name: incidents
          path: "/incidents"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: channels
          path: "/conversations.create"
          operations:
            - name: create-channel
              method: POST

Retrieves a Jira engineering task by issue key, returning summary, status, assignee, priority, and linked requirements.

naftiko: "0.5"
info:
  label: "Jira Engineering Task Lookup"
  description: "Retrieves a Jira engineering task by issue key, returning summary, status, assignee, priority, and linked requirements."
  tags:
    - engineering
    - project-management
    - jira
capability:
  exposes:
    - type: mcp
      namespace: eng-tasks
      port: 8080
      tools:
        - name: get-engineering-task
          description: "Look up a Jira issue by key. Returns summary, status, assignee, and priority."
          inputParameters:
            - name: issue_key
              in: body
              type: string
              description: "The Jira issue key (e.g. ENG-1234)."
          call: "jira.get-issue"
          with:
            issue_key: "{{issue_key}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://geaerospace.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

Retrieves sprint progress at GE Aerospace.

naftiko: "0.5"
info:
  label: "Jira Sprint Progress Lookup"
  description: "Retrieves sprint progress at GE Aerospace."
  tags:
    - project-management
    - jira
    - agile
capability:
  exposes:
    - type: mcp
      namespace: jira-sprint
      port: 8080
      tools:
        - name: get-sprint
          description: "Look up sprint at GE Aerospace."
          inputParameters:
            - name: project_key
              in: body
              type: string
              description: "Project key."
          call: "jira.get-sprints"
          with:
            project: "{{project_key}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.values[0].name"
            - name: state
              type: string
              mapping: "$.values[0].state"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://geaerospace.com.atlassian.net/rest/agile/1.0"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: sprints
          path: "/board/1/sprint"
          operations:
            - name: get-sprints
              method: GET

Maintains KB at GE Aerospace by finding stale articles and notifying owners.

naftiko: "0.5"
info:
  label: "Knowledge Base Maintenance Pipeline"
  description: "Maintains KB at GE Aerospace by finding stale articles and notifying owners."
  tags:
    - knowledge-management
    - confluence
    - maintenance
capability:
  exposes:
    - type: mcp
      namespace: kb-maint
      port: 8080
      tools:
        - name: maintain-kb
          description: "Maintain KB at GE Aerospace."
          inputParameters:
            - name: space
              in: body
              type: string
              description: "Confluence space."
            - name: stale_days
              in: body
              type: number
              description: "Days threshold."
          steps:
            - name: find
              type: call
              call: "confluence.search-stale"
              with:
                space: "{{space}}"
                days: "{{stale_days}}"
            - name: notify
              type: call
              call: "email.batch"
              with:
                to: "{{find.owners}}"
                subject: "KB review needed"
            - name: flag
              type: call
              call: "confluence.add-label"
              with:
                pages: "{{find.ids}}"
                label: "needs-review"
            - name: report
              type: call
              call: "slack.post-message"
              with:
                channel: "#kb"
                text: "KB: {{find.count}} stale articles"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://geaerospace.com.atlassian.net/wiki/rest/api"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: content
          path: "/content/search"
          operations:
            - name: search-stale
              method: GET
    - type: http
      namespace: email
      baseUri: "https://email.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.email_token"
      resources:
        - name: batch
          path: "/send-batch"
          operations:
            - name: batch
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Generates KPI digest at GE Aerospace from Snowflake, Oracle, Power BI, and email.

naftiko: "0.5"
info:
  label: "Weekly KPI Digest Pipeline"
  description: "Generates KPI digest at GE Aerospace from Snowflake, Oracle, Power BI, and email."
  tags:
    - reporting
    - kpi
    - snowflake
    - executive
capability:
  exposes:
    - type: mcp
      namespace: kpi-digest
      port: 8080
      tools:
        - name: gen-digest
          description: "Generate KPI digest at GE Aerospace."
          inputParameters:
            - name: week
              in: body
              type: string
              description: "Week ending."
            - name: dist
              in: body
              type: string
              description: "Distribution list."
          steps:
            - name: ops
              type: call
              call: "snowflake.query"
              with:
                query: "SELECT * FROM kpis WHERE w='{{week}}'"
            - name: fin
              type: call
              call: "oracle.get-summary"
              with:
                period: "{{week}}"
            - name: refresh
              type: call
              call: "power-bi.refresh"
              with:
                dataset: "exec_kpis"
            - name: send
              type: call
              call: "email.send"
              with:
                to: "{{dist}}"
                subject: "KPIs - {{week}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://geaerospace.com.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: query
              method: POST
    - type: http
      namespace: oracle
      baseUri: "https://oracle.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_token"
      resources:
        - name: fin
          path: "/summary"
          operations:
            - name: get-summary
              method: GET
    - type: http
      namespace: power-bi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.power_bi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset}}/refreshes"
          inputParameters:
            - name: dataset
              in: path
          operations:
            - name: refresh
              method: POST
    - type: http
      namespace: email
      baseUri: "https://email.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.email_token"
      resources:
        - name: messages
          path: "/send"
          operations:
            - name: send
              method: POST

Checks K8s pod health at GE Aerospace.

naftiko: "0.5"
info:
  label: "K8s Pod Health"
  description: "Checks K8s pod health at GE Aerospace."
  tags:
    - containers
    - kubernetes
    - infrastructure
capability:
  exposes:
    - type: mcp
      namespace: k8s-pod
      port: 8080
      tools:
        - name: check-pod
          description: "Check pod at GE Aerospace."
          inputParameters:
            - name: namespace
              in: body
              type: string
              description: "Namespace."
            - name: pod
              in: body
              type: string
              description: "Pod name."
          call: "k8s.get-pod"
          with:
            namespace: "{{namespace}}"
            pod: "{{pod}}"
          outputParameters:
            - name: phase
              type: string
              mapping: "$.status.phase"
  consumes:
    - type: http
      namespace: k8s
      baseUri: "https://k8s.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.k8s_token"
      resources:
        - name: pods
          path: "/namespaces/{{namespace}}/pods/{{pod}}"
          inputParameters:
            - name: namespace
              in: path
            - name: pod
              in: path
          operations:
            - name: get-pod
              method: GET

Checks license compliance at GE Aerospace via scanning, entitlements, and procurement.

naftiko: "0.5"
info:
  label: "License Compliance Pipeline"
  description: "Checks license compliance at GE Aerospace via scanning, entitlements, and procurement."
  tags:
    - compliance
    - licensing
    - procurement
capability:
  exposes:
    - type: mcp
      namespace: license-comp
      port: 8080
      tools:
        - name: check-licenses
          description: "Check license compliance at GE Aerospace."
          inputParameters:
            - name: software
              in: body
              type: string
              description: "Software."
            - name: vendor
              in: body
              type: string
              description: "Vendor."
          steps:
            - name: scan
              type: call
              call: "assets.installations"
              with:
                sw: "{{software}}"
            - name: entitlements
              type: call
              call: "licenses.get"
              with:
                sw: "{{software}}"
            - name: flag
              type: call
              call: "compliance.flag"
              with:
                installed: "{{scan.count}}"
                entitled: "{{entitlements.count}}"
            - name: procure
              type: call
              call: "servicenow.create-request"
              with:
                type: "license"
                sw: "{{software}}"
  consumes:
    - type: http
      namespace: assets
      baseUri: "https://assets.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.asset_token"
      resources:
        - name: installations
          path: "/installations"
          operations:
            - name: installations
              method: GET
    - type: http
      namespace: licenses
      baseUri: "https://licenses.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.license_token"
      resources:
        - name: ent
          path: "/entitlements"
          operations:
            - name: get
              method: GET
    - type: http
      namespace: compliance
      baseUri: "https://compliance.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.compliance_token"
      resources:
        - name: overages
          path: "/flag"
          operations:
            - name: flag
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://geaerospace.com.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: requests
          path: "/table/sc_request"
          operations:
            - name: create-request
              method: POST

Retrieves LinkedIn company page analytics for GE Aerospace including follower growth, post engagement, and visitor demographics.

naftiko: "0.5"
info:
  label: "LinkedIn Company Page Analytics"
  description: "Retrieves LinkedIn company page analytics for GE Aerospace including follower growth, post engagement, and visitor demographics."
  tags:
    - marketing
    - social-media
    - linkedin
capability:
  exposes:
    - type: mcp
      namespace: social-analytics
      port: 8080
      tools:
        - name: get-page-analytics
          description: "Retrieve LinkedIn company page analytics by organization URN."
          inputParameters:
            - name: organization_urn
              in: body
              type: string
              description: "The LinkedIn organization URN."
          call: "linkedin.get-analytics"
          with:
            org: "{{organization_urn}}"
  consumes:
    - type: http
      namespace: linkedin
      baseUri: "https://api.linkedin.com/v2"
      authentication:
        type: bearer
        token: "$secrets.linkedin_token"
      resources:
        - name: analytics
          path: "/organizationalEntityShareStatistics?q=organizationalEntity&organizationalEntity={{org}}"
          inputParameters:
            - name: org
              in: query
          operations:
            - name: get-analytics
              method: GET

Checks the status of a MATLAB simulation job running on GE Aerospace compute infrastructure, returning completion percentage, elapsed time, and output artifacts.

naftiko: "0.5"
info:
  label: "MATLAB Simulation Job Status"
  description: "Checks the status of a MATLAB simulation job running on GE Aerospace compute infrastructure, returning completion percentage, elapsed time, and output artifacts."
  tags:
    - engineering
    - simulation
    - matlab
capability:
  exposes:
    - type: mcp
      namespace: simulation
      port: 8080
      tools:
        - name: get-simulation-status
          description: "Look up a MATLAB simulation job by job ID."
          inputParameters:
            - name: job_id
              in: body
              type: string
              description: "The MATLAB simulation job ID."
          call: "matlab.get-job"
          with:
            job_id: "{{job_id}}"
  consumes:
    - type: http
      namespace: matlab
      baseUri: "https://ge-aerospace-matlab.internal/api/v1"
      authentication:
        type: bearer
        token: "$secrets.matlab_token"
      resources:
        - name: jobs
          path: "/jobs/{{job_id}}"
          inputParameters:
            - name: job_id
              in: path
          operations:
            - name: get-job
              method: GET

Sends a formatted notification to a Microsoft Teams channel for operational alerts, shift changes, or program updates across GE Aerospace teams.

naftiko: "0.5"
info:
  label: "Microsoft Teams Channel Notification"
  description: "Sends a formatted notification to a Microsoft Teams channel for operational alerts, shift changes, or program updates across GE Aerospace teams."
  tags:
    - communications
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: notifications
      port: 8080
      tools:
        - name: send-channel-alert
          description: "Post a notification message to a Microsoft Teams channel."
          inputParameters:
            - name: team_id
              in: body
              type: string
              description: "The Microsoft Teams team ID."
            - name: channel_id
              in: body
              type: string
              description: "The Microsoft Teams channel ID."
            - name: message
              in: body
              type: string
              description: "The notification message text."
          call: "msteams.post-channel-message"
          with:
            team_id: "{{team_id}}"
            channel_id: "{{channel_id}}"
            text: "{{message}}"
  consumes:
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Generates monthly security reports at GE Aerospace from Splunk and Qualys.

naftiko: "0.5"
info:
  label: "Monthly Security Report Pipeline"
  description: "Generates monthly security reports at GE Aerospace from Splunk and Qualys."
  tags:
    - security
    - reporting
    - splunk
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: sec-report
      port: 8080
      tools:
        - name: gen-sec-report
          description: "Generate security report at GE Aerospace."
          inputParameters:
            - name: month
              in: body
              type: string
              description: "Month."
          steps:
            - name: splunk
              type: call
              call: "splunk.search"
              with:
                query: "index=security earliest=-30d"
            - name: scans
              type: call
              call: "qualys.results"
              with:
                month: "{{month}}"
            - name: compile
              type: call
              call: "analytics.compile-security"
              with:
                events: "{{splunk.count}}"
                vulns: "{{scans.critical}}"
            - name: send
              type: call
              call: "email.send"
              with:
                to: "ciso@co.com"
                subject: "Security - {{month}}"
  consumes:
    - type: http
      namespace: splunk
      baseUri: "https://splunk.geaerospace.com:8089/services"
      authentication:
        type: bearer
        token: "$secrets.splunk_token"
      resources:
        - name: search
          path: "/search/jobs"
          operations:
            - name: search
              method: POST
    - type: http
      namespace: qualys
      baseUri: "https://qualysapi.qualys.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.qualys_token"
      resources:
        - name: results
          path: "/fo/scan/results"
          operations:
            - name: results
              method: GET
    - type: http
      namespace: analytics
      baseUri: "https://analytics.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.analytics_token"
      resources:
        - name: security
          path: "/compile"
          operations:
            - name: compile-security
              method: POST
    - type: http
      namespace: email
      baseUri: "https://email.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.email_token"
      resources:
        - name: messages
          path: "/send"
          operations:
            - name: send
              method: POST

When a spare part stock drops below reorder point in SAP, creates a purchase requisition, opens a ServiceNow logistics ticket, and alerts the supply chain team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "MRO Parts Reorder Pipeline"
  description: "When a spare part stock drops below reorder point in SAP, creates a purchase requisition, opens a ServiceNow logistics ticket, and alerts the supply chain team via Microsoft Teams."
  tags:
    - mro
    - supply-chain
    - sap
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: parts-reorder
      port: 8080
      tools:
        - name: reorder-spare-part
          description: "Given a material number and plant, check stock level, create a PR if below threshold, open a logistics ticket, and notify the supply chain team."
          inputParameters:
            - name: material_number
              in: body
              type: string
              description: "The SAP material number."
            - name: plant_code
              in: body
              type: string
              description: "The MRO plant code."
            - name: quantity
              in: body
              type: number
              description: "Quantity to reorder."
          steps:
            - name: check-stock
              type: call
              call: "sap.get-material-stock"
              with:
                material_number: "{{material_number}}"
                plant: "{{plant_code}}"
            - name: create-pr
              type: call
              call: "sap.create-purchase-requisition"
              with:
                material: "{{material_number}}"
                plant: "{{plant_code}}"
                quantity: "{{quantity}}"
            - name: open-logistics-ticket
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Parts reorder: {{material_number}} at {{plant_code}}"
                assigned_group: "Supply_Chain_Logistics"
                description: "Reorder {{quantity}} units of material {{material_number}} for plant {{plant_code}}. Current stock: {{check-stock.on_hand}}. PR: {{create-pr.requisition_number}}."
            - name: notify-supply-chain
              type: call
              call: "msteams.post-channel-message"
              with:
                team_id: "supply-chain"
                channel_id: "parts-reorder"
                text: "Parts reorder initiated: {{material_number}} x{{quantity}} at {{plant_code}}. Stock was {{check-stock.on_hand}}. PR: {{create-pr.requisition_number}}. ServiceNow: {{open-logistics-ticket.number}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://ge-aerospace-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: material-stock
          path: "/A_MatlStkInAcctMod(Material='{{material_number}}',Plant='{{plant}}')"
          inputParameters:
            - name: material_number
              in: path
            - name: plant
              in: path
          operations:
            - name: get-material-stock
              method: GET
        - name: purchase-requisitions
          path: "/A_PurchaseRequisition"
          operations:
            - name: create-purchase-requisition
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://geaerospace.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/sc_task"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Aggregates MRO shop visit turnaround data from SAP, correlates with customer SLA targets from Salesforce, generates a performance report in Confluence, refreshes the Power BI dashboard, and notifies operations leadership.

naftiko: "0.5"
info:
  label: "MRO Turnaround Time Reporting Pipeline"
  description: "Aggregates MRO shop visit turnaround data from SAP, correlates with customer SLA targets from Salesforce, generates a performance report in Confluence, refreshes the Power BI dashboard, and notifies operations leadership."
  tags:
    - mro
    - reporting
    - sap
    - salesforce
    - confluence
    - power-bi
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: tat-reporting
      port: 8080
      tools:
        - name: generate-tat-report
          description: "Given a date range and shop code, aggregate TAT metrics, check SLA compliance, generate report, refresh dashboard, and notify leadership."
          inputParameters:
            - name: shop_code
              in: body
              type: string
              description: "The MRO shop facility code."
            - name: start_date
              in: body
              type: string
              description: "Report start date in YYYY-MM-DD format."
            - name: end_date
              in: body
              type: string
              description: "Report end date in YYYY-MM-DD format."
          steps:
            - name: get-tat-data
              type: call
              call: "sap.get-shop-tat"
              with:
                plant: "{{shop_code}}"
                date_from: "{{start_date}}"
                date_to: "{{end_date}}"
            - name: get-sla-targets
              type: call
              call: "salesforce.query-sla"
              with:
                shop_code: "{{shop_code}}"
            - name: create-report
              type: call
              call: "confluence.create-page"
              with:
                space_key: "MROOPS"
                title: "TAT Report: {{shop_code}} ({{start_date}} to {{end_date}})"
                body: "Shop: {{shop_code}}. Avg TAT: {{get-tat-data.avg_tat_days}} days. SLA target: {{get-sla-targets.target_days}} days. Compliance: {{get-tat-data.sla_compliance_pct}}%. Engines completed: {{get-tat-data.engines_completed}}."
            - name: refresh-dashboard
              type: call
              call: "powerbi.refresh-dataset"
              with:
                dataset_id: "mro-tat-dashboard"
            - name: notify-leadership
              type: call
              call: "msteams.post-channel-message"
              with:
                team_id: "operations-leadership"
                channel_id: "mro-performance"
                text: "TAT Report for {{shop_code}} ({{start_date}} to {{end_date}}): Avg TAT: {{get-tat-data.avg_tat_days}}d. SLA compliance: {{get-tat-data.sla_compliance_pct}}%. Engines: {{get-tat-data.engines_completed}}. Report: {{create-report.url}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://ge-aerospace-s4.sap.com/sap/opu/odata/sap/ZPM_TAT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: tat-data
          path: "/TATDataSet"
          operations:
            - name: get-shop-tat
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://geaerospace.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: sla
          path: "/query"
          operations:
            - name: query-sla
              method: GET
    - type: http
      namespace: confluence
      baseUri: "https://geaerospace.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: refresh-dataset
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Onboards employees at GE Aerospace with Okta, ServiceNow, Slack, and calendar.

naftiko: "0.5"
info:
  label: "New Employee IT Onboarding Pipeline"
  description: "Onboards employees at GE Aerospace with Okta, ServiceNow, Slack, and calendar."
  tags:
    - hr
    - onboarding
    - okta
    - servicenow
    - slack
capability:
  exposes:
    - type: mcp
      namespace: it-onboarding
      port: 8080
      tools:
        - name: onboard-employee
          description: "Onboard employees at GE Aerospace."
          inputParameters:
            - name: name
              in: body
              type: string
              description: "Name."
            - name: dept
              in: body
              type: string
              description: "Department."
            - name: start
              in: body
              type: string
              description: "Start date."
          steps:
            - name: okta
              type: call
              call: "okta.create-user"
              with:
                name: "{{name}}"
                department: "{{dept}}"
            - name: equip
              type: call
              call: "servicenow.create-request"
              with:
                type: "new_hire"
                for: "{{name}}"
            - name: slack
              type: call
              call: "slack.invite"
              with:
                email: "{{okta.email}}"
            - name: orient
              type: call
              call: "calendar.create-event"
              with:
                title: "Orientation - {{name}}"
                date: "{{start}}"
  consumes:
    - type: http
      namespace: okta
      baseUri: "https://geaerospace.com.okta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.okta_api_token"
      resources:
        - name: users
          path: "/users"
          operations:
            - name: create-user
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://geaerospace.com.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: requests
          path: "/table/sc_request"
          operations:
            - name: create-request
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: users
          path: "/users.admin.invite"
          operations:
            - name: invite
              method: POST
    - type: http
      namespace: calendar
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.microsoft_graph_token"
      resources:
        - name: events
          path: "/users/hr/events"
          operations:
            - name: create-event
              method: POST

Checks New Relic APM at GE Aerospace.

naftiko: "0.5"
info:
  label: "New Relic APM Check"
  description: "Checks New Relic APM at GE Aerospace."
  tags:
    - monitoring
    - new-relic
    - apm
capability:
  exposes:
    - type: mcp
      namespace: nr-apm
      port: 8080
      tools:
        - name: check-apm
          description: "Check APM at GE Aerospace."
          inputParameters:
            - name: app_id
              in: body
              type: string
              description: "App ID."
          call: "newrelic.get-app"
          with:
            app_id: "{{app_id}}"
          outputParameters:
            - name: health
              type: string
              mapping: "$.application.health_status"
  consumes:
    - type: http
      namespace: newrelic
      baseUri: "https://api.newrelic.com/v2"
      authentication:
        type: bearer
        token: "$secrets.new_relic_api_key"
      resources:
        - name: applications
          path: "/applications/{{app_id}}.json"
          inputParameters:
            - name: app_id
              in: path
          operations:
            - name: get-app
              method: GET

Queries New Relic for application performance metrics including response time, error rate, and throughput for GE Aerospace digital services.

naftiko: "0.5"
info:
  label: "New Relic Application Performance Check"
  description: "Queries New Relic for application performance metrics including response time, error rate, and throughput for GE Aerospace digital services."
  tags:
    - infrastructure
    - apm
    - new-relic
capability:
  exposes:
    - type: mcp
      namespace: apm
      port: 8080
      tools:
        - name: get-app-performance
          description: "Retrieve application performance metrics from New Relic by application ID."
          inputParameters:
            - name: app_id
              in: body
              type: string
              description: "The New Relic application ID."
          call: "newrelic.get-application"
          with:
            app_id: "{{app_id}}"
  consumes:
    - type: http
      namespace: newrelic
      baseUri: "https://api.newrelic.com/v2"
      authentication:
        type: apiKey
        name: "Api-Key"
        in: header
        value: "$secrets.newrelic_api_key"
      resources:
        - name: applications
          path: "/applications/{{app_id}}.json"
          inputParameters:
            - name: app_id
              in: path
          operations:
            - name: get-application
              method: GET

Checks Okta user at GE Aerospace.

naftiko: "0.5"
info:
  label: "Okta User Check"
  description: "Checks Okta user at GE Aerospace."
  tags:
    - identity
    - okta
    - access-management
capability:
  exposes:
    - type: mcp
      namespace: okta-user
      port: 8080
      tools:
        - name: check-user
          description: "Check user at GE Aerospace."
          inputParameters:
            - name: email
              in: body
              type: string
              description: "Email."
          call: "okta.get-user"
          with:
            email: "{{email}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: okta
      baseUri: "https://geaerospace.com.okta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.okta_api_token"
      resources:
        - name: users
          path: "/users/{{email}}"
          inputParameters:
            - name: email
              in: path
          operations:
            - name: get-user
              method: GET

Checks the status of an Oracle Integration Cloud flow execution, returning run state, start time, duration, and error details.

naftiko: "0.5"
info:
  label: "Oracle Integration Cloud Flow Status"
  description: "Checks the status of an Oracle Integration Cloud flow execution, returning run state, start time, duration, and error details."
  tags:
    - integration
    - oracle-integration
capability:
  exposes:
    - type: mcp
      namespace: integration
      port: 8080
      tools:
        - name: get-flow-status
          description: "Look up an Oracle Integration flow run by ID."
          inputParameters:
            - name: flow_id
              in: body
              type: string
              description: "The Oracle Integration flow ID."
            - name: run_id
              in: body
              type: string
              description: "The flow run ID."
          call: "oic.get-run"
          with:
            flow_id: "{{flow_id}}"
            run_id: "{{run_id}}"
  consumes:
    - type: http
      namespace: oic
      baseUri: "https://ge-aerospace.integration.ocp.oraclecloud.com/ic/api/integration/v1"
      authentication:
        type: bearer
        token: "$secrets.oic_token"
      resources:
        - name: runs
          path: "/integrations/{{flow_id}}/runs/{{run_id}}"
          inputParameters:
            - name: flow_id
              in: path
            - name: run_id
              in: path
          operations:
            - name: get-run
              method: GET

Checks on-call at GE Aerospace.

naftiko: "0.5"
info:
  label: "PagerDuty On-Call Check"
  description: "Checks on-call at GE Aerospace."
  tags:
    - incident-management
    - pagerduty
    - on-call
capability:
  exposes:
    - type: mcp
      namespace: pd-oncall
      port: 8080
      tools:
        - name: get-oncall
          description: "Check on-call at GE Aerospace."
          inputParameters:
            - name: schedule_id
              in: body
              type: string
              description: "Schedule ID."
          call: "pagerduty.get-oncall"
          with:
            schedule_id: "{{schedule_id}}"
          outputParameters:
            - name: user
              type: string
              mapping: "$.oncalls[0].user.summary"
  consumes:
    - type: http
      namespace: pagerduty
      baseUri: "https://api.pagerduty.com"
      authentication:
        type: bearer
        token: "$secrets.pagerduty_token"
      resources:
        - name: oncalls
          path: "/oncalls"
          operations:
            - name: get-oncall
              method: GET

Creates postmortems at GE Aerospace.

naftiko: "0.5"
info:
  label: "Incident Postmortem Pipeline"
  description: "Creates postmortems at GE Aerospace."
  tags:
    - incident-management
    - postmortem
    - pagerduty
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: postmortem
      port: 8080
      tools:
        - name: create-postmortem
          description: "Create postmortem at GE Aerospace."
          inputParameters:
            - name: incident_id
              in: body
              type: string
              description: "Incident ID."
          steps:
            - name: timeline
              type: call
              call: "pagerduty.get-log"
              with:
                id: "{{incident_id}}"
            - name: metrics
              type: call
              call: "datadog.get-metrics"
              with:
                incident: "{{incident_id}}"
            - name: doc
              type: call
              call: "confluence.create-page"
              with:
                title: "Postmortem: {{timeline.title}}"
                body: "Impact: {{metrics.impact}}"
            - name: review
              type: call
              call: "calendar.create-event"
              with:
                title: "Review: {{timeline.title}}"
  consumes:
    - type: http
      namespace: pagerduty
      baseUri: "https://api.pagerduty.com"
      authentication:
        type: bearer
        token: "$secrets.pagerduty_token"
      resources:
        - name: incidents
          path: "/incidents/{{id}}/log_entries"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-log
              method: GET
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: incidents
          path: "/incidents"
          operations:
            - name: get-metrics
              method: GET
    - type: http
      namespace: confluence
      baseUri: "https://geaerospace.com.atlassian.net/wiki/rest/api"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST
    - type: http
      namespace: calendar
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.microsoft_graph_token"
      resources:
        - name: events
          path: "/users/sre/events"
          operations:
            - name: create-event
              method: POST

Triggers a Power BI dataset refresh for fleet analytics dashboards used by GE Aerospace operations and returns the refresh status.

naftiko: "0.5"
info:
  label: "Power BI Dashboard Refresh"
  description: "Triggers a Power BI dataset refresh for fleet analytics dashboards used by GE Aerospace operations and returns the refresh status."
  tags:
    - analytics
    - reporting
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: bi-reporting
      port: 8080
      tools:
        - name: refresh-dashboard
          description: "Trigger a Power BI dataset refresh by dataset ID. Returns refresh request status."
          inputParameters:
            - name: dataset_id
              in: body
              type: string
              description: "The Power BI dataset ID."
          call: "powerbi.refresh-dataset"
          with:
            dataset_id: "{{dataset_id}}"
  consumes:
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: refresh-dataset
              method: POST

Checks Power BI refresh at GE Aerospace.

naftiko: "0.5"
info:
  label: "Power BI Refresh Check"
  description: "Checks Power BI refresh at GE Aerospace."
  tags:
    - analytics
    - power-bi
    - dashboards
capability:
  exposes:
    - type: mcp
      namespace: pbi-refresh
      port: 8080
      tools:
        - name: check-refresh
          description: "Check refresh at GE Aerospace."
          inputParameters:
            - name: dataset_id
              in: body
              type: string
              description: "Dataset ID."
          call: "power-bi.get-refresh"
          with:
            dataset_id: "{{dataset_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.value[0].status"
  consumes:
    - type: http
      namespace: power-bi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.power_bi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: get-refresh
              method: GET

Processes predictive maintenance alerts from Azure Machine Learning, creates a preventive work order in SAP, notifies the airline customer via Salesforce case, and alerts the MRO scheduling team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Predictive Maintenance Alert Pipeline"
  description: "Processes predictive maintenance alerts from Azure Machine Learning, creates a preventive work order in SAP, notifies the airline customer via Salesforce case, and alerts the MRO scheduling team in Microsoft Teams."
  tags:
    - predictive-maintenance
    - machine-learning
    - azure-machine-learning
    - sap
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: predictive-maint
      port: 8080
      tools:
        - name: process-prediction-alert
          description: "Given an engine serial number and prediction details, create preventive work order, customer case, and notify scheduling."
          inputParameters:
            - name: serial_number
              in: body
              type: string
              description: "The engine serial number."
            - name: failure_mode
              in: body
              type: string
              description: "Predicted failure mode."
            - name: confidence
              in: body
              type: number
              description: "Prediction confidence score (0-1)."
            - name: recommended_action
              in: body
              type: string
              description: "Recommended maintenance action."
          steps:
            - name: create-preventive-wo
              type: call
              call: "sap.create-work-order"
              with:
                equipment: "{{serial_number}}"
                order_type: "preventive"
                description: "Predictive alert: {{failure_mode}} (confidence: {{confidence}}). Recommended: {{recommended_action}}."
            - name: create-customer-case
              type: call
              call: "salesforce.create-case"
              with:
                subject: "Predictive maintenance: Engine {{serial_number}} — {{failure_mode}}"
                description: "Our predictive analytics identified potential {{failure_mode}} on engine {{serial_number}}. Confidence: {{confidence}}. Recommended action: {{recommended_action}}. Work order: {{create-preventive-wo.order_number}}."
                type: "Maintenance Advisory"
            - name: notify-scheduling
              type: call
              call: "msteams.post-channel-message"
              with:
                team_id: "mro-scheduling"
                channel_id: "predictive-alerts"
                text: "Predictive alert: Engine {{serial_number}}, {{failure_mode}} ({{confidence}} confidence). WO: {{create-preventive-wo.order_number}}. Customer case: {{create-customer-case.CaseNumber}}. Action: {{recommended_action}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://ge-aerospace-s4.sap.com/sap/opu/odata/sap/ZPM_WORKORDER_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: work-orders
          path: "/WorkOrderSet"
          operations:
            - name: create-work-order
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://geaerospace.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case"
          operations:
            - name: create-case
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

When a SAP purchase requisition exceeds the approval threshold, retrieves the requisition details, resolves the approver from Workday, and notifies both parties via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Procurement Requisition Approval Pipeline"
  description: "When a SAP purchase requisition exceeds the approval threshold, retrieves the requisition details, resolves the approver from Workday, and notifies both parties via Microsoft Teams."
  tags:
    - procurement
    - sap
    - workday
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: route-requisition-approval
          description: "Given a requisition number and requestor ID, check the amount, resolve the approver, and send notifications."
          inputParameters:
            - name: requisition_number
              in: body
              type: string
              description: "The SAP purchase requisition number."
            - name: requestor_id
              in: body
              type: string
              description: "The Workday worker ID of the requestor."
          steps:
            - name: get-requisition
              type: call
              call: "sap.get-purchase-requisition"
              with:
                requisition_number: "{{requisition_number}}"
            - name: get-requestor
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{requestor_id}}"
            - name: get-approver
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{get-requestor.manager_id}}"
            - name: notify-approver
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-approver.work_email}}"
                text: "Approval Required: PR {{requisition_number}} from {{get-requestor.full_name}} for {{get-requisition.total_value}} {{get-requisition.currency}}. Vendor: {{get-requisition.vendor_name}}."
            - name: notify-requestor
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-requestor.work_email}}"
                text: "Your requisition {{requisition_number}} ({{get-requisition.total_value}} {{get-requisition.currency}}) has been routed to {{get-approver.full_name}} for approval."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://ge-aerospace-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: purchase-requisitions
          path: "/A_PurchaseRequisition('{{requisition_number}}')"
          inputParameters:
            - name: requisition_number
              in: path
          operations:
            - name: get-purchase-requisition
              method: GET
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Generates compliance reports at GE Aerospace from Snowflake, Power BI, and email.

naftiko: "0.5"
info:
  label: "Quarterly Compliance Report Pipeline"
  description: "Generates compliance reports at GE Aerospace from Snowflake, Power BI, and email."
  tags:
    - compliance
    - reporting
    - snowflake
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: compliance-rpt
      port: 8080
      tools:
        - name: gen-report
          description: "Generate compliance reports at GE Aerospace."
          inputParameters:
            - name: quarter
              in: body
              type: string
              description: "Quarter."
            - name: type
              in: body
              type: string
              description: "Type."
          steps:
            - name: data
              type: call
              call: "snowflake.query"
              with:
                query: "SELECT * FROM compliance WHERE q='{{quarter}}'"
            - name: metrics
              type: call
              call: "analytics.compute"
              with:
                data: "{{data.results}}"
            - name: refresh
              type: call
              call: "power-bi.refresh"
              with:
                dataset: "compliance"
            - name: send
              type: call
              call: "email.send"
              with:
                to: "compliance@co.com"
                subject: "{{type}} - {{quarter}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://geaerospace.com.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: query
              method: POST
    - type: http
      namespace: analytics
      baseUri: "https://analytics.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.analytics_token"
      resources:
        - name: metrics
          path: "/compute"
          operations:
            - name: compute
              method: POST
    - type: http
      namespace: power-bi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.power_bi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset}}/refreshes"
          inputParameters:
            - name: dataset
              in: path
          operations:
            - name: refresh
              method: POST
    - type: http
      namespace: email
      baseUri: "https://email.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.email_token"
      resources:
        - name: messages
          path: "/send"
          operations:
            - name: send
              method: POST

Checks Redis at GE Aerospace.

naftiko: "0.5"
info:
  label: "Redis Cache Status"
  description: "Checks Redis at GE Aerospace."
  tags:
    - caching
    - redis
    - infrastructure
capability:
  exposes:
    - type: mcp
      namespace: redis
      port: 8080
      tools:
        - name: check-cache
          description: "Check Redis at GE Aerospace."
          inputParameters:
            - name: instance
              in: body
              type: string
              description: "Instance ID."
          call: "redis.get-info"
          with:
            instance: "{{instance}}"
          outputParameters:
            - name: memory
              type: string
              mapping: "$.used_memory_human"
  consumes:
    - type: http
      namespace: redis
      baseUri: "https://redis.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.redis_token"
      resources:
        - name: instances
          path: "/instances/{{instance}}/info"
          inputParameters:
            - name: instance
              in: path
          operations:
            - name: get-info
              method: GET

Checks release readiness at GE Aerospace.

naftiko: "0.5"
info:
  label: "Release Readiness Pipeline"
  description: "Checks release readiness at GE Aerospace."
  tags:
    - release-management
    - devops
    - quality
capability:
  exposes:
    - type: mcp
      namespace: release-ready
      port: 8080
      tools:
        - name: check-release
          description: "Check release at GE Aerospace."
          inputParameters:
            - name: release_id
              in: body
              type: string
              description: "Release ID."
            - name: project
              in: body
              type: string
              description: "Project."
          steps:
            - name: tests
              type: call
              call: "azdo.get-tests"
              with:
                project: "{{project}}"
                release: "{{release_id}}"
            - name: quality
              type: call
              call: "sonarqube.get-gate"
              with:
                project: "{{project}}"
            - name: security
              type: call
              call: "security.get-scan"
              with:
                project: "{{project}}"
            - name: doc
              type: call
              call: "confluence.create-page"
              with:
                title: "Release - {{release_id}}"
                body: "Tests: {{tests.pass_rate}}% Quality: {{quality.status}}"
  consumes:
    - type: http
      namespace: azdo
      baseUri: "https://dev.azure.com/geaerospace.com"
      authentication:
        type: bearer
        token: "$secrets.azdo_token"
      resources:
        - name: tests
          path: "/{{project}}/_apis/test/runs"
          inputParameters:
            - name: project
              in: path
          operations:
            - name: get-tests
              method: GET
    - type: http
      namespace: sonarqube
      baseUri: "https://sonarqube.geaerospace.com/api"
      authentication:
        type: bearer
        token: "$secrets.sonarqube_token"
      resources:
        - name: quality
          path: "/qualitygates/project_status"
          operations:
            - name: get-gate
              method: GET
    - type: http
      namespace: security
      baseUri: "https://security.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.security_token"
      resources:
        - name: scans
          path: "/results"
          operations:
            - name: get-scan
              method: GET
    - type: http
      namespace: confluence
      baseUri: "https://geaerospace.com.atlassian.net/wiki/rest/api"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST

Retrieves an airline customer account from Salesforce by account ID, returning fleet size, active engine contracts, and account manager details.

naftiko: "0.5"
info:
  label: "Salesforce Customer Account Lookup"
  description: "Retrieves an airline customer account from Salesforce by account ID, returning fleet size, active engine contracts, and account manager details."
  tags:
    - sales
    - crm
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: crm
      port: 8080
      tools:
        - name: get-customer-account
          description: "Look up an airline customer account in Salesforce. Returns fleet details, active contracts, and account owner."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "The Salesforce account ID."
          call: "salesforce.get-account"
          with:
            account_id: "{{account_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://geaerospace.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account/{{account_id}}"
          inputParameters:
            - name: account_id
              in: path
          operations:
            - name: get-account
              method: GET

Queries Salesforce for open opportunities in a given stage, returning deal count, total value, expected close dates, and account names for sales reviews.

naftiko: "0.5"
info:
  label: "Salesforce Opportunity Pipeline Report"
  description: "Queries Salesforce for open opportunities in a given stage, returning deal count, total value, expected close dates, and account names for sales reviews."
  tags:
    - sales
    - pipeline
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: sales-pipeline
      port: 8080
      tools:
        - name: get-pipeline-by-stage
          description: "Query Salesforce opportunities by stage. Returns deal count, total value, and top opportunities."
          inputParameters:
            - name: stage
              in: body
              type: string
              description: "The opportunity stage (e.g. Negotiation, Proposal)."
          call: "salesforce.query-opportunities"
          with:
            query: "SELECT Id,Name,Amount,CloseDate,Account.Name FROM Opportunity WHERE StageName='{{stage}}' AND IsClosed=false"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://geaerospace.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: query
          path: "/query"
          operations:
            - name: query-opportunities
              method: GET

Retrieves a submitted travel expense report from SAP Concur by report ID, returning total amount, expense entries, approval status, and submitter details.

naftiko: "0.5"
info:
  label: "SAP Concur Travel Expense Lookup"
  description: "Retrieves a submitted travel expense report from SAP Concur by report ID, returning total amount, expense entries, approval status, and submitter details."
  tags:
    - finance
    - travel
    - sap-concur
capability:
  exposes:
    - type: mcp
      namespace: travel-expense
      port: 8080
      tools:
        - name: get-expense-report
          description: "Look up a SAP Concur expense report by ID. Returns total, status, entries, and submitter."
          inputParameters:
            - name: report_id
              in: body
              type: string
              description: "The SAP Concur expense report ID."
          call: "concur.get-report"
          with:
            report_id: "{{report_id}}"
  consumes:
    - type: http
      namespace: concur
      baseUri: "https://us2.api.concursolutions.com/api/v3.0"
      authentication:
        type: bearer
        token: "$secrets.concur_token"
      resources:
        - name: reports
          path: "/expense/reports/{{report_id}}"
          inputParameters:
            - name: report_id
              in: path
          operations:
            - name: get-report
              method: GET

Checks SAP PO at GE Aerospace.

naftiko: "0.5"
info:
  label: "SAP PO Check"
  description: "Checks SAP PO at GE Aerospace."
  tags:
    - procurement
    - sap
    - purchase-orders
capability:
  exposes:
    - type: mcp
      namespace: sap-po
      port: 8080
      tools:
        - name: get-po
          description: "Check PO at GE Aerospace."
          inputParameters:
            - name: po_number
              in: body
              type: string
              description: "PO number."
          call: "sap.get-po"
          with:
            po_number: "{{po_number}}"
          outputParameters:
            - name: vendor
              type: string
              mapping: "$.order.vendor"
            - name: status
              type: string
              mapping: "$.order.status"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://sap.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: purchase-orders
          path: "/purchase-orders/{{po_number}}"
          inputParameters:
            - name: po_number
              in: path
          operations:
            - name: get-po
              method: GET

Remediates vulnerabilities at GE Aerospace via scanning, Jira, and Slack.

naftiko: "0.5"
info:
  label: "Security Vulnerability Remediation Pipeline"
  description: "Remediates vulnerabilities at GE Aerospace via scanning, Jira, and Slack."
  tags:
    - security
    - vulnerability-management
    - jira
capability:
  exposes:
    - type: mcp
      namespace: vuln-fix
      port: 8080
      tools:
        - name: remediate
          description: "Fix vulnerabilities at GE Aerospace."
          inputParameters:
            - name: target
              in: body
              type: string
              description: "Target."
            - name: policy
              in: body
              type: string
              description: "Policy."
          steps:
            - name: scan
              type: call
              call: "qualys.scan"
              with:
                target: "{{target}}"
                policy: "{{policy}}"
            - name: prioritize
              type: call
              call: "security.prioritize"
              with:
                scan: "{{scan.id}}"
            - name: ticket
              type: call
              call: "jira.create-issue"
              with:
                project: "SEC"
                summary: "Vulns: {{prioritize.critical}} critical"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                channel: "#security"
                text: "Scan: {{prioritize.critical}} critical"
  consumes:
    - type: http
      namespace: qualys
      baseUri: "https://qualysapi.qualys.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.qualys_token"
      resources:
        - name: scans
          path: "/fo/scan"
          operations:
            - name: scan
              method: POST
    - type: http
      namespace: security
      baseUri: "https://security.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.security_token"
      resources:
        - name: vulns
          path: "/prioritize"
          operations:
            - name: prioritize
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://geaerospace.com.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Checks IT incident in ServiceNow for GE Aerospace.

naftiko: "0.5"
info:
  label: "ServiceNow Incident Detail Check"
  description: "Checks IT incident in ServiceNow for GE Aerospace."
  tags:
    - it-service
    - servicenow
    - incident-management
capability:
  exposes:
    - type: mcp
      namespace: snow-incident
      port: 8080
      tools:
        - name: check-incident
          description: "Check incident at GE Aerospace."
          inputParameters:
            - name: incident_number
              in: body
              type: string
              description: "Incident number."
          call: "servicenow.get-incident"
          with:
            number: "{{incident_number}}"
          outputParameters:
            - name: state
              type: string
              mapping: "$.result.state"
            - name: priority
              type: string
              mapping: "$.result.priority"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://geaerospace.com.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: get-incident
              method: GET

Looks up a ServiceNow IT incident by number, returning state, priority, assigned group, and resolution notes for IT service management.

naftiko: "0.5"
info:
  label: "ServiceNow Incident Lookup"
  description: "Looks up a ServiceNow IT incident by number, returning state, priority, assigned group, and resolution notes for IT service management."
  tags:
    - it-operations
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: it-service
      port: 8080
      tools:
        - name: get-incident
          description: "Retrieve a ServiceNow incident by number. Returns state, priority, assigned group, and description."
          inputParameters:
            - name: incident_number
              in: body
              type: string
              description: "The ServiceNow incident number."
          call: "servicenow.get-incident"
          with:
            incident_number: "{{incident_number}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://geaerospace.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident?sysparm_query=number={{incident_number}}"
          inputParameters:
            - name: incident_number
              in: query
          operations:
            - name: get-incident
              method: GET

Retrieves engineering specification documents from SharePoint by part number or specification ID, returning document metadata and download links.

naftiko: "0.5"
info:
  label: "SharePoint Engineering Specifications"
  description: "Retrieves engineering specification documents from SharePoint by part number or specification ID, returning document metadata and download links."
  tags:
    - engineering
    - documentation
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: eng-specs
      port: 8080
      tools:
        - name: get-specification
          description: "Search SharePoint for engineering specs by part number. Returns matching documents with metadata and URLs."
          inputParameters:
            - name: part_number
              in: body
              type: string
              description: "The part number or specification ID to search for."
          call: "sharepoint.search-specs"
          with:
            query: "{{part_number}}"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: spec-search
          path: "/eng-specs-hub/drive/root/search(q='{{query}}')"
          inputParameters:
            - name: query
              in: path
          operations:
            - name: search-specs
              method: GET

Retrieves SharePoint metadata at GE Aerospace.

naftiko: "0.5"
info:
  label: "SharePoint File Metadata"
  description: "Retrieves SharePoint metadata at GE Aerospace."
  tags:
    - document-management
    - sharepoint
    - collaboration
capability:
  exposes:
    - type: mcp
      namespace: sp-docs
      port: 8080
      tools:
        - name: get-file
          description: "Look up file at GE Aerospace."
          inputParameters:
            - name: site_id
              in: body
              type: string
              description: "Site ID."
            - name: file_path
              in: body
              type: string
              description: "Path."
          call: "sharepoint.get-file"
          with:
            site_id: "{{site_id}}"
            path: "{{file_path}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.name"
            - name: size
              type: number
              mapping: "$.size"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.microsoft_graph_token"
      resources:
        - name: files
          path: "/sites/{{site_id}}/drive/root:/{{path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: path
              in: path
          operations:
            - name: get-file
              method: GET

Monitors SLAs at GE Aerospace via Datadog and Slack.

naftiko: "0.5"
info:
  label: "SLA Monitoring Pipeline"
  description: "Monitors SLAs at GE Aerospace via Datadog and Slack."
  tags:
    - operations
    - sla
    - datadog
    - slack
capability:
  exposes:
    - type: mcp
      namespace: sla-monitor
      port: 8080
      tools:
        - name: check-sla
          description: "Monitor SLAs at GE Aerospace."
          inputParameters:
            - name: service
              in: body
              type: string
              description: "Service."
            - name: target
              in: body
              type: number
              description: "SLA target %."
          steps:
            - name: metrics
              type: call
              call: "datadog.get-sla"
              with:
                service: "{{service}}"
            - name: check
              type: call
              call: "analytics.check-sla"
              with:
                uptime: "{{metrics.uptime}}"
                target: "{{target}}"
            - name: alert
              type: call
              call: "slack.post-message"
              with:
                channel: "#ops"
                text: "SLA: {{service}} at {{metrics.uptime}}% (target: {{target}}%)"
            - name: log
              type: call
              call: "servicenow.create-incident"
              with:
                desc: "SLA breach: {{service}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: metrics
          path: "/metrics"
          operations:
            - name: get-sla
              method: GET
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://geaerospace.com.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST

Queries SolarWinds for network performance metrics at GE Aerospace facilities, returning interface utilization, packet loss, and latency.

naftiko: "0.5"
info:
  label: "SolarWinds Network Performance"
  description: "Queries SolarWinds for network performance metrics at GE Aerospace facilities, returning interface utilization, packet loss, and latency."
  tags:
    - infrastructure
    - network-monitoring
    - solarwinds
capability:
  exposes:
    - type: mcp
      namespace: network-perf
      port: 8080
      tools:
        - name: get-network-performance
          description: "Retrieve network performance metrics from SolarWinds for a node."
          inputParameters:
            - name: node_id
              in: body
              type: string
              description: "The SolarWinds node ID."
          call: "solarwinds.get-node"
          with:
            node_id: "{{node_id}}"
  consumes:
    - type: http
      namespace: solarwinds
      baseUri: "https://ge-aerospace-sw.internal:17778/SolarWinds/InformationService/v3/Json"
      authentication:
        type: basic
        username: "$secrets.solarwinds_user"
        password: "$secrets.solarwinds_password"
      resources:
        - name: nodes
          path: "/Query?query=SELECT+*+FROM+Orion.Nodes+WHERE+NodeID={{node_id}}"
          inputParameters:
            - name: node_id
              in: query
          operations:
            - name: get-node
              method: GET

Queries SAP S/4HANA for spare parts availability by material number across MRO facilities, returning on-hand quantity, reserved stock, and reorder point.

naftiko: "0.5"
info:
  label: "Spare Parts Inventory Check"
  description: "Queries SAP S/4HANA for spare parts availability by material number across MRO facilities, returning on-hand quantity, reserved stock, and reorder point."
  tags:
    - mro
    - spare-parts
    - sap
capability:
  exposes:
    - type: mcp
      namespace: parts-inventory
      port: 8080
      tools:
        - name: check-parts-availability
          description: "Given a SAP material number and optional plant code, return on-hand quantity, reserved stock, and reorder point."
          inputParameters:
            - name: material_number
              in: body
              type: string
              description: "The SAP material number for the spare part."
            - name: plant_code
              in: body
              type: string
              description: "Optional MRO plant code."
          call: "sap.get-material-stock"
          with:
            material_number: "{{material_number}}"
            plant: "{{plant_code}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://ge-aerospace-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: material-stock
          path: "/A_MatlStkInAcctMod(Material='{{material_number}}',Plant='{{plant}}')"
          inputParameters:
            - name: material_number
              in: path
            - name: plant
              in: path
          operations:
            - name: get-material-stock
              method: GET

Searches Splunk at GE Aerospace.

naftiko: "0.5"
info:
  label: "Splunk Log Search"
  description: "Searches Splunk at GE Aerospace."
  tags:
    - security
    - splunk
    - logging
capability:
  exposes:
    - type: mcp
      namespace: splunk-search
      port: 8080
      tools:
        - name: search-logs
          description: "Search logs at GE Aerospace."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "SPL query."
          call: "splunk.search"
          with:
            query: "{{query}}"
          outputParameters:
            - name: count
              type: number
              mapping: "$.results.count"
  consumes:
    - type: http
      namespace: splunk
      baseUri: "https://splunk.geaerospace.com:8089/services"
      authentication:
        type: bearer
        token: "$secrets.splunk_token"
      resources:
        - name: search
          path: "/search/jobs"
          operations:
            - name: search
              method: POST

Queries Splunk for security events matching a given pattern, returning event count, source IPs, and severity distribution for the security operations team.

naftiko: "0.5"
info:
  label: "Splunk Security Event Investigation"
  description: "Queries Splunk for security events matching a given pattern, returning event count, source IPs, and severity distribution for the security operations team."
  tags:
    - security
    - monitoring
    - splunk
capability:
  exposes:
    - type: mcp
      namespace: security-ops
      port: 8080
      tools:
        - name: search-security-events
          description: "Run a Splunk search for security events. Returns event count, top sources, and severity breakdown."
          inputParameters:
            - name: search_query
              in: body
              type: string
              description: "The Splunk search query (SPL)."
            - name: time_range
              in: body
              type: string
              description: "Time range (e.g. -24h, -7d)."
          call: "splunk.search"
          with:
            search: "{{search_query}}"
            earliest_time: "{{time_range}}"
  consumes:
    - type: http
      namespace: splunk
      baseUri: "https://ge-aerospace-splunk.internal:8089/services"
      authentication:
        type: bearer
        token: "$secrets.splunk_token"
      resources:
        - name: search
          path: "/search/jobs"
          operations:
            - name: search
              method: POST

When a quality nonconformance is detected on a received part, logs the NCR in SAP, creates a Salesforce case against the supplier, opens a Jira engineering investigation, and notifies the quality team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Supplier Quality Nonconformance Pipeline"
  description: "When a quality nonconformance is detected on a received part, logs the NCR in SAP, creates a Salesforce case against the supplier, opens a Jira engineering investigation, and notifies the quality team via Microsoft Teams."
  tags:
    - quality
    - supply-chain
    - sap
    - salesforce
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: quality-ncr
      port: 8080
      tools:
        - name: log-nonconformance
          description: "Given a part number, supplier ID, and defect details, log the NCR in SAP, open a supplier case, create an engineering investigation, and notify the quality team."
          inputParameters:
            - name: part_number
              in: body
              type: string
              description: "The part material number."
            - name: supplier_id
              in: body
              type: string
              description: "The SAP supplier ID."
            - name: defect_description
              in: body
              type: string
              description: "Description of the nonconformance."
            - name: severity
              in: body
              type: string
              description: "Severity level (Critical, Major, Minor)."
          steps:
            - name: create-ncr
              type: call
              call: "sap.create-quality-notification"
              with:
                material: "{{part_number}}"
                vendor: "{{supplier_id}}"
                notification_type: "Q2"
                description: "{{defect_description}}"
            - name: create-supplier-case
              type: call
              call: "salesforce.create-case"
              with:
                subject: "Quality NCR: Part {{part_number}} — {{severity}}"
                description: "Nonconformance on part {{part_number}} from supplier {{supplier_id}}. NCR: {{create-ncr.notification_number}}. Defect: {{defect_description}}"
                type: "Supplier Quality"
                priority: "{{severity}}"
            - name: create-investigation
              type: call
              call: "jira.create-issue"
              with:
                project: "QUAL"
                summary: "NCR Investigation: Part {{part_number}} — {{defect_description}}"
                description: "SAP NCR: {{create-ncr.notification_number}}. Supplier case: {{create-supplier-case.CaseNumber}}. Severity: {{severity}}."
                issue_type: "Bug"
            - name: notify-quality
              type: call
              call: "msteams.post-channel-message"
              with:
                team_id: "quality-engineering"
                channel_id: "ncr-alerts"
                text: "NCR Alert ({{severity}}): Part {{part_number}}. SAP: {{create-ncr.notification_number}}. Supplier case: {{create-supplier-case.CaseNumber}}. Jira: {{create-investigation.key}}. {{defect_description}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://ge-aerospace-s4.sap.com/sap/opu/odata/sap/API_QUALITYNOTIFICATION_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: quality-notifications
          path: "/QualityNotification"
          operations:
            - name: create-quality-notification
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://geaerospace.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case"
          operations:
            - name: create-case
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://geaerospace.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Retrieves Teams activity at GE Aerospace.

naftiko: "0.5"
info:
  label: "Teams Channel Activity"
  description: "Retrieves Teams activity at GE Aerospace."
  tags:
    - communications
    - microsoft-teams
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: teams-activity
      port: 8080
      tools:
        - name: get-activity
          description: "Check Teams activity at GE Aerospace."
          inputParameters:
            - name: team_id
              in: body
              type: string
              description: "Team ID."
            - name: channel_id
              in: body
              type: string
              description: "Channel ID."
          call: "teams.get-messages"
          with:
            team_id: "{{team_id}}"
            channel_id: "{{channel_id}}"
          outputParameters:
            - name: count
              type: number
              mapping: "$.value.length"
  consumes:
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.microsoft_graph_token"
      resources:
        - name: messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: get-messages
              method: GET

Executes a SQL query against GE Aerospace's Teradata data warehouse for operational analytics, supply chain reporting, and manufacturing metrics.

naftiko: "0.5"
info:
  label: "Teradata Warehouse Query"
  description: "Executes a SQL query against GE Aerospace's Teradata data warehouse for operational analytics, supply chain reporting, and manufacturing metrics."
  tags:
    - data-analytics
    - teradata
capability:
  exposes:
    - type: mcp
      namespace: data-warehouse
      port: 8080
      tools:
        - name: run-query
          description: "Execute a SQL query against Teradata."
          inputParameters:
            - name: sql_statement
              in: body
              type: string
              description: "The SQL query."
          call: "teradata.execute-query"
          with:
            query: "{{sql_statement}}"
  consumes:
    - type: http
      namespace: teradata
      baseUri: "https://ge-aerospace-td.teradata.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.teradata_token"
      resources:
        - name: queries
          path: "/systems/{{system_name}}/queries"
          inputParameters:
            - name: system_name
              in: path
          operations:
            - name: execute-query
              method: POST

Runs a Terraform plan against GE Aerospace Azure infrastructure to detect drift and posts results to Microsoft Teams.

naftiko: "0.5"
info:
  label: "Terraform Infrastructure Drift Detection"
  description: "Runs a Terraform plan against GE Aerospace Azure infrastructure to detect drift and posts results to Microsoft Teams."
  tags:
    - infrastructure
    - terraform
    - microsoft-azure
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: infra-drift
      port: 8080
      tools:
        - name: detect-drift
          description: "Given a Terraform workspace, run a plan to detect drift and notify the infra team."
          inputParameters:
            - name: workspace_id
              in: body
              type: string
              description: "The Terraform Cloud workspace ID."
          steps:
            - name: create-run
              type: call
              call: "terraform.create-run"
              with:
                workspace_id: "{{workspace_id}}"
                message: "Automated drift detection"
            - name: notify-infra
              type: call
              call: "msteams.post-channel-message"
              with:
                team_id: "cloud-infrastructure"
                channel_id: "drift-alerts"
                text: "Terraform drift check for workspace {{workspace_id}}. Run: {{create-run.id}}. Status: {{create-run.status}}."
  consumes:
    - type: http
      namespace: terraform
      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
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: post-channel-message
              method: POST

Checks Terraform workspace at GE Aerospace.

naftiko: "0.5"
info:
  label: "Terraform Workspace Check"
  description: "Checks Terraform workspace at GE Aerospace."
  tags:
    - infrastructure
    - terraform
    - iac
capability:
  exposes:
    - type: mcp
      namespace: tf-ws
      port: 8080
      tools:
        - name: check-ws
          description: "Check workspace at GE Aerospace."
          inputParameters:
            - name: workspace_id
              in: body
              type: string
              description: "Workspace ID."
          call: "terraform.get-ws"
          with:
            workspace_id: "{{workspace_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.data.attributes.name"
  consumes:
    - type: http
      namespace: terraform
      baseUri: "https://app.terraform.io/api/v2"
      authentication:
        type: bearer
        token: "$secrets.terraform_token"
      resources:
        - name: workspaces
          path: "/workspaces/{{workspace_id}}"
          inputParameters:
            - name: workspace_id
              in: path
          operations:
            - name: get-ws
              method: GET

Checks Vault secret at GE Aerospace.

naftiko: "0.5"
info:
  label: "Vault Secret Metadata"
  description: "Checks Vault secret at GE Aerospace."
  tags:
    - security
    - vault
    - secrets-management
capability:
  exposes:
    - type: mcp
      namespace: vault
      port: 8080
      tools:
        - name: check-secret
          description: "Check secret at GE Aerospace."
          inputParameters:
            - name: path
              in: body
              type: string
              description: "Secret path."
          call: "vault.get-metadata"
          with:
            path: "{{path}}"
          outputParameters:
            - name: version
              type: number
              mapping: "$.data.current_version"
  consumes:
    - type: http
      namespace: vault
      baseUri: "https://vault.geaerospace.com/v1"
      authentication:
        type: bearer
        token: "$secrets.vault_token"
      resources:
        - name: secrets
          path: "/secret/metadata/{{path}}"
          inputParameters:
            - name: path
              in: path
          operations:
            - name: get-metadata
              method: GET

Processes invoices at GE Aerospace via OCR, SAP matching, approval, and Oracle recording.

naftiko: "0.5"
info:
  label: "Vendor Invoice Processing Pipeline"
  description: "Processes invoices at GE Aerospace via OCR, SAP matching, approval, and Oracle recording."
  tags:
    - finance
    - accounts-payable
    - sap
    - oracle
capability:
  exposes:
    - type: mcp
      namespace: invoice-proc
      port: 8080
      tools:
        - name: process-invoice
          description: "Process invoices at GE Aerospace."
          inputParameters:
            - name: invoice_id
              in: body
              type: string
              description: "Invoice ID."
            - name: vendor_id
              in: body
              type: string
              description: "Vendor ID."
          steps:
            - name: extract
              type: call
              call: "ocr.extract"
              with:
                doc: "{{invoice_id}}"
            - name: match
              type: call
              call: "sap.match-po"
              with:
                vendor: "{{vendor_id}}"
                amount: "{{extract.total}}"
            - name: approve
              type: call
              call: "workflow.submit"
              with:
                invoice: "{{invoice_id}}"
            - name: record
              type: call
              call: "oracle.create-payment"
              with:
                invoice: "{{invoice_id}}"
  consumes:
    - type: http
      namespace: ocr
      baseUri: "https://ocr.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.ocr_token"
      resources:
        - name: invoices
          path: "/extract"
          operations:
            - name: extract
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://sap.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: pos
          path: "/match"
          operations:
            - name: match-po
              method: POST
    - type: http
      namespace: workflow
      baseUri: "https://workflow.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workflow_token"
      resources:
        - name: approvals
          path: "/submit"
          operations:
            - name: submit
              method: POST
    - type: http
      namespace: oracle
      baseUri: "https://oracle.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_token"
      resources:
        - name: payments
          path: "/payments"
          operations:
            - name: create-payment
              method: POST

Reviews vendors at GE Aerospace.

naftiko: "0.5"
info:
  label: "Quarterly Vendor Review Pipeline"
  description: "Reviews vendors at GE Aerospace."
  tags:
    - procurement
    - vendor-management
    - review
capability:
  exposes:
    - type: mcp
      namespace: vendor-review
      port: 8080
      tools:
        - name: review-vendor
          description: "Review vendors at GE Aerospace."
          inputParameters:
            - name: vendor_id
              in: body
              type: string
              description: "Vendor ID."
            - name: quarter
              in: body
              type: string
              description: "Quarter."
          steps:
            - name: perf
              type: call
              call: "procurement.get-metrics"
              with:
                vendor: "{{vendor_id}}"
                q: "{{quarter}}"
            - name: scorecard
              type: call
              call: "analytics.scorecard"
              with:
                data: "{{perf.data}}"
            - name: invite
              type: call
              call: "email.send"
              with:
                to: "{{perf.contact}}"
                subject: "QBR - {{quarter}}"
            - name: schedule
              type: call
              call: "calendar.create-event"
              with:
                title: "QBR - {{perf.name}}"
  consumes:
    - type: http
      namespace: procurement
      baseUri: "https://procurement.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.procurement_token"
      resources:
        - name: vendors
          path: "/vendors/{{vendor}}/metrics"
          inputParameters:
            - name: vendor
              in: path
          operations:
            - name: get-metrics
              method: GET
    - type: http
      namespace: analytics
      baseUri: "https://analytics.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.analytics_token"
      resources:
        - name: scorecards
          path: "/compute"
          operations:
            - name: scorecard
              method: POST
    - type: http
      namespace: email
      baseUri: "https://email.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.email_token"
      resources:
        - name: messages
          path: "/send"
          operations:
            - name: send
              method: POST
    - type: http
      namespace: calendar
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.microsoft_graph_token"
      resources:
        - name: events
          path: "/users/proc/events"
          operations:
            - name: create-event
              method: POST

Retrieves virtual machine status from VMware vSphere for GE Aerospace on-premises infrastructure, returning power state, CPU, memory, and storage utilization.

naftiko: "0.5"
info:
  label: "VMware vSphere VM Status"
  description: "Retrieves virtual machine status from VMware vSphere for GE Aerospace on-premises infrastructure, returning power state, CPU, memory, and storage utilization."
  tags:
    - infrastructure
    - virtualization
    - vmware
capability:
  exposes:
    - type: mcp
      namespace: vm-ops
      port: 8080
      tools:
        - name: get-vm-status
          description: "Look up a VMware VM by name. Returns power state, CPU, memory, and storage."
          inputParameters:
            - name: vm_name
              in: body
              type: string
              description: "The virtual machine name."
          call: "vsphere.get-vm"
          with:
            vm_name: "{{vm_name}}"
  consumes:
    - type: http
      namespace: vsphere
      baseUri: "https://ge-aerospace-vcenter.internal/api"
      authentication:
        type: bearer
        token: "$secrets.vsphere_token"
      resources:
        - name: vms
          path: "/vcenter/vm?filter.names={{vm_name}}"
          inputParameters:
            - name: vm_name
              in: query
          operations:
            - name: get-vm
              method: GET

Retrieves a maintenance work order from SAP by order number, returning status, assigned technician, estimated completion date, and parts list.

naftiko: "0.5"
info:
  label: "Work Order Status Check"
  description: "Retrieves a maintenance work order from SAP by order number, returning status, assigned technician, estimated completion date, and parts list."
  tags:
    - mro
    - work-orders
    - sap
capability:
  exposes:
    - type: mcp
      namespace: mro-work-orders
      port: 8080
      tools:
        - name: get-work-order
          description: "Look up a SAP maintenance work order. Returns status, technician, ETA, and required parts."
          inputParameters:
            - name: work_order_id
              in: body
              type: string
              description: "The SAP work order number."
          call: "sap.get-work-order"
          with:
            order_id: "{{work_order_id}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://ge-aerospace-s4.sap.com/sap/opu/odata/sap/ZPM_WORKORDER_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: work-orders
          path: "/WorkOrderSet('{{order_id}}')"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: get-work-order
              method: GET

Retrieves employee profile from Workday for GE Aerospace.

naftiko: "0.5"
info:
  label: "Workday Employee Profile Lookup"
  description: "Retrieves employee profile from Workday for GE Aerospace."
  tags:
    - hr
    - workday
    - employee-directory
capability:
  exposes:
    - type: mcp
      namespace: workday-profile
      port: 8080
      tools:
        - name: get-employee-profile
          description: "Look up GE Aerospace employee in Workday."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "Employee ID."
          call: "workday.get-worker"
          with:
            employee_id: "{{employee_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.worker.name"
            - name: title
              type: string
              mapping: "$.worker.title"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd5.geaerospace.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{employee_id}}"
          inputParameters:
            - name: employee_id
              in: path
          operations:
            - name: get-worker
              method: GET

Retrieves an employee profile from Workday by worker ID, returning name, department, job title, location, and reporting chain.

naftiko: "0.5"
info:
  label: "Workday Employee Record"
  description: "Retrieves an employee profile from Workday by worker ID, returning name, department, job title, location, and reporting chain."
  tags:
    - hr
    - workday
capability:
  exposes:
    - type: mcp
      namespace: hr
      port: 8080
      tools:
        - name: get-employee
          description: "Look up an employee in Workday by worker ID. Returns name, department, title, location, and manager."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "The Workday worker ID."
          call: "workday.get-worker"
          with:
            worker_id: "{{worker_id}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET

Retrieves a headcount summary from Workday by business unit, returning total employees, open positions, attrition rate, and average tenure.

naftiko: "0.5"
info:
  label: "Workday Headcount Report"
  description: "Retrieves a headcount summary from Workday by business unit, returning total employees, open positions, attrition rate, and average tenure."
  tags:
    - hr
    - workforce
    - workday
capability:
  exposes:
    - type: mcp
      namespace: hr-analytics
      port: 8080
      tools:
        - name: get-headcount
          description: "Retrieve headcount metrics for a business unit from Workday."
          inputParameters:
            - name: business_unit
              in: body
              type: string
              description: "The business unit name."
          call: "workday.get-headcount"
          with:
            business_unit: "{{business_unit}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: headcount
          path: "/headcountReport?businessUnit={{business_unit}}"
          inputParameters:
            - name: business_unit
              in: query
          operations:
            - name: get-headcount
              method: GET