Siemens Capabilities

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

Sort
Expand

Passes a long-form engineering specification or incident report to the Anthropic Claude API for summarization, returning a concise executive summary and action items.

naftiko: "0.5"
info:
  label: "Anthropic AI Document Summarizer"
  description: "Passes a long-form engineering specification or incident report to the Anthropic Claude API for summarization, returning a concise executive summary and action items."
  tags:
    - ai
    - automation
    - anthropic
    - productivity
capability:
  exposes:
    - type: mcp
      namespace: ai-tools
      port: 8080
      tools:
        - name: summarize-document
          description: "Given a document text (e.g., an engineering spec, incident report, or contract), send it to the Anthropic Claude API for summarization and return a structured summary with key points and recommended actions."
          inputParameters:
            - name: document_text
              in: body
              type: string
              description: "The full text of the document to summarize."
            - name: summary_format
              in: body
              type: string
              description: "Desired summary format: executive-summary, bullet-points, or action-items."
          call: "anthropic.create-message"
          with:
            model: "claude-opus-4-5"
            max_tokens: 1024
            system: "You are a technical document summarizer for Siemens. Produce concise, structured summaries."
            user_content: "{{document_text}} Format: {{summary_format}}"
          outputParameters:
            - name: summary
              type: string
              mapping: "$.content[0].text"
  consumes:
    - type: http
      namespace: anthropic
      baseUri: "https://api.anthropic.com/v1"
      authentication:
        type: apikey
        key: "x-api-key"
        value: "$secrets.anthropic_api_key"
        placement: header
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: create-message
              method: POST

When an assembly line goes down, creates a ServiceNow incident, logs downtime in SAP PM, and alerts plant management via Teams.

naftiko: "0.5"
info:
  label: "Assembly Line Downtime Escalation"
  description: "When an assembly line goes down, creates a ServiceNow incident, logs downtime in SAP PM, and alerts plant management via Teams."
  tags:
    - production
    - servicenow
    - sap
    - microsoft-teams
    - manufacturing
capability:
  exposes:
    - type: mcp
      namespace: production-ops
      port: 8080
      tools:
        - name: assembly-line-downtime-escalation
          description: "When an assembly line goes down, creates a ServiceNow incident, logs downtime in SAP PM, and alerts plant management via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Assembly Line Downtime Escalation: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Assembly Line Downtime Escalation: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_production_channel_id"
                text: "Assembly Line Downtime Escalation | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Generates CoC from SAP QM data, compiles in SharePoint, and notifies via Teams.

naftiko: "0.5"
info:
  label: "Automated Certificate of Conformance Generation"
  description: "Generates CoC from SAP QM data, compiles in SharePoint, and notifies via Teams."
  tags:
    - quality
    - sap
    - sharepoint
    - microsoft-teams
    - manufacturing
capability:
  exposes:
    - type: mcp
      namespace: quality-ops
      port: 8080
      tools:
        - name: automated-certificate-of-conformance
          description: "Generates CoC from SAP QM data, compiles in SharePoint, and notifies via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Automated Certificate of Conformance Generation: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Automated Certificate of Conformance Generation: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_quality_channel_id"
                text: "Automated Certificate of Conformance Generation | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Runs tests via Azure DevOps, publishes to Confluence, and notifies QA via Teams.

naftiko: "0.5"
info:
  label: "Automated Regression Test Report"
  description: "Runs tests via Azure DevOps, publishes to Confluence, and notifies QA via Teams."
  tags:
    - devops
    - azure-devops
    - confluence
    - microsoft-teams
    - testing
capability:
  exposes:
    - type: mcp
      namespace: devops-ops
      port: 8080
      tools:
        - name: automated-regression-test-report
          description: "Runs tests via Azure DevOps, publishes to Confluence, and notifies QA via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Automated Regression Test Report: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Automated Regression Test Report: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_devops_channel_id"
                text: "Automated Regression Test Report | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Reconciles timecards by comparing Workday entries against SAP hours, flagging discrepancies in Jira.

naftiko: "0.5"
info:
  label: "Automated Timecard Reconciliation"
  description: "Reconciles timecards by comparing Workday entries against SAP hours, flagging discrepancies in Jira."
  tags:
    - hr
    - workday
    - sap
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: hr-ops
      port: 8080
      tools:
        - name: automated-timecard-reconciliation
          description: "Reconciles timecards by comparing Workday entries against SAP hours, flagging discrepancies in Jira."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Automated Timecard Reconciliation: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Automated Timecard Reconciliation: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_hr_channel_id"
                text: "Automated Timecard Reconciliation | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Detects cost anomalies in Azure subscriptions, enriches the alert with resource group context from Azure Resource Manager, and posts a cost alert to the Microsoft Teams finance ops channel.

naftiko: "0.5"
info:
  label: "Azure Cloud Cost Anomaly Responder"
  description: "Detects cost anomalies in Azure subscriptions, enriches the alert with resource group context from Azure Resource Manager, and posts a cost alert to the Microsoft Teams finance ops channel."
  tags:
    - cloud
    - cost-management
    - azure
    - microsoft-teams
    - finops
capability:
  exposes:
    - type: mcp
      namespace: cloud-finops
      port: 8080
      tools:
        - name: respond-to-cost-anomaly
          description: "Given an Azure subscription ID and anomaly details, retrieve the resource group breakdown and post a cost anomaly alert to the Teams finance channel. Use when Azure Cost Management detects unexpected spend."
          inputParameters:
            - name: subscription_id
              in: body
              type: string
              description: "The Azure subscription ID where the anomaly was detected."
            - name: anomaly_amount
              in: body
              type: string
              description: "The anomalous spend amount in USD."
            - name: resource_group
              in: body
              type: string
              description: "The Azure resource group associated with the anomaly."
          steps:
            - name: get-resource-group
              type: call
              call: "azure-mgmt.get-resource-group"
              with:
                subscription_id: "{{subscription_id}}"
                resource_group: "{{resource_group}}"
            - name: post-cost-alert
              type: call
              call: "msteams-fin.post-message"
              with:
                channel_id: "$secrets.finance_teams_channel"
                text: "Azure cost anomaly: {{anomaly_amount}} USD in resource group {{resource_group}} ({{get-resource-group.location}}). Subscription: {{subscription_id}}"
  consumes:
    - type: http
      namespace: azure-mgmt
      baseUri: "https://management.azure.com"
      authentication:
        type: bearer
        token: "$secrets.azure_mgmt_token"
      resources:
        - name: resource-groups
          path: "/subscriptions/{{subscription_id}}/resourceGroups/{{resource_group}}"
          inputParameters:
            - name: subscription_id
              in: path
            - name: resource_group
              in: path
          operations:
            - name: get-resource-group
              method: GET
    - type: http
      namespace: msteams-fin
      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: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Analyzes Azure spending, logs recommendations in ServiceNow, and notifies cloud governance via Teams.

naftiko: "0.5"
info:
  label: "Azure Cost Optimization Recommendation"
  description: "Analyzes Azure spending, logs recommendations in ServiceNow, and notifies cloud governance via Teams."
  tags:
    - cloud
    - microsoft-azure
    - servicenow
    - microsoft-teams
    - devops
capability:
  exposes:
    - type: mcp
      namespace: cloud-ops
      port: 8080
      tools:
        - name: azure-cost-optimization-recommendation
          description: "Analyzes Azure spending, logs recommendations in ServiceNow, and notifies cloud governance via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Azure Cost Optimization Recommendation: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Azure Cost Optimization Recommendation: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_cloud_channel_id"
                text: "Azure Cost Optimization Recommendation | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Retrieves build status for a pipeline in Azure DevOps.

naftiko: "0.5"
info:
  label: "Azure DevOps Build Status Lookup"
  description: "Retrieves build status for a pipeline in Azure DevOps."
  tags:
    - devops
    - azure-devops
    - ci-cd
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: devops
      port: 8080
      tools:
        - name: azure-status
          description: "Retrieves build status for a pipeline in Azure DevOps."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "The identifier for the lookup."
          call: "devops.get-record"
          with:
            id: "{{identifier}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.result"
  consumes:
    - namespace: devops
      type: http
      baseUri: "https://siemens-s4.sap.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.sap_s4_username"
        password: "$secrets.sap_s4_password"
      resources:
        - name: records
          path: "/records"
          operations:
            - name: get-record
              method: GET

Triggers an Azure DevOps release pipeline upon merge to a release branch in GitHub, monitors the deployment status, and notifies the engineering team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Azure DevOps Release Pipeline Trigger"
  description: "Triggers an Azure DevOps release pipeline upon merge to a release branch in GitHub, monitors the deployment status, and notifies the engineering team in Microsoft Teams."
  tags:
    - devops
    - cicd
    - azure-devops
    - github
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: release-ops
      port: 8080
      tools:
        - name: trigger-release-pipeline
          description: "Given an Azure DevOps project, pipeline definition ID, and artifact version, trigger a release pipeline and post the deployment status to Teams. Use when a GitHub merge to release branch should initiate a deployment."
          inputParameters:
            - name: project
              in: body
              type: string
              description: "The Azure DevOps project name."
            - name: definition_id
              in: body
              type: string
              description: "The Azure DevOps release definition ID."
            - name: artifact_version
              in: body
              type: string
              description: "The artifact version (build number or tag) to deploy."
          steps:
            - name: trigger-pipeline
              type: call
              call: "azure-devops.create-release"
              with:
                project: "{{project}}"
                definition_id: "{{definition_id}}"
                artifact_version: "{{artifact_version}}"
            - name: notify-engineering
              type: call
              call: "msteams-release.post-message"
              with:
                channel_id: "$secrets.release_teams_channel"
                text: "Release pipeline triggered for {{project}} v{{artifact_version}}. Release ID: {{trigger-pipeline.releaseId}}"
  consumes:
    - type: http
      namespace: azure-devops
      baseUri: "https://vsrm.dev.azure.com/siemens"
      authentication:
        type: basic
        username: "$secrets.azuredevops_user"
        password: "$secrets.azuredevops_pat"
      resources:
        - name: releases
          path: "/{{project}}/_apis/release/releases"
          inputParameters:
            - name: project
              in: path
          operations:
            - name: create-release
              method: POST
    - type: http
      namespace: msteams-release
      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: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Monitors robotic weld quality via Datadog, logs deviations in SAP QM, and alerts body shop supervisor via Teams.

naftiko: "0.5"
info:
  label: "Body Shop Weld Quality Monitoring"
  description: "Monitors robotic weld quality via Datadog, logs deviations in SAP QM, and alerts body shop supervisor via Teams."
  tags:
    - quality
    - datadog
    - sap
    - microsoft-teams
    - manufacturing
capability:
  exposes:
    - type: mcp
      namespace: quality-ops
      port: 8080
      tools:
        - name: body-shop-weld-quality-monitoring
          description: "Monitors robotic weld quality via Datadog, logs deviations in SAP QM, and alerts body shop supervisor via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Body Shop Weld Quality Monitoring: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Body Shop Weld Quality Monitoring: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_quality_channel_id"
                text: "Body Shop Weld Quality Monitoring | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Initiates document review from SharePoint, creates Jira task, and notifies reviewers via Teams.

naftiko: "0.5"
info:
  label: "Compliance Document Review Cycle"
  description: "Initiates document review from SharePoint, creates Jira task, and notifies reviewers via Teams."
  tags:
    - compliance
    - sharepoint
    - jira
    - microsoft-teams
    - quality
capability:
  exposes:
    - type: mcp
      namespace: compliance-ops
      port: 8080
      tools:
        - name: compliance-document-review-cycle
          description: "Initiates document review from SharePoint, creates Jira task, and notifies reviewers via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Compliance Document Review Cycle: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Compliance Document Review Cycle: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_compliance_channel_id"
                text: "Compliance Document Review Cycle | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Searches Confluence for engineering specifications by keyword.

naftiko: "0.5"
info:
  label: "Confluence Engineering Spec Search"
  description: "Searches Confluence for engineering specifications by keyword."
  tags:
    - engineering
    - confluence
    - documentation
    - search
capability:
  exposes:
    - type: mcp
      namespace: engineering
      port: 8080
      tools:
        - name: confluence-search
          description: "Searches Confluence for engineering specifications by keyword."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "The identifier for the lookup."
          call: "engineering.get-record"
          with:
            id: "{{identifier}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.result"
  consumes:
    - namespace: engineering
      type: http
      baseUri: "https://siemens-s4.sap.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.sap_s4_username"
        password: "$secrets.sap_s4_password"
      resources:
        - name: records
          path: "/records"
          operations:
            - name: get-record
              method: GET

Creates a Confluence knowledge base article from a ServiceNow incident resolution summary, linking it back to the original incident for post-incident review and future reference.

naftiko: "0.5"
info:
  label: "Confluence Knowledge Base Article Publisher"
  description: "Creates a Confluence knowledge base article from a ServiceNow incident resolution summary, linking it back to the original incident for post-incident review and future reference."
  tags:
    - itsm
    - knowledge-management
    - confluence
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: knowledge-ops
      port: 8080
      tools:
        - name: publish-incident-resolution-article
          description: "Given a resolved ServiceNow incident number, retrieve the resolution notes and create a Confluence knowledge base article in the IT space. Use after major incidents are resolved to capture institutional knowledge."
          inputParameters:
            - name: incident_number
              in: body
              type: string
              description: "The ServiceNow incident number (e.g., INC0012345)."
            - name: confluence_space_key
              in: body
              type: string
              description: "The Confluence space key where the article should be created (e.g., ITSM)."
          steps:
            - name: get-incident
              type: call
              call: "servicenow-kb.get-incident"
              with:
                number: "{{incident_number}}"
            - name: create-article
              type: call
              call: "confluence.create-page"
              with:
                space_key: "{{confluence_space_key}}"
                title: "Resolution: {{get-incident.short_description}}"
                body: "Incident: {{incident_number}}\nResolution: {{get-incident.close_notes}}\nRCA: {{get-incident.rca}}"
  consumes:
    - type: http
      namespace: servicenow-kb
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          inputParameters:
            - name: number
              in: query
          operations:
            - name: get-incident
              method: GET
    - type: http
      namespace: confluence
      baseUri: "https://siemens.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST

Orchestrates OTA update by scheduling via ServiceNow and notifying the connected vehicle team via Teams.

naftiko: "0.5"
info:
  label: "Connected Vehicle OTA Update Rollout"
  description: "Orchestrates OTA update by scheduling via ServiceNow and notifying the connected vehicle team via Teams."
  tags:
    - automotive
    - servicenow
    - microsoft-teams
    - connected-vehicle
capability:
  exposes:
    - type: mcp
      namespace: automotive-ops
      port: 8080
      tools:
        - name: connected-vehicle-ota-update-rollout
          description: "Orchestrates OTA update by scheduling via ServiceNow and notifying the connected vehicle team via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Connected Vehicle OTA Update Rollout: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Connected Vehicle OTA Update Rollout: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_automotive_channel_id"
                text: "Connected Vehicle OTA Update Rollout | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

When milestone completes in Jira, creates SAP billing document, updates Salesforce, and notifies finance via Teams.

naftiko: "0.5"
info:
  label: "Contract Milestone Billing Trigger"
  description: "When milestone completes in Jira, creates SAP billing document, updates Salesforce, and notifies finance via Teams."
  tags:
    - finance
    - jira
    - sap
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: finance-ops
      port: 8080
      tools:
        - name: contract-milestone-billing-trigger
          description: "When milestone completes in Jira, creates SAP billing document, updates Salesforce, and notifies finance via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Contract Milestone Billing Trigger: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Contract Milestone Billing Trigger: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_finance_channel_id"
                text: "Contract Milestone Billing Trigger | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

When spare parts inventory drops below threshold, creates a SAP purchase requisition, logs in ServiceNow, and notifies via Teams.

naftiko: "0.5"
info:
  label: "Critical Spare Parts Reorder Workflow"
  description: "When spare parts inventory drops below threshold, creates a SAP purchase requisition, logs in ServiceNow, and notifies via Teams."
  tags:
    - supply-chain
    - sap
    - servicenow
    - microsoft-teams
    - procurement
capability:
  exposes:
    - type: mcp
      namespace: supply-chain-ops
      port: 8080
      tools:
        - name: critical-spare-parts-reorder-workflow
          description: "When spare parts inventory drops below threshold, creates a SAP purchase requisition, logs in ServiceNow, and notifies via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Critical Spare Parts Reorder Workflow: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Critical Spare Parts Reorder Workflow: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_supply-chain_channel_id"
                text: "Critical Spare Parts Reorder Workflow | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Syncs program status across Jira, SAP, Salesforce, publishes to Confluence, and notifies leadership via Teams.

naftiko: "0.5"
info:
  label: "Cross-Functional Program Status Sync"
  description: "Syncs program status across Jira, SAP, Salesforce, publishes to Confluence, and notifies leadership via Teams."
  tags:
    - project-management
    - jira
    - sap
    - salesforce
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: project-management-ops
      port: 8080
      tools:
        - name: cross-functional-program-status-sync
          description: "Syncs program status across Jira, SAP, Salesforce, publishes to Confluence, and notifies leadership via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Cross-Functional Program Status Sync: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Cross-Functional Program Status Sync: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_project-management_channel_id"
                text: "Cross-Functional Program Status Sync | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Processes customer complaint from Salesforce by creating SAP quality notification, Jira investigation, and alerting support via Teams.

naftiko: "0.5"
info:
  label: "Customer Complaint Resolution Workflow"
  description: "Processes customer complaint from Salesforce by creating SAP quality notification, Jira investigation, and alerting support via Teams."
  tags:
    - quality
    - salesforce
    - sap
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: quality-ops
      port: 8080
      tools:
        - name: customer-complaint-resolution-workflow
          description: "Processes customer complaint from Salesforce by creating SAP quality notification, Jira investigation, and alerting support via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Customer Complaint Resolution Workflow: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Customer Complaint Resolution Workflow: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_quality_channel_id"
                text: "Customer Complaint Resolution Workflow | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Responds to a cybersecurity alert by creating a ServiceNow incident, suspending the Okta account, and alerting security via Teams.

naftiko: "0.5"
info:
  label: "Cybersecurity Incident Response Chain"
  description: "Responds to a cybersecurity alert by creating a ServiceNow incident, suspending the Okta account, and alerting security via Teams."
  tags:
    - security
    - splunk
    - servicenow
    - okta
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: security-ops
      port: 8080
      tools:
        - name: cybersecurity-incident-response-chain
          description: "Responds to a cybersecurity alert by creating a ServiceNow incident, suspending the Okta account, and alerting security via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Cybersecurity Incident Response Chain: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Cybersecurity Incident Response Chain: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_security_channel_id"
                text: "Cybersecurity Incident Response Chain | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Monitors Snowflake data quality, creates Jira ticket when issues found, and alerts data engineering via Teams.

naftiko: "0.5"
info:
  label: "Data Lake Ingestion Quality Monitor"
  description: "Monitors Snowflake data quality, creates Jira ticket when issues found, and alerts data engineering via Teams."
  tags:
    - data-engineering
    - snowflake
    - jira
    - microsoft-teams
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: data-engineering-ops
      port: 8080
      tools:
        - name: data-lake-ingestion-quality-monitor
          description: "Monitors Snowflake data quality, creates Jira ticket when issues found, and alerts data engineering via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Data Lake Ingestion Quality Monitor: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Data Lake Ingestion Quality Monitor: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_data-engineering_channel_id"
                text: "Data Lake Ingestion Quality Monitor | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

When a Datadog monitor alert fires for production infrastructure, automatically opens a ServiceNow incident with full alert context and posts a notification to the Microsoft Teams engineering channel.

naftiko: "0.5"
info:
  label: "Datadog Infrastructure Alert to ServiceNow Incident"
  description: "When a Datadog monitor alert fires for production infrastructure, automatically opens a ServiceNow incident with full alert context and posts a notification to the Microsoft Teams engineering channel."
  tags:
    - observability
    - incident-response
    - datadog
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: infra-ops
      port: 8080
      tools:
        - name: handle-datadog-alert
          description: "Given a Datadog monitor ID and alert details, open a ServiceNow incident and notify the engineering Teams channel. Use when Datadog detects a production infrastructure anomaly requiring human triage."
          inputParameters:
            - name: monitor_id
              in: body
              type: string
              description: "The Datadog monitor ID that triggered the alert."
            - name: alert_title
              in: body
              type: string
              description: "The alert title/summary from Datadog."
            - name: severity
              in: body
              type: string
              description: "Alert severity: critical, warning, or info."
          steps:
            - name: get-monitor
              type: call
              call: "datadog.get-monitor"
              with:
                monitor_id: "{{monitor_id}}"
            - name: create-incident
              type: call
              call: "servicenow-dd.create-incident"
              with:
                short_description: "[Datadog] {{alert_title}}"
                urgency: "{{severity}}"
                description: "Monitor: {{get-monitor.name}}\nQuery: {{get-monitor.query}}\nStatus: {{get-monitor.overall_state}}"
            - name: notify-engineering
              type: call
              call: "msteams-eng.post-message"
              with:
                channel_id: "$secrets.engineering_teams_channel"
                text: "Datadog alert: {{alert_title}} | Severity: {{severity}} | ServiceNow: {{create-incident.number}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: monitors
          path: "/monitor/{{monitor_id}}"
          inputParameters:
            - name: monitor_id
              in: path
          operations:
            - name: get-monitor
              method: GET
    - type: http
      namespace: servicenow-dd
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams-eng
      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: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Retrieves current health status of a monitored service from Datadog.

naftiko: "0.5"
info:
  label: "Datadog Service Health Check"
  description: "Retrieves current health status of a monitored service from Datadog."
  tags:
    - monitoring
    - datadog
    - health-check
    - operations
capability:
  exposes:
    - type: mcp
      namespace: monitoring
      port: 8080
      tools:
        - name: datadog-check
          description: "Retrieves current health status of a monitored service from Datadog."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "The identifier for the lookup."
          call: "monitoring.get-record"
          with:
            id: "{{identifier}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.result"
  consumes:
    - namespace: monitoring
      type: http
      baseUri: "https://siemens-s4.sap.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.sap_s4_username"
        password: "$secrets.sap_s4_password"
      resources:
        - name: records
          path: "/records"
          operations:
            - name: get-record
              method: GET

Monitors Datadog SLO status and, when a service-level objective breach is detected, opens a ServiceNow incident and pages the on-call engineer via PagerDuty.

naftiko: "0.5"
info:
  label: "Datadog SLO Breach Alert"
  description: "Monitors Datadog SLO status and, when a service-level objective breach is detected, opens a ServiceNow incident and pages the on-call engineer via PagerDuty."
  tags:
    - observability
    - slo
    - datadog
    - servicenow
    - pagerduty
capability:
  exposes:
    - type: mcp
      namespace: slo-ops
      port: 8080
      tools:
        - name: handle-slo-breach
          description: "Given a Datadog SLO ID and breach details, open a ServiceNow incident and trigger a PagerDuty alert for the on-call engineer. Use when an SLO falls below its error budget threshold."
          inputParameters:
            - name: slo_id
              in: body
              type: string
              description: "The Datadog SLO ID that breached its threshold."
            - name: service_name
              in: body
              type: string
              description: "The name of the service whose SLO was breached."
            - name: remaining_budget
              in: body
              type: string
              description: "The remaining error budget percentage at time of breach."
          steps:
            - name: get-slo
              type: call
              call: "datadog-slo.get-slo"
              with:
                slo_id: "{{slo_id}}"
            - name: create-incident
              type: call
              call: "servicenow-slo.create-incident"
              with:
                short_description: "SLO breach: {{service_name}} error budget {{remaining_budget}}% remaining"
                urgency: "critical"
            - name: trigger-page
              type: call
              call: "pagerduty.trigger-incident"
              with:
                service_id: "$secrets.pagerduty_service_id"
                summary: "SLO breach for {{service_name}}: {{remaining_budget}}% budget remaining"
                severity: "critical"
  consumes:
    - type: http
      namespace: datadog-slo
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: slos
          path: "/slo/{{slo_id}}"
          inputParameters:
            - name: slo_id
              in: path
          operations:
            - name: get-slo
              method: GET
    - type: http
      namespace: servicenow-slo
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: pagerduty
      baseUri: "https://api.pagerduty.com"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.pagerduty_api_key"
        placement: header
      resources:
        - name: incidents
          path: "/incidents"
          operations:
            - name: trigger-incident
              method: POST

Processes warranty claim from Salesforce by creating SAP service order, Jira investigation, and notifying warranty team.

naftiko: "0.5"
info:
  label: "Dealer Warranty Claim Processing"
  description: "Processes warranty claim from Salesforce by creating SAP service order, Jira investigation, and notifying warranty team."
  tags:
    - quality
    - salesforce
    - sap
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: quality-ops
      port: 8080
      tools:
        - name: dealer-warranty-claim-processing
          description: "Processes warranty claim from Salesforce by creating SAP service order, Jira investigation, and notifying warranty team."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Dealer Warranty Claim Processing: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Dealer Warranty Claim Processing: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_quality_channel_id"
                text: "Dealer Warranty Claim Processing | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Provisions badge access by syncing Workday data, creating ServiceNow request, and confirming via Teams.

naftiko: "0.5"
info:
  label: "Employee Badge Access Provisioning"
  description: "Provisions badge access by syncing Workday data, creating ServiceNow request, and confirming via Teams."
  tags:
    - security
    - workday
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: security-ops
      port: 8080
      tools:
        - name: employee-badge-access-provisioning
          description: "Provisions badge access by syncing Workday data, creating ServiceNow request, and confirming via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Employee Badge Access Provisioning: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Employee Badge Access Provisioning: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_security_channel_id"
                text: "Employee Badge Access Provisioning | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

When a new hire record is created in SAP SuccessFactors, opens a ServiceNow onboarding ticket, provisions a Microsoft 365 account via Graph API, and sends a Teams welcome message.

naftiko: "0.5"
info:
  label: "Employee Onboarding Orchestrator"
  description: "When a new hire record is created in SAP SuccessFactors, opens a ServiceNow onboarding ticket, provisions a Microsoft 365 account via Graph API, and sends a Teams welcome message."
  tags:
    - hr
    - onboarding
    - sap-successfactors
    - servicenow
    - microsoft-teams
    - microsoft-365
capability:
  exposes:
    - type: mcp
      namespace: hr-onboarding
      port: 8080
      tools:
        - name: trigger-onboarding
          description: "Given a SAP SuccessFactors employee ID and start date, orchestrate the full onboarding sequence: open a ServiceNow ticket, provision a Microsoft 365 account, and send a Teams welcome message."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The SAP SuccessFactors employee ID for the new hire."
            - name: start_date
              in: body
              type: string
              description: "The new hire's start date in ISO 8601 format (YYYY-MM-DD)."
            - name: manager_email
              in: body
              type: string
              description: "The hiring manager's email address for Teams notification."
          steps:
            - name: get-employee
              type: call
              call: "successfactors.get-employee"
              with:
                employee_id: "{{employee_id}}"
            - name: open-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "New hire onboarding: {{get-employee.firstName}} {{get-employee.lastName}}"
                category: "hr_onboarding"
                assignment_group: "IT_Onboarding"
            - name: provision-account
              type: call
              call: "msgraph.create-user"
              with:
                displayName: "{{get-employee.firstName}} {{get-employee.lastName}}"
                mail: "{{get-employee.email}}"
                department: "{{get-employee.department}}"
            - name: send-welcome
              type: call
              call: "msteams.send-message"
              with:
                recipient: "{{manager_email}}"
                text: "New hire {{get-employee.firstName}} {{get-employee.lastName}} onboarding started. ServiceNow ticket: {{open-ticket.number}}"
  consumes:
    - type: http
      namespace: successfactors
      baseUri: "https://api4.successfactors.com/odata/v2"
      authentication:
        type: bearer
        token: "$secrets.successfactors_token"
      resources:
        - name: employees
          path: "/PerPerson({{employee_id}})"
          inputParameters:
            - name: employee_id
              in: path
          operations:
            - name: get-employee
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://siemens.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: msgraph
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: users
          path: "/users"
          operations:
            - name: create-user
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: chats
          path: "/users/{{recipient}}/sendMail"
          inputParameters:
            - name: recipient
              in: path
          operations:
            - name: send-message
              method: POST

Checks safety training compliance from Workday against requirements, alerting managers via Teams for gaps.

naftiko: "0.5"
info:
  label: "Employee Safety Training Compliance Check"
  description: "Checks safety training compliance from Workday against requirements, alerting managers via Teams for gaps."
  tags:
    - safety
    - workday
    - sap
    - microsoft-teams
    - training
capability:
  exposes:
    - type: mcp
      namespace: safety-ops
      port: 8080
      tools:
        - name: employee-safety-training-compliance-check
          description: "Checks safety training compliance from Workday against requirements, alerting managers via Teams for gaps."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Employee Safety Training Compliance Check: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Employee Safety Training Compliance Check: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_safety_channel_id"
                text: "Employee Safety Training Compliance Check | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Processes an engineering change order by creating a Jira ECO ticket, updating the BOM in SAP, and notifying teams via Teams.

naftiko: "0.5"
info:
  label: "Engineering Change Order Process"
  description: "Processes an engineering change order by creating a Jira ECO ticket, updating the BOM in SAP, and notifying teams via Teams."
  tags:
    - engineering
    - jira
    - sap
    - microsoft-teams
    - manufacturing
capability:
  exposes:
    - type: mcp
      namespace: engineering-ops
      port: 8080
      tools:
        - name: engineering-change-order-process
          description: "Processes an engineering change order by creating a Jira ECO ticket, updating the BOM in SAP, and notifying teams via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Engineering Change Order Process: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Engineering Change Order Process: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_engineering_channel_id"
                text: "Engineering Change Order Process | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Orchestrates design review by gathering Confluence docs, creating Jira task, and notifying reviewers via Teams.

naftiko: "0.5"
info:
  label: "Engineering Design Review Orchestration"
  description: "Orchestrates design review by gathering Confluence docs, creating Jira task, and notifying reviewers via Teams."
  tags:
    - engineering
    - confluence
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: engineering-ops
      port: 8080
      tools:
        - name: engineering-design-review-orchestration
          description: "Orchestrates design review by gathering Confluence docs, creating Jira task, and notifying reviewers via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Engineering Design Review Orchestration: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Engineering Design Review Orchestration: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_engineering_channel_id"
                text: "Engineering Design Review Orchestration | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Collects environmental sensor data via Datadog, logs in ServiceNow, and alerts EHS via Teams when thresholds are exceeded.

naftiko: "0.5"
info:
  label: "Environmental Compliance Monitoring"
  description: "Collects environmental sensor data via Datadog, logs in ServiceNow, and alerts EHS via Teams when thresholds are exceeded."
  tags:
    - safety
    - ehs
    - datadog
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: safety-ops
      port: 8080
      tools:
        - name: environmental-compliance-monitoring
          description: "Collects environmental sensor data via Datadog, logs in ServiceNow, and alerts EHS via Teams when thresholds are exceeded."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Environmental Compliance Monitoring: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Environmental Compliance Monitoring: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_safety_channel_id"
                text: "Environmental Compliance Monitoring | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Creates SAP PM work order, ServiceNow task, and alerts facilities via Teams.

naftiko: "0.5"
info:
  label: "Facility Maintenance Work Order Orchestration"
  description: "Creates SAP PM work order, ServiceNow task, and alerts facilities via Teams."
  tags:
    - manufacturing
    - sap
    - servicenow
    - microsoft-teams
    - maintenance
capability:
  exposes:
    - type: mcp
      namespace: manufacturing-ops
      port: 8080
      tools:
        - name: facility-maintenance-work-order-orchestration
          description: "Creates SAP PM work order, ServiceNow task, and alerts facilities via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Facility Maintenance Work Order Orchestration: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Facility Maintenance Work Order Orchestration: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_manufacturing_channel_id"
                text: "Facility Maintenance Work Order Orchestration | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

When Datadog detects an IoT anomaly, creates a ServiceNow incident, SAP PM work order, and alerts maintenance via Teams.

naftiko: "0.5"
info:
  label: "Factory Floor IoT Anomaly Response"
  description: "When Datadog detects an IoT anomaly, creates a ServiceNow incident, SAP PM work order, and alerts maintenance via Teams."
  tags:
    - manufacturing
    - datadog
    - servicenow
    - sap
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: manufacturing-ops
      port: 8080
      tools:
        - name: factory-floor-iot-anomaly-response
          description: "When Datadog detects an IoT anomaly, creates a ServiceNow incident, SAP PM work order, and alerts maintenance via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Factory Floor IoT Anomaly Response: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Factory Floor IoT Anomaly Response: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_manufacturing_channel_id"
                text: "Factory Floor IoT Anomaly Response | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

When a GitHub Actions workflow fails on a protected branch, creates a Jira bug with pipeline context, posts an alert to Microsoft Teams, and creates a Datadog deployment marker.

naftiko: "0.5"
info:
  label: "GitHub Actions CI/CD Failure Handler"
  description: "When a GitHub Actions workflow fails on a protected branch, creates a Jira bug with pipeline context, posts an alert to Microsoft Teams, and creates a Datadog deployment marker."
  tags:
    - devops
    - cicd
    - github
    - jira
    - datadog
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: cicd-ops
      port: 8080
      tools:
        - name: handle-pipeline-failure
          description: "Given a failed GitHub Actions run ID, repository, and branch, open a Jira bug, post a Teams alert, and mark the deployment in Datadog. Use when automated CI/CD pipelines fail on protected branches."
          inputParameters:
            - name: run_id
              in: body
              type: string
              description: "The GitHub Actions workflow run ID."
            - name: repo
              in: body
              type: string
              description: "The GitHub repository name in owner/repo format."
            - name: branch
              in: body
              type: string
              description: "The branch name where the failure occurred."
            - name: commit_sha
              in: body
              type: string
              description: "The commit SHA associated with the failed run."
          steps:
            - name: get-run
              type: call
              call: "github.get-workflow-run"
              with:
                repo: "{{repo}}"
                run_id: "{{run_id}}"
            - name: create-bug
              type: call
              call: "jira-ci.create-issue"
              with:
                project_key: "ENG"
                issuetype: "Bug"
                summary: "[CI Failure] {{repo}} / {{branch}}"
                description: "Run ID: {{run_id}}\nCommit: {{commit_sha}}\nConclusion: {{get-run.conclusion}}"
            - name: post-alert
              type: call
              call: "msteams-ci.post-message"
              with:
                channel_id: "$secrets.cicd_teams_channel"
                text: "Pipeline failure: {{repo}} | Branch: {{branch}} | Jira: {{create-bug.key}}"
            - name: create-dd-marker
              type: call
              call: "datadog-ci.create-event"
              with:
                title: "CI Failure: {{repo}}"
                text: "Branch: {{branch}} | Commit: {{commit_sha}}"
                tags: "repo:{{repo}},branch:{{branch}}"
  consumes:
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: workflow-runs
          path: "/repos/{{repo}}/actions/runs/{{run_id}}"
          inputParameters:
            - name: repo
              in: path
            - name: run_id
              in: path
          operations:
            - name: get-workflow-run
              method: GET
    - type: http
      namespace: jira-ci
      baseUri: "https://siemens.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-ci
      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: channel_id
              in: path
          operations:
            - name: post-message
              method: POST
    - type: http
      namespace: datadog-ci
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: events
          path: "/events"
          operations:
            - name: create-event
              method: POST

Checks branch protection rules for a GitHub repository.

naftiko: "0.5"
info:
  label: "GitHub Repository Branch Protection Check"
  description: "Checks branch protection rules for a GitHub repository."
  tags:
    - devops
    - github
    - security
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: devops
      port: 8080
      tools:
        - name: github-check
          description: "Checks branch protection rules for a GitHub repository."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "The identifier for the lookup."
          call: "devops.get-record"
          with:
            id: "{{identifier}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.result"
  consumes:
    - namespace: devops
      type: http
      baseUri: "https://siemens-s4.sap.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.sap_s4_username"
        password: "$secrets.sap_s4_password"
      resources:
        - name: records
          path: "/records"
          operations:
            - name: get-record
              method: GET

Triggers a GitHub Dependabot security scan on a repository, retrieves vulnerability alerts, and creates Jira security tickets for high-severity findings.

naftiko: "0.5"
info:
  label: "GitHub Security Vulnerability Scanner"
  description: "Triggers a GitHub Dependabot security scan on a repository, retrieves vulnerability alerts, and creates Jira security tickets for high-severity findings."
  tags:
    - security
    - devops
    - github
    - jira
capability:
  exposes:
    - type: mcp
      namespace: security-scanning
      port: 8080
      tools:
        - name: scan-repository-vulnerabilities
          description: "Given a GitHub repository, retrieve Dependabot vulnerability alerts. For each high or critical severity alert, create a Jira security ticket. Use for scheduled security posture reviews."
          inputParameters:
            - name: repo
              in: body
              type: string
              description: "GitHub repository in owner/repo format."
            - name: severity_threshold
              in: body
              type: string
              description: "Minimum severity to action: low, medium, high, or critical."
          steps:
            - name: get-alerts
              type: call
              call: "github-sec.get-dependabot-alerts"
              with:
                repo: "{{repo}}"
                severity: "{{severity_threshold}}"
            - name: create-sec-ticket
              type: call
              call: "jira-sec.create-issue"
              with:
                project_key: "SEC"
                issuetype: "Security"
                summary: "Vulnerability alert in {{repo}}: {{get-alerts.securityVulnerability.package.name}}"
                description: "Severity: {{get-alerts.severity}}\nPackage: {{get-alerts.securityVulnerability.package.name}}\nFixed in: {{get-alerts.securityVulnerability.firstPatchedVersion.identifier}}"
  consumes:
    - type: http
      namespace: github-sec
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: dependabot-alerts
          path: "/repos/{{repo}}/dependabot/alerts"
          inputParameters:
            - name: repo
              in: path
            - name: severity
              in: query
          operations:
            - name: get-dependabot-alerts
              method: GET
    - type: http
      namespace: jira-sec
      baseUri: "https://siemens.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

When hazardous material is received, validates SDS in SharePoint, creates SAP EHS notification, and alerts safety via Teams.

naftiko: "0.5"
info:
  label: "Hazardous Material Handling Alert"
  description: "When hazardous material is received, validates SDS in SharePoint, creates SAP EHS notification, and alerts safety via Teams."
  tags:
    - safety
    - ehs
    - sharepoint
    - sap
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: safety-ops
      port: 8080
      tools:
        - name: hazardous-material-handling-alert
          description: "When hazardous material is received, validates SDS in SharePoint, creates SAP EHS notification, and alerts safety via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Hazardous Material Handling Alert: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Hazardous Material Handling Alert: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_safety_channel_id"
                text: "Hazardous Material Handling Alert | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Retrieves current headcount by department and cost center from SAP SuccessFactors and returns a structured snapshot for workforce planning and reporting.

naftiko: "0.5"
info:
  label: "Headcount Snapshot from SAP SuccessFactors"
  description: "Retrieves current headcount by department and cost center from SAP SuccessFactors and returns a structured snapshot for workforce planning and reporting."
  tags:
    - hr
    - workforce-planning
    - sap-successfactors
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: hr-analytics
      port: 8080
      tools:
        - name: get-headcount-snapshot
          description: "Return current headcount grouped by department and cost center from SAP SuccessFactors. Use for workforce planning, budget reviews, and quarterly reporting."
          inputParameters:
            - name: company_code
              in: body
              type: string
              description: "The SAP company code to filter headcount by (e.g., 0001 for Siemens AG)."
          call: "successfactors-hc.get-headcount"
          with:
            company_code: "{{company_code}}"
          outputParameters:
            - name: employees
              type: array
              mapping: "$.d.results"
            - name: total_count
              type: number
              mapping: "$.d.__count"
  consumes:
    - type: http
      namespace: successfactors-hc
      baseUri: "https://api4.successfactors.com/odata/v2"
      authentication:
        type: bearer
        token: "$secrets.successfactors_token"
      resources:
        - name: headcount
          path: "/EmpEmployment"
          inputParameters:
            - name: company_code
              in: query
          operations:
            - name: get-headcount
              method: GET

Ingests powertrain test data to Snowflake, refreshes Tableau dashboard, and notifies engineering via Teams.

naftiko: "0.5"
info:
  label: "Hybrid Powertrain Test Data Pipeline"
  description: "Ingests powertrain test data to Snowflake, refreshes Tableau dashboard, and notifies engineering via Teams."
  tags:
    - engineering
    - snowflake
    - tableau
    - microsoft-teams
    - automotive
capability:
  exposes:
    - type: mcp
      namespace: engineering-ops
      port: 8080
      tools:
        - name: hybrid-powertrain-test-data-pipeline
          description: "Ingests powertrain test data to Snowflake, refreshes Tableau dashboard, and notifies engineering via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Hybrid Powertrain Test Data Pipeline: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Hybrid Powertrain Test Data Pipeline: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_engineering_channel_id"
                text: "Hybrid Powertrain Test Data Pipeline | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Monitors Informatica Intelligent Data Management Cloud pipeline job status, surfaces failed jobs, and opens a Jira data engineering ticket when a critical pipeline fails.

naftiko: "0.5"
info:
  label: "Informatica Data Pipeline Monitoring"
  description: "Monitors Informatica Intelligent Data Management Cloud pipeline job status, surfaces failed jobs, and opens a Jira data engineering ticket when a critical pipeline fails."
  tags:
    - data
    - etl
    - informatica
    - jira
    - monitoring
capability:
  exposes:
    - type: mcp
      namespace: etl-monitoring
      port: 8080
      tools:
        - name: monitor-informatica-jobs
          description: "Retrieve the status of Informatica IDMC pipeline jobs for a given time window. Create a Jira ticket for any failed critical jobs. Use for scheduled ETL health monitoring."
          inputParameters:
            - name: org_id
              in: body
              type: string
              description: "The Informatica IDMC organization ID."
            - name: job_status
              in: body
              type: string
              description: "Status filter for jobs: FAILED, RUNNING, SUCCESS."
          steps:
            - name: get-failed-jobs
              type: call
              call: "informatica.get-jobs"
              with:
                org_id: "{{org_id}}"
                status: "{{job_status}}"
            - name: create-ticket
              type: call
              call: "jira-etl.create-issue"
              with:
                project_key: "DATA"
                issuetype: "Bug"
                summary: "Informatica pipeline failure in org {{org_id}}"
                description: "Job status: {{job_status}}\nOrg: {{org_id}}\nFailed job details: {{get-failed-jobs.jobName}}"
  consumes:
    - type: http
      namespace: informatica
      baseUri: "https://dm-us.informaticacloud.com/saas/api/v2"
      authentication:
        type: apikey
        key: "icSessionId"
        value: "$secrets.informatica_session_id"
        placement: header
      resources:
        - name: jobs
          path: "/job"
          inputParameters:
            - name: status
              in: query
            - name: org_id
              in: query
          operations:
            - name: get-jobs
              method: GET
    - type: http
      namespace: jira-etl
      baseUri: "https://siemens.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

Processes IT change by creating ServiceNow change request, running Terraform plan, and posting for CAB review via Teams.

naftiko: "0.5"
info:
  label: "IT Infrastructure Change Approval Workflow"
  description: "Processes IT change by creating ServiceNow change request, running Terraform plan, and posting for CAB review via Teams."
  tags:
    - devops
    - servicenow
    - microsoft-teams
    - infrastructure
capability:
  exposes:
    - type: mcp
      namespace: devops-ops
      port: 8080
      tools:
        - name: it-infrastructure-change-approval-workflow
          description: "Processes IT change by creating ServiceNow change request, running Terraform plan, and posting for CAB review via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "IT Infrastructure Change Approval Workflow: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "IT Infrastructure Change Approval Workflow: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_devops_channel_id"
                text: "IT Infrastructure Change Approval Workflow | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

When a critical vulnerability is found, creates a Jira ticket, updates ServiceNow CMDB, and alerts security via Teams.

naftiko: "0.5"
info:
  label: "IT Security Vulnerability Remediation"
  description: "When a critical vulnerability is found, creates a Jira ticket, updates ServiceNow CMDB, and alerts security via Teams."
  tags:
    - security
    - github
    - jira
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: security-ops
      port: 8080
      tools:
        - name: it-security-vulnerability-remediation
          description: "When a critical vulnerability is found, creates a Jira ticket, updates ServiceNow CMDB, and alerts security via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "IT Security Vulnerability Remediation: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "IT Security Vulnerability Remediation: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_security_channel_id"
                text: "IT Security Vulnerability Remediation | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Retrieves a Jira engineering issue by key, returning summary, status, and assignee.

naftiko: "0.5"
info:
  label: "Jira Engineering Issue Lookup"
  description: "Retrieves a Jira engineering issue by key, returning summary, status, and assignee."
  tags:
    - engineering
    - jira
    - lookup
    - project-management
capability:
  exposes:
    - type: mcp
      namespace: engineering
      port: 8080
      tools:
        - name: jira-lookup
          description: "Retrieves a Jira engineering issue by key, returning summary, status, and assignee."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "The identifier for the lookup."
          call: "engineering.get-record"
          with:
            id: "{{identifier}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.result"
  consumes:
    - namespace: engineering
      type: http
      baseUri: "https://siemens-s4.sap.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.sap_s4_username"
        password: "$secrets.sap_s4_password"
      resources:
        - name: records
          path: "/records"
          operations:
            - name: get-record
              method: GET

Retrieves completed sprint data from Jira, calculates velocity metrics, and publishes a sprint velocity summary to the engineering Teams channel.

naftiko: "0.5"
info:
  label: "Jira Sprint Velocity Report"
  description: "Retrieves completed sprint data from Jira, calculates velocity metrics, and publishes a sprint velocity summary to the engineering Teams channel."
  tags:
    - devops
    - agile
    - jira
    - reporting
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: agile-reporting
      port: 8080
      tools:
        - name: publish-sprint-velocity
          description: "Given a Jira board ID and sprint ID, retrieve completed issues and story points to calculate velocity. Post the summary to the engineering Teams channel. Use after each sprint close."
          inputParameters:
            - name: board_id
              in: body
              type: string
              description: "The Jira board ID (numeric)."
            - name: sprint_id
              in: body
              type: string
              description: "The Jira sprint ID to report on."
          steps:
            - name: get-sprint
              type: call
              call: "jira-sprint.get-sprint"
              with:
                board_id: "{{board_id}}"
                sprint_id: "{{sprint_id}}"
            - name: get-issues
              type: call
              call: "jira-issues.get-sprint-issues"
              with:
                sprint_id: "{{sprint_id}}"
            - name: post-report
              type: call
              call: "msteams-agile.post-message"
              with:
                channel_id: "$secrets.engineering_teams_channel"
                text: "Sprint {{get-sprint.name}} closed. Issues completed: {{get-issues.total}}. Sprint ID: {{sprint_id}}"
  consumes:
    - type: http
      namespace: jira-sprint
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: sprints
          path: "/board/{{board_id}}/sprint/{{sprint_id}}"
          inputParameters:
            - name: board_id
              in: path
            - name: sprint_id
              in: path
          operations:
            - name: get-sprint
              method: GET
    - type: http
      namespace: jira-issues
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: sprint-issues
          path: "/search"
          inputParameters:
            - name: sprint_id
              in: query
          operations:
            - name: get-sprint-issues
              method: GET
    - type: http
      namespace: msteams-agile
      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: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Tracks continuous improvement by creating Jira stories, logging in ServiceNow, and notifying the kaizen team via Teams.

naftiko: "0.5"
info:
  label: "Kaizen Improvement Tracking"
  description: "Tracks continuous improvement by creating Jira stories, logging in ServiceNow, and notifying the kaizen team via Teams."
  tags:
    - manufacturing
    - jira
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: manufacturing-ops
      port: 8080
      tools:
        - name: kaizen-improvement-tracking
          description: "Tracks continuous improvement by creating Jira stories, logging in ServiceNow, and notifying the kaizen team via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Kaizen Improvement Tracking: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Kaizen Improvement Tracking: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_manufacturing_channel_id"
                text: "Kaizen Improvement Tracking | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Publishes approved job requisitions from SAP SuccessFactors Recruiting to LinkedIn Jobs and notifies the recruiting team in Microsoft Teams when the posting goes live.

naftiko: "0.5"
info:
  label: "LinkedIn Job Posting Publisher"
  description: "Publishes approved job requisitions from SAP SuccessFactors Recruiting to LinkedIn Jobs and notifies the recruiting team in Microsoft Teams when the posting goes live."
  tags:
    - hr
    - recruiting
    - linkedin
    - sap-successfactors
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: recruiting
      port: 8080
      tools:
        - name: publish-job-posting
          description: "Given a SuccessFactors job requisition ID, retrieve the job details and publish the posting to LinkedIn. Notify the recruiting team in Teams. Use when a new requisition is approved and ready for external posting."
          inputParameters:
            - name: requisition_id
              in: body
              type: string
              description: "The SAP SuccessFactors job requisition ID."
            - name: organization_id
              in: body
              type: string
              description: "The LinkedIn organization ID to post under."
          steps:
            - name: get-requisition
              type: call
              call: "successfactors-rec.get-job-requisition"
              with:
                requisition_id: "{{requisition_id}}"
            - name: post-to-linkedin
              type: call
              call: "linkedin.create-job-posting"
              with:
                organization_id: "{{organization_id}}"
                title: "{{get-requisition.jobTitle}}"
                description: "{{get-requisition.jobDescription}}"
                location: "{{get-requisition.location}}"
            - name: notify-recruiting
              type: call
              call: "msteams-rec.post-message"
              with:
                channel_id: "$secrets.recruiting_teams_channel"
                text: "Job {{get-requisition.jobTitle}} posted to LinkedIn. LinkedIn ID: {{post-to-linkedin.postingId}}"
  consumes:
    - type: http
      namespace: successfactors-rec
      baseUri: "https://api4.successfactors.com/odata/v2"
      authentication:
        type: bearer
        token: "$secrets.successfactors_token"
      resources:
        - name: job-requisitions
          path: "/JobRequisition({{requisition_id}})"
          inputParameters:
            - name: requisition_id
              in: path
          operations:
            - name: get-job-requisition
              method: GET
    - type: http
      namespace: linkedin
      baseUri: "https://api.linkedin.com/v2"
      authentication:
        type: bearer
        token: "$secrets.linkedin_token"
      resources:
        - name: job-postings
          path: "/simpleJobPostings"
          operations:
            - name: create-job-posting
              method: POST
    - type: http
      namespace: msteams-rec
      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: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Compiles daily manufacturing KPIs from SAP, refreshes Tableau dashboard, and posts summary to Teams.

naftiko: "0.5"
info:
  label: "Manufacturing KPI Daily Digest"
  description: "Compiles daily manufacturing KPIs from SAP, refreshes Tableau dashboard, and posts summary to Teams."
  tags:
    - production
    - sap
    - tableau
    - microsoft-teams
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: production-ops
      port: 8080
      tools:
        - name: manufacturing-kpi-daily-digest
          description: "Compiles daily manufacturing KPIs from SAP, refreshes Tableau dashboard, and posts summary to Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Manufacturing KPI Daily Digest: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Manufacturing KPI Daily Digest: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_production_channel_id"
                text: "Manufacturing KPI Daily Digest | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Compiles a shift handoff report from SAP production data, ServiceNow incidents, and posts summary to Teams.

naftiko: "0.5"
info:
  label: "Manufacturing Shift Handoff Report"
  description: "Compiles a shift handoff report from SAP production data, ServiceNow incidents, and posts summary to Teams."
  tags:
    - production
    - sap
    - servicenow
    - microsoft-teams
    - manufacturing
capability:
  exposes:
    - type: mcp
      namespace: production-ops
      port: 8080
      tools:
        - name: manufacturing-shift-handoff-report
          description: "Compiles a shift handoff report from SAP production data, ServiceNow incidents, and posts summary to Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Manufacturing Shift Handoff Report: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Manufacturing Shift Handoff Report: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_production_channel_id"
                text: "Manufacturing Shift Handoff Report | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Provisions program workspace by creating Jira project, Confluence space, and Teams channel.

naftiko: "0.5"
info:
  label: "New Program Workspace Setup"
  description: "Provisions program workspace by creating Jira project, Confluence space, and Teams channel."
  tags:
    - engineering
    - jira
    - confluence
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: engineering-ops
      port: 8080
      tools:
        - name: new-program-workspace-setup
          description: "Provisions program workspace by creating Jira project, Confluence space, and Teams channel."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "New Program Workspace Setup: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "New Program Workspace Setup: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_engineering_channel_id"
                text: "New Program Workspace Setup | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

When Okta detects a suspicious login event, retrieves user details, suspends the account pending review, opens a ServiceNow security incident, and notifies the security team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Okta Suspicious Login Alert Handler"
  description: "When Okta detects a suspicious login event, retrieves user details, suspends the account pending review, opens a ServiceNow security incident, and notifies the security team in Microsoft Teams."
  tags:
    - security
    - identity
    - okta
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: security-ops
      port: 8080
      tools:
        - name: handle-suspicious-login
          description: "Given an Okta user ID and suspicious login event details, suspend the user account, open a ServiceNow security incident, and notify the security team in Teams. Use when Okta threat intelligence detects an anomalous login."
          inputParameters:
            - name: okta_user_id
              in: body
              type: string
              description: "The Okta user ID for the account with the suspicious login."
            - name: event_description
              in: body
              type: string
              description: "Description of the suspicious login event from Okta."
          steps:
            - name: suspend-user
              type: call
              call: "okta-suspend.suspend-user"
              with:
                user_id: "{{okta_user_id}}"
            - name: create-sec-incident
              type: call
              call: "servicenow-sec.create-incident"
              with:
                short_description: "Suspicious login: Okta user {{okta_user_id}}"
                category: "security"
                description: "{{event_description}}\nAccount suspended pending review."
            - name: notify-security
              type: call
              call: "msteams-sec.post-message"
              with:
                channel_id: "$secrets.security_teams_channel"
                text: "Security alert: Okta user {{okta_user_id}} suspended. ServiceNow: {{create-sec-incident.number}}. Event: {{event_description}}"
  consumes:
    - type: http
      namespace: okta-suspend
      baseUri: "https://siemens.okta.com/api/v1"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.okta_api_token"
        placement: header
      resources:
        - name: user-lifecycle
          path: "/users/{{user_id}}/lifecycle/suspend"
          inputParameters:
            - name: user_id
              in: path
          operations:
            - name: suspend-user
              method: POST
    - type: http
      namespace: servicenow-sec
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams-sec
      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: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Provisions Okta application access for a new employee based on their department and role from Workday, assigning the correct application groups and notifying IT via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Okta User Access Provisioning"
  description: "Provisions Okta application access for a new employee based on their department and role from Workday, assigning the correct application groups and notifying IT via Microsoft Teams."
  tags:
    - identity
    - security
    - okta
    - workday
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: identity-provisioning
      port: 8080
      tools:
        - name: provision-okta-access
          description: "Given a Workday employee ID, retrieve their department and role, then assign the appropriate Okta application groups. Notify IT in Teams when provisioning is complete. Use during onboarding or role changes."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "The Workday worker ID for the employee needing Okta access."
            - name: okta_group_ids
              in: body
              type: string
              description: "Comma-separated list of Okta group IDs to assign based on role."
          steps:
            - name: get-worker
              type: call
              call: "workday-okta.get-worker"
              with:
                worker_id: "{{worker_id}}"
            - name: get-okta-user
              type: call
              call: "okta-lookup.get-user-by-email"
              with:
                email: "{{get-worker.email}}"
            - name: assign-groups
              type: call
              call: "okta-groups.assign-user-to-group"
              with:
                user_id: "{{get-okta-user.id}}"
                group_ids: "{{okta_group_ids}}"
            - name: notify-it
              type: call
              call: "msteams-it.post-message"
              with:
                channel_id: "$secrets.it_teams_channel"
                text: "Okta access provisioned for {{get-worker.email}}. Groups assigned: {{okta_group_ids}}"
  consumes:
    - type: http
      namespace: workday-okta
      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: okta-lookup
      baseUri: "https://siemens.okta.com/api/v1"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.okta_api_token"
        placement: header
      resources:
        - name: users
          path: "/users"
          inputParameters:
            - name: email
              in: query
          operations:
            - name: get-user-by-email
              method: GET
    - type: http
      namespace: okta-groups
      baseUri: "https://siemens.okta.com/api/v1"
      authentication:
        type: apikey
        key: "Authorization"
        value: "$secrets.okta_api_token"
        placement: header
      resources:
        - name: group-members
          path: "/groups/{{group_id}}/users/{{user_id}}"
          inputParameters:
            - name: group_id
              in: path
            - name: user_id
              in: path
          operations:
            - name: assign-user-to-group
              method: PUT
    - type: http
      namespace: msteams-it
      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: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Retrieves the current account status of a user in Okta by email.

naftiko: "0.5"
info:
  label: "Okta User Status Check"
  description: "Retrieves the current account status of a user in Okta by email."
  tags:
    - identity
    - okta
    - security
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: identity
      port: 8080
      tools:
        - name: okta-check
          description: "Retrieves the current account status of a user in Okta by email."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "The identifier for the lookup."
          call: "identity.get-record"
          with:
            id: "{{identifier}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.result"
  consumes:
    - namespace: identity
      type: http
      baseUri: "https://siemens-s4.sap.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.sap_s4_username"
        password: "$secrets.sap_s4_password"
      resources:
        - name: records
          path: "/records"
          operations:
            - name: get-record
              method: GET

Monitors paint quality via Datadog, logs deviations in SAP QM, and alerts paint shop supervisor via Teams.

naftiko: "0.5"
info:
  label: "Paint Shop Quality Monitoring"
  description: "Monitors paint quality via Datadog, logs deviations in SAP QM, and alerts paint shop supervisor via Teams."
  tags:
    - quality
    - datadog
    - sap
    - microsoft-teams
    - manufacturing
capability:
  exposes:
    - type: mcp
      namespace: quality-ops
      port: 8080
      tools:
        - name: paint-shop-quality-monitoring
          description: "Monitors paint quality via Datadog, logs deviations in SAP QM, and alerts paint shop supervisor via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Paint Shop Quality Monitoring: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Paint Shop Quality Monitoring: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_quality_channel_id"
                text: "Paint Shop Quality Monitoring | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Monitors plant energy via Datadog, logs in ServiceNow, and alerts facilities via Teams.

naftiko: "0.5"
info:
  label: "Plant Energy Consumption Monitoring"
  description: "Monitors plant energy via Datadog, logs in ServiceNow, and alerts facilities via Teams."
  tags:
    - sustainability
    - datadog
    - servicenow
    - microsoft-teams
    - ehs
capability:
  exposes:
    - type: mcp
      namespace: sustainability-ops
      port: 8080
      tools:
        - name: plant-energy-consumption-monitoring
          description: "Monitors plant energy via Datadog, logs in ServiceNow, and alerts facilities via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Plant Energy Consumption Monitoring: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Plant Energy Consumption Monitoring: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_sustainability_channel_id"
                text: "Plant Energy Consumption Monitoring | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Triggers a Power BI dataset refresh for the monthly financial close report and notifies the finance team in Microsoft Teams when the refresh completes.

naftiko: "0.5"
info:
  label: "Power BI Finance Report Refresh"
  description: "Triggers a Power BI dataset refresh for the monthly financial close report and notifies the finance team in Microsoft Teams when the refresh completes."
  tags:
    - finance
    - analytics
    - power-bi
    - microsoft-teams
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: finance-reporting
      port: 8080
      tools:
        - name: refresh-finance-report
          description: "Given a Power BI dataset ID and workspace ID, trigger a dataset refresh and notify the finance team in Teams. Use at month-end close to ensure dashboards reflect the latest SAP data."
          inputParameters:
            - name: workspace_id
              in: body
              type: string
              description: "The Power BI workspace (group) ID containing the finance dataset."
            - name: dataset_id
              in: body
              type: string
              description: "The Power BI dataset ID to refresh."
          steps:
            - name: trigger-refresh
              type: call
              call: "powerbi.trigger-refresh"
              with:
                workspace_id: "{{workspace_id}}"
                dataset_id: "{{dataset_id}}"
            - name: notify-finance
              type: call
              call: "msteams-finance.post-message"
              with:
                channel_id: "$secrets.finance_teams_channel"
                text: "Power BI finance report refresh triggered for dataset {{dataset_id}} in workspace {{workspace_id}}."
  consumes:
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: dataset-refreshes
          path: "/groups/{{workspace_id}}/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: workspace_id
              in: path
            - name: dataset_id
              in: path
          operations:
            - name: trigger-refresh
              method: POST
    - type: http
      namespace: msteams-finance
      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: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

When Datadog detects abnormal patterns, creates SAP PM work order and alerts maintenance via Teams.

naftiko: "0.5"
info:
  label: "Predictive Maintenance Alert"
  description: "When Datadog detects abnormal patterns, creates SAP PM work order and alerts maintenance via Teams."
  tags:
    - manufacturing
    - datadog
    - sap
    - microsoft-teams
    - maintenance
capability:
  exposes:
    - type: mcp
      namespace: manufacturing-ops
      port: 8080
      tools:
        - name: predictive-maintenance-alert
          description: "When Datadog detects abnormal patterns, creates SAP PM work order and alerts maintenance via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Predictive Maintenance Alert: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Predictive Maintenance Alert: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_manufacturing_channel_id"
                text: "Predictive Maintenance Alert | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Monitors takt time via Datadog, logs deviations in SAP, and alerts production supervisor via Teams.

naftiko: "0.5"
info:
  label: "Production Line Takt Time Monitoring"
  description: "Monitors takt time via Datadog, logs deviations in SAP, and alerts production supervisor via Teams."
  tags:
    - production
    - datadog
    - sap
    - microsoft-teams
    - manufacturing
capability:
  exposes:
    - type: mcp
      namespace: production-ops
      port: 8080
      tools:
        - name: production-line-takt-time-monitoring
          description: "Monitors takt time via Datadog, logs deviations in SAP, and alerts production supervisor via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Production Line Takt Time Monitoring: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Production Line Takt Time Monitoring: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_production_channel_id"
                text: "Production Line Takt Time Monitoring | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Validates quality gate by pulling SAP QM results, checking Jira criteria, and posting status to Teams.

naftiko: "0.5"
info:
  label: "Production Quality Gate Check"
  description: "Validates quality gate by pulling SAP QM results, checking Jira criteria, and posting status to Teams."
  tags:
    - quality
    - manufacturing
    - sap
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: quality-ops
      port: 8080
      tools:
        - name: production-quality-gate-check
          description: "Validates quality gate by pulling SAP QM results, checking Jira criteria, and posting status to Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Production Quality Gate Check: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Production Quality Gate Check: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_quality_channel_id"
                text: "Production Quality Gate Check | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Initiates a quality defect investigation by creating a SAP quality notification, a Jira ticket, and alerting quality via Teams.

naftiko: "0.5"
info:
  label: "Quality Defect Investigation"
  description: "Initiates a quality defect investigation by creating a SAP quality notification, a Jira ticket, and alerting quality via Teams."
  tags:
    - quality
    - sap
    - jira
    - microsoft-teams
    - manufacturing
capability:
  exposes:
    - type: mcp
      namespace: quality-ops
      port: 8080
      tools:
        - name: quality-defect-investigation
          description: "Initiates a quality defect investigation by creating a SAP quality notification, a Jira ticket, and alerting quality via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Quality Defect Investigation: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Quality Defect Investigation: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_quality_channel_id"
                text: "Quality Defect Investigation | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Prepares for audit by collecting SharePoint documents, creating Jira checklist, and notifying compliance via Teams.

naftiko: "0.5"
info:
  label: "Regulatory Audit Preparation Workflow"
  description: "Prepares for audit by collecting SharePoint documents, creating Jira checklist, and notifying compliance via Teams."
  tags:
    - compliance
    - sharepoint
    - jira
    - microsoft-teams
    - audit
capability:
  exposes:
    - type: mcp
      namespace: compliance-ops
      port: 8080
      tools:
        - name: regulatory-audit-preparation-workflow
          description: "Prepares for audit by collecting SharePoint documents, creating Jira checklist, and notifying compliance via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Regulatory Audit Preparation Workflow: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Regulatory Audit Preparation Workflow: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_compliance_channel_id"
                text: "Regulatory Audit Preparation Workflow | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

When safety incident reported, creates ServiceNow incident, SAP EHS notification, and alerts safety via Teams.

naftiko: "0.5"
info:
  label: "Safety Incident Investigation Workflow"
  description: "When safety incident reported, creates ServiceNow incident, SAP EHS notification, and alerts safety via Teams."
  tags:
    - safety
    - servicenow
    - sap
    - microsoft-teams
    - ehs
capability:
  exposes:
    - type: mcp
      namespace: safety-ops
      port: 8080
      tools:
        - name: safety-incident-investigation-workflow
          description: "When safety incident reported, creates ServiceNow incident, SAP EHS notification, and alerts safety via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Safety Incident Investigation Workflow: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Safety Incident Investigation Workflow: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_safety_channel_id"
                text: "Safety Incident Investigation Workflow | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Fetches key account metrics from Salesforce CRM and assembles a weekly account health digest report, publishing it to the sales team's Microsoft Teams channel.

naftiko: "0.5"
info:
  label: "Salesforce Account Health Digest"
  description: "Fetches key account metrics from Salesforce CRM and assembles a weekly account health digest report, publishing it to the sales team's Microsoft Teams channel."
  tags:
    - sales
    - crm
    - salesforce
    - reporting
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: sales-reporting
      port: 8080
      tools:
        - name: digest-account-health
          description: "Given a Salesforce account ID, retrieve open opportunities, recent activities, and key metrics to produce an account health digest. Post the summary to Teams. Use for weekly account reviews."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "The Salesforce account ID (18-character Salesforce ID)."
          steps:
            - name: get-account
              type: call
              call: "salesforce-acct.get-account"
              with:
                account_id: "{{account_id}}"
            - name: get-opportunities
              type: call
              call: "salesforce-opps.query-opportunities"
              with:
                account_id: "{{account_id}}"
            - name: post-digest
              type: call
              call: "msteams-digest.post-message"
              with:
                channel_id: "$secrets.sales_teams_channel"
                text: "Account Health: {{get-account.Name}} | Open Opps: {{get-opportunities.totalSize}} | Revenue: {{get-account.AnnualRevenue}}"
  consumes:
    - type: http
      namespace: salesforce-acct
      baseUri: "https://siemens.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
    - type: http
      namespace: salesforce-opps
      baseUri: "https://siemens.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/query"
          inputParameters:
            - name: account_id
              in: query
          operations:
            - name: query-opportunities
              method: GET
    - type: http
      namespace: msteams-digest
      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: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Retrieves account details from Salesforce by account ID.

naftiko: "0.5"
info:
  label: "Salesforce Account Lookup"
  description: "Retrieves account details from Salesforce by account ID."
  tags:
    - sales
    - salesforce
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: sales
      port: 8080
      tools:
        - name: salesforce-lookup
          description: "Retrieves account details from Salesforce by account ID."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "The identifier for the lookup."
          call: "sales.get-record"
          with:
            id: "{{identifier}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.result"
  consumes:
    - namespace: sales
      type: http
      baseUri: "https://siemens-s4.sap.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.sap_s4_username"
        password: "$secrets.sap_s4_password"
      resources:
        - name: records
          path: "/records"
          operations:
            - name: get-record
              method: GET

When a new B2B customer account is created in Salesforce, creates a ServiceNow customer onboarding task, provisions a SharePoint collaboration site, and sends a welcome email via Microsoft Graph.

naftiko: "0.5"
info:
  label: "Salesforce Customer Onboarding Workflow"
  description: "When a new B2B customer account is created in Salesforce, creates a ServiceNow customer onboarding task, provisions a SharePoint collaboration site, and sends a welcome email via Microsoft Graph."
  tags:
    - sales
    - customer-onboarding
    - salesforce
    - servicenow
    - microsoft-365
capability:
  exposes:
    - type: mcp
      namespace: customer-onboarding
      port: 8080
      tools:
        - name: trigger-customer-onboarding
          description: "Given a Salesforce account ID for a new B2B customer, create a ServiceNow onboarding task, provision a SharePoint site, and send the customer a welcome email. Use when a new enterprise customer is confirmed in Salesforce."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "The Salesforce account ID for the new customer."
            - name: customer_email
              in: body
              type: string
              description: "Primary contact email address for the new customer."
          steps:
            - name: get-account
              type: call
              call: "salesforce-co.get-account"
              with:
                account_id: "{{account_id}}"
            - name: create-onboarding-task
              type: call
              call: "servicenow-co.create-task"
              with:
                short_description: "Customer onboarding: {{get-account.Name}}"
                category: "customer_onboarding"
            - name: send-welcome-email
              type: call
              call: "msgraph-mail.send-email"
              with:
                to: "{{customer_email}}"
                subject: "Welcome to Siemens - {{get-account.Name}}"
                body: "Thank you for partnering with Siemens. Your onboarding reference: {{create-onboarding-task.number}}"
  consumes:
    - type: http
      namespace: salesforce-co
      baseUri: "https://siemens.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
    - type: http
      namespace: servicenow-co
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/task"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: msgraph-mail
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/users/{{user_id}}/sendMail"
          inputParameters:
            - name: user_id
              in: path
          operations:
            - name: send-email
              method: POST

When a new lead is created in Salesforce, enriches the record with company firmographic data from ZoomInfo and updates the lead score and account mapping in Salesforce.

naftiko: "0.5"
info:
  label: "Salesforce Lead Enrichment with ZoomInfo"
  description: "When a new lead is created in Salesforce, enriches the record with company firmographic data from ZoomInfo and updates the lead score and account mapping in Salesforce."
  tags:
    - sales
    - crm
    - salesforce
    - zoominfo
    - lead-enrichment
capability:
  exposes:
    - type: mcp
      namespace: lead-enrichment
      port: 8080
      tools:
        - name: enrich-salesforce-lead
          description: "Given a Salesforce lead ID, look up the lead's company in ZoomInfo to retrieve firmographic data, then update the Salesforce lead record with enriched attributes. Use when new leads are created from web forms or campaigns."
          inputParameters:
            - name: lead_id
              in: body
              type: string
              description: "The Salesforce lead ID (18-character Salesforce ID)."
          steps:
            - name: get-lead
              type: call
              call: "salesforce-lead.get-lead"
              with:
                lead_id: "{{lead_id}}"
            - name: enrich-company
              type: call
              call: "zoominfo.search-company"
              with:
                company_name: "{{get-lead.Company}}"
                domain: "{{get-lead.Email}}"
            - name: update-lead
              type: call
              call: "salesforce-lead-update.update-lead"
              with:
                lead_id: "{{lead_id}}"
                employee_count: "{{enrich-company.employeeCount}}"
                revenue: "{{enrich-company.revenue}}"
                industry: "{{enrich-company.industry}}"
  consumes:
    - type: http
      namespace: salesforce-lead
      baseUri: "https://siemens.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: leads
          path: "/sobjects/Lead/{{lead_id}}"
          inputParameters:
            - name: lead_id
              in: path
          operations:
            - name: get-lead
              method: GET
    - type: http
      namespace: zoominfo
      baseUri: "https://api.zoominfo.com/search"
      authentication:
        type: bearer
        token: "$secrets.zoominfo_token"
      resources:
        - name: companies
          path: "/company"
          operations:
            - name: search-company
              method: POST
    - type: http
      namespace: salesforce-lead-update
      baseUri: "https://siemens.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: leads
          path: "/sobjects/Lead/{{lead_id}}"
          inputParameters:
            - name: lead_id
              in: path
          operations:
            - name: update-lead
              method: PATCH

When a Salesforce opportunity reaches Closed Won status, automatically creates a corresponding sales order in SAP S/4HANA and notifies the account team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Salesforce Opportunity to SAP Sales Order"
  description: "When a Salesforce opportunity reaches Closed Won status, automatically creates a corresponding sales order in SAP S/4HANA and notifies the account team via Microsoft Teams."
  tags:
    - sales
    - crm
    - salesforce
    - sap-s4hana
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: sales-ops
      port: 8080
      tools:
        - name: create-sales-order-from-opportunity
          description: "Given a Salesforce opportunity ID, retrieve deal details and create a SAP S/4HANA sales order. Notify the account team in Teams upon completion. Use when an opportunity moves to Closed Won."
          inputParameters:
            - name: opportunity_id
              in: body
              type: string
              description: "The Salesforce opportunity ID (18-character Salesforce ID)."
          steps:
            - name: get-opportunity
              type: call
              call: "salesforce.get-opportunity"
              with:
                opportunity_id: "{{opportunity_id}}"
            - name: create-sales-order
              type: call
              call: "sap-s4-so.create-sales-order"
              with:
                customer_id: "{{get-opportunity.AccountId}}"
                amount: "{{get-opportunity.Amount}}"
                close_date: "{{get-opportunity.CloseDate}}"
            - name: notify-account-team
              type: call
              call: "msteams-sales.post-message"
              with:
                channel_id: "$secrets.sales_teams_channel"
                text: "SAP Sales Order {{create-sales-order.orderId}} created for opportunity {{get-opportunity.Name}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://siemens.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity/{{opportunity_id}}"
          inputParameters:
            - name: opportunity_id
              in: path
          operations:
            - name: get-opportunity
              method: GET
    - type: http
      namespace: sap-s4-so
      baseUri: "https://siemens-s4.sap.com/sap/opu/odata/sap/API_SALES_ORDER_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: sales-orders
          path: "/A_SalesOrder"
          operations:
            - name: create-sales-order
              method: POST
    - type: http
      namespace: msteams-sales
      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: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Retrieves contract status from SAP Ariba by contract ID.

naftiko: "0.5"
info:
  label: "SAP Ariba Contract Status Lookup"
  description: "Retrieves contract status from SAP Ariba by contract ID."
  tags:
    - procurement
    - sap-ariba
    - contracts
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: sap-lookup
          description: "Retrieves contract status from SAP Ariba by contract ID."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "The identifier for the lookup."
          call: "procurement.get-record"
          with:
            id: "{{identifier}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.result"
  consumes:
    - namespace: procurement
      type: http
      baseUri: "https://siemens-s4.sap.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.sap_s4_username"
        password: "$secrets.sap_s4_password"
      resources:
        - name: records
          path: "/records"
          operations:
            - name: get-record
              method: GET

Retrieves pending invoices from SAP Ariba, validates them against SAP S/4HANA purchase orders, and posts invoices for payment processing. Flags discrepancies for manual review via Microsoft Teams.

naftiko: "0.5"
info:
  label: "SAP Ariba Invoice Processing"
  description: "Retrieves pending invoices from SAP Ariba, validates them against SAP S/4HANA purchase orders, and posts invoices for payment processing. Flags discrepancies for manual review via Microsoft Teams."
  tags:
    - finance
    - accounts-payable
    - sap-ariba
    - sap-s4hana
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: accounts-payable
      port: 8080
      tools:
        - name: process-ariba-invoice
          description: "Given an Ariba invoice ID, retrieve invoice details, validate against the corresponding SAP PO, and post for payment if matched. Flag mismatches in Teams for manual review. Use for automated invoice-to-PO matching."
          inputParameters:
            - name: invoice_id
              in: body
              type: string
              description: "The SAP Ariba invoice ID to process."
          steps:
            - name: get-invoice
              type: call
              call: "ariba-inv.get-invoice"
              with:
                invoice_id: "{{invoice_id}}"
            - name: get-po
              type: call
              call: "sap-s4-po.get-po"
              with:
                po_number: "{{get-invoice.poNumber}}"
            - name: notify-ap
              type: call
              call: "msteams-ap.post-message"
              with:
                channel_id: "$secrets.ap_teams_channel"
                text: "Invoice {{invoice_id}} matched to PO {{get-invoice.poNumber}}. Amount: {{get-invoice.totalAmount}} {{get-invoice.currency}}"
  consumes:
    - type: http
      namespace: ariba-inv
      baseUri: "https://openapi.ariba.com/api/invoice-management/v1"
      authentication:
        type: apikey
        key: "apikey"
        value: "$secrets.ariba_api_key"
        placement: header
      resources:
        - name: invoices
          path: "/invoices/{{invoice_id}}"
          inputParameters:
            - name: invoice_id
              in: path
          operations:
            - name: get-invoice
              method: GET
    - type: http
      namespace: sap-s4-po
      baseUri: "https://siemens-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: purchase-orders
          path: "/A_PurchaseOrder('{{po_number}}')"
          inputParameters:
            - name: po_number
              in: path
          operations:
            - name: get-po
              method: GET
    - type: http
      namespace: msteams-ap
      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: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

When a new supplier is approved in SAP Ariba, validates their profile, creates a vendor record in SAP S/4HANA, and notifies the procurement team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "SAP Ariba Supplier Onboarding"
  description: "When a new supplier is approved in SAP Ariba, validates their profile, creates a vendor record in SAP S/4HANA, and notifies the procurement team via Microsoft Teams."
  tags:
    - procurement
    - supplier-management
    - sap-ariba
    - sap-s4hana
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: supplier-onboarding
      port: 8080
      tools:
        - name: onboard-supplier
          description: "Given an Ariba supplier ID, fetch the supplier profile, create a vendor master record in SAP S/4HANA, and notify the procurement team in Teams. Use when a new supplier completes Ariba registration."
          inputParameters:
            - name: supplier_id
              in: body
              type: string
              description: "The SAP Ariba supplier registration ID."
            - name: teams_channel
              in: body
              type: string
              description: "The Microsoft Teams channel ID to notify upon completion."
          steps:
            - name: get-supplier
              type: call
              call: "ariba.get-supplier"
              with:
                supplier_id: "{{supplier_id}}"
            - name: create-vendor
              type: call
              call: "sap-s4-vendor.create-vendor"
              with:
                name: "{{get-supplier.name}}"
                country: "{{get-supplier.country}}"
                tax_id: "{{get-supplier.taxId}}"
            - name: notify-procurement
              type: call
              call: "msteams-proc.post-message"
              with:
                channel_id: "{{teams_channel}}"
                text: "Supplier {{get-supplier.name}} onboarded. SAP Vendor ID: {{create-vendor.vendorId}}"
  consumes:
    - type: http
      namespace: ariba
      baseUri: "https://openapi.ariba.com/api/supplier-registration/v1"
      authentication:
        type: apikey
        key: "apikey"
        value: "$secrets.ariba_api_key"
        placement: header
      resources:
        - name: suppliers
          path: "/suppliers/{{supplier_id}}"
          inputParameters:
            - name: supplier_id
              in: path
          operations:
            - name: get-supplier
              method: GET
    - type: http
      namespace: sap-s4-vendor
      baseUri: "https://siemens-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: vendors
          path: "/A_Supplier"
          operations:
            - name: create-vendor
              method: POST
    - type: http
      namespace: msteams-proc
      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: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Fetches pending expense reports from SAP Concur, checks approval status, and pushes approved reports to SAP S/4HANA for posting. Notifies submitters via Microsoft Teams.

naftiko: "0.5"
info:
  label: "SAP Concur Expense Report Approval Sync"
  description: "Fetches pending expense reports from SAP Concur, checks approval status, and pushes approved reports to SAP S/4HANA for posting. Notifies submitters via Microsoft Teams."
  tags:
    - finance
    - expense-management
    - sap-concur
    - sap-s4hana
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: expense-ops
      port: 8080
      tools:
        - name: sync-approved-expenses
          description: "Fetch approved expense reports from SAP Concur and post them to SAP S/4HANA for financial processing. Notify each submitter in Teams. Use at end-of-day to process the day's approved expenses."
          inputParameters:
            - name: approval_status
              in: body
              type: string
              description: "The Concur approval status to filter by (e.g., A_APPR for approved)."
          steps:
            - name: get-expense-reports
              type: call
              call: "concur.get-expense-reports"
              with:
                approvalStatusCode: "{{approval_status}}"
            - name: post-to-sap
              type: call
              call: "sap-s4-fi.post-document"
              with:
                document_type: "KR"
                reference: "{{get-expense-reports.ID}}"
                amount: "{{get-expense-reports.Total}}"
            - name: notify-submitter
              type: call
              call: "msteams-expense.post-message"
              with:
                channel_id: "$secrets.finance_teams_channel"
                text: "Expense report {{get-expense-reports.Name}} approved and posted to SAP. Amount: {{get-expense-reports.Total}}"
  consumes:
    - type: http
      namespace: concur
      baseUri: "https://www.concursolutions.com/api/v3.0"
      authentication:
        type: bearer
        token: "$secrets.concur_token"
      resources:
        - name: expense-reports
          path: "/expense/reports"
          inputParameters:
            - name: approvalStatusCode
              in: query
          operations:
            - name: get-expense-reports
              method: GET
    - type: http
      namespace: sap-s4-fi
      baseUri: "https://siemens-s4.sap.com/sap/opu/odata/sap/API_JOURNALENTRYITEMBASIC_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: journal-entries
          path: "/A_JournalEntry"
          operations:
            - name: post-document
              method: POST
    - type: http
      namespace: msteams-expense
      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: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Checks current inventory stock levels for a material at a plant in SAP S/4HANA.

naftiko: "0.5"
info:
  label: "SAP Inventory Stock Level Check"
  description: "Checks current inventory stock levels for a material at a plant in SAP S/4HANA."
  tags:
    - supply-chain
    - sap
    - sap-s4hana
    - inventory
capability:
  exposes:
    - type: mcp
      namespace: supply-chain
      port: 8080
      tools:
        - name: sap-check
          description: "Checks current inventory stock levels for a material at a plant in SAP S/4HANA."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "The identifier for the lookup."
          call: "supply-chain.get-record"
          with:
            id: "{{identifier}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.result"
  consumes:
    - namespace: supply-chain
      type: http
      baseUri: "https://siemens-s4.sap.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.sap_s4_username"
        password: "$secrets.sap_s4_password"
      resources:
        - name: records
          path: "/records"
          operations:
            - name: get-record
              method: GET

Retrieves material master data from SAP S/4HANA by material number.

naftiko: "0.5"
info:
  label: "SAP Material Master Lookup"
  description: "Retrieves material master data from SAP S/4HANA by material number."
  tags:
    - procurement
    - sap
    - sap-s4hana
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: sap-lookup
          description: "Retrieves material master data from SAP S/4HANA by material number."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "The identifier for the lookup."
          call: "procurement.get-record"
          with:
            id: "{{identifier}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.result"
  consumes:
    - namespace: procurement
      type: http
      baseUri: "https://siemens-s4.sap.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.sap_s4_username"
        password: "$secrets.sap_s4_password"
      resources:
        - name: records
          path: "/records"
          operations:
            - name: get-record
              method: GET

Runs MRP exception analysis, creates Jira procurement tasks, and alerts supply chain via Teams.

naftiko: "0.5"
info:
  label: "SAP Material Requirements Planning Alert"
  description: "Runs MRP exception analysis, creates Jira procurement tasks, and alerts supply chain via Teams."
  tags:
    - supply-chain
    - sap
    - jira
    - microsoft-teams
    - procurement
capability:
  exposes:
    - type: mcp
      namespace: supply-chain-ops
      port: 8080
      tools:
        - name: sap-material-requirements-planning-alert
          description: "Runs MRP exception analysis, creates Jira procurement tasks, and alerts supply chain via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "SAP Material Requirements Planning Alert: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "SAP Material Requirements Planning Alert: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_supply-chain_channel_id"
                text: "SAP Material Requirements Planning Alert | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Retrieves a plant maintenance work order from SAP.

naftiko: "0.5"
info:
  label: "SAP Plant Maintenance Work Order Lookup"
  description: "Retrieves a plant maintenance work order from SAP."
  tags:
    - manufacturing
    - plant-maintenance
    - sap
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: manufacturing
      port: 8080
      tools:
        - name: sap-lookup
          description: "Retrieves a plant maintenance work order from SAP."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "The identifier for the lookup."
          call: "manufacturing.get-record"
          with:
            id: "{{identifier}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.result"
  consumes:
    - namespace: manufacturing
      type: http
      baseUri: "https://siemens-s4.sap.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.sap_s4_username"
        password: "$secrets.sap_s4_password"
      resources:
        - name: records
          path: "/records"
          operations:
            - name: get-record
              method: GET

Retrieves the status of a production order from SAP S/4HANA.

naftiko: "0.5"
info:
  label: "SAP Production Order Status"
  description: "Retrieves the status of a production order from SAP S/4HANA."
  tags:
    - production
    - sap
    - sap-s4hana
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: production
      port: 8080
      tools:
        - name: sap-status
          description: "Retrieves the status of a production order from SAP S/4HANA."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "The identifier for the lookup."
          call: "production.get-record"
          with:
            id: "{{identifier}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.result"
  consumes:
    - namespace: production
      type: http
      baseUri: "https://siemens-s4.sap.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.sap_s4_username"
        password: "$secrets.sap_s4_password"
      resources:
        - name: records
          path: "/records"
          operations:
            - name: get-record
              method: GET

At financial period close, validates that all required SAP S/4HANA journal entries are posted, retrieves period balance summary, and notifies the controller team in Microsoft Teams with a close status report.

naftiko: "0.5"
info:
  label: "SAP S/4HANA Financial Period Close Checklist"
  description: "At financial period close, validates that all required SAP S/4HANA journal entries are posted, retrieves period balance summary, and notifies the controller team in Microsoft Teams with a close status report."
  tags:
    - finance
    - period-close
    - sap-s4hana
    - microsoft-teams
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: finance-close
      port: 8080
      tools:
        - name: run-period-close-check
          description: "Given a fiscal year and posting period, validate that all journal entries are complete in SAP S/4HANA and post a period close status report to the controller Teams channel. Use at the end of each fiscal month."
          inputParameters:
            - name: fiscal_year
              in: body
              type: string
              description: "The SAP fiscal year (e.g., 2026)."
            - name: posting_period
              in: body
              type: string
              description: "The SAP posting period number (01-12)."
            - name: company_code
              in: body
              type: string
              description: "The SAP company code (e.g., 0001)."
          steps:
            - name: get-period-balance
              type: call
              call: "sap-s4-gl.get-gl-account-balance"
              with:
                fiscal_year: "{{fiscal_year}}"
                posting_period: "{{posting_period}}"
                company_code: "{{company_code}}"
            - name: post-close-report
              type: call
              call: "msteams-controller.post-message"
              with:
                channel_id: "$secrets.controller_teams_channel"
                text: "Period close check: FY{{fiscal_year}} Period {{posting_period}} Company {{company_code}}. Balance: {{get-period-balance.closingBalance}}"
  consumes:
    - type: http
      namespace: sap-s4-gl
      baseUri: "https://siemens-s4.sap.com/sap/opu/odata/sap/API_GLACCOUNT_BALANCE_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: gl-balances
          path: "/A_GLAccountBalance"
          inputParameters:
            - name: fiscal_year
              in: query
            - name: posting_period
              in: query
            - name: company_code
              in: query
          operations:
            - name: get-gl-account-balance
              method: GET
    - type: http
      namespace: msteams-controller
      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: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Looks up a SAP S/4HANA purchase order by PO number and returns header status, vendor, total value, and open line items for procurement review.

naftiko: "0.5"
info:
  label: "SAP S/4HANA Purchase Order Lookup"
  description: "Looks up a SAP S/4HANA purchase order by PO number and returns header status, vendor, total value, and open line items for procurement review."
  tags:
    - finance
    - procurement
    - sap-s4hana
    - erp
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: get-purchase-order
          description: "Given a SAP S/4HANA PO number, return the purchase order header status, vendor name, total amount, and currency. Use for procurement approvals and spend visibility."
          inputParameters:
            - name: po_number
              in: body
              type: string
              description: "The SAP purchase order number (e.g., 4500012345)."
          call: "sap-s4.get-po"
          with:
            po_number: "{{po_number}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.d.OverallStatus"
            - name: vendor
              type: string
              mapping: "$.d.Supplier"
            - name: total_amount
              type: string
              mapping: "$.d.TotalNetAmount"
            - name: currency
              type: string
              mapping: "$.d.DocumentCurrency"
  consumes:
    - type: http
      namespace: sap-s4
      baseUri: "https://siemens-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: purchase-orders
          path: "/A_PurchaseOrder('{{po_number}}')"
          inputParameters:
            - name: po_number
              in: path
          operations:
            - name: get-po
              method: GET
              outputRawFormat: xml

Assigns mandatory compliance training in SAP SuccessFactors Learning to employees based on their role and department, and sends a Teams reminder with the training deadline.

naftiko: "0.5"
info:
  label: "SAP SuccessFactors Learning Assignment"
  description: "Assigns mandatory compliance training in SAP SuccessFactors Learning to employees based on their role and department, and sends a Teams reminder with the training deadline."
  tags:
    - hr
    - learning
    - sap-successfactors
    - microsoft-teams
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: learning-ops
      port: 8080
      tools:
        - name: assign-compliance-training
          description: "Given an employee ID, course ID, and due date, assign the compliance training in SAP SuccessFactors Learning and send the employee a Teams reminder. Use for regulatory or annual compliance training rollouts."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The SAP SuccessFactors employee ID."
            - name: course_id
              in: body
              type: string
              description: "The SuccessFactors Learning course ID to assign."
            - name: due_date
              in: body
              type: string
              description: "The training completion due date in ISO 8601 format."
          steps:
            - name: assign-course
              type: call
              call: "successfactors-lms.assign-learning"
              with:
                employee_id: "{{employee_id}}"
                course_id: "{{course_id}}"
                due_date: "{{due_date}}"
            - name: get-employee-email
              type: call
              call: "successfactors-lms-profile.get-employee"
              with:
                employee_id: "{{employee_id}}"
            - name: send-reminder
              type: call
              call: "msteams-lms.post-message"
              with:
                channel_id: "$secrets.hr_teams_channel"
                text: "Training assigned to employee {{employee_id}}: Course {{course_id}} due by {{due_date}}"
  consumes:
    - type: http
      namespace: successfactors-lms
      baseUri: "https://api4.successfactors.com/odata/v2"
      authentication:
        type: bearer
        token: "$secrets.successfactors_token"
      resources:
        - name: learning-assignments
          path: "/LearningAssignment"
          operations:
            - name: assign-learning
              method: POST
    - type: http
      namespace: successfactors-lms-profile
      baseUri: "https://api4.successfactors.com/odata/v2"
      authentication:
        type: bearer
        token: "$secrets.successfactors_token"
      resources:
        - name: employees
          path: "/PerPerson({{employee_id}})"
          inputParameters:
            - name: employee_id
              in: path
          operations:
            - name: get-employee
              method: GET
    - type: http
      namespace: msteams-lms
      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: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Retrieves vendor master data from SAP by vendor number.

naftiko: "0.5"
info:
  label: "SAP Vendor Master Lookup"
  description: "Retrieves vendor master data from SAP by vendor number."
  tags:
    - procurement
    - sap
    - sap-s4hana
    - vendor
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: sap-lookup
          description: "Retrieves vendor master data from SAP by vendor number."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "The identifier for the lookup."
          call: "procurement.get-record"
          with:
            id: "{{identifier}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.result"
  consumes:
    - namespace: procurement
      type: http
      baseUri: "https://siemens-s4.sap.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.sap_s4_username"
        password: "$secrets.sap_s4_password"
      resources:
        - name: records
          path: "/records"
          operations:
            - name: get-record
              method: GET

Retrieves IT asset details from ServiceNow CMDB by asset tag.

naftiko: "0.5"
info:
  label: "ServiceNow IT Asset Lookup"
  description: "Retrieves IT asset details from ServiceNow CMDB by asset tag."
  tags:
    - it-operations
    - servicenow
    - cmdb
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: it-operations
      port: 8080
      tools:
        - name: servicenow-lookup
          description: "Retrieves IT asset details from ServiceNow CMDB by asset tag."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "The identifier for the lookup."
          call: "it-operations.get-record"
          with:
            id: "{{identifier}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.result"
  consumes:
    - namespace: it-operations
      type: http
      baseUri: "https://siemens-s4.sap.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.sap_s4_username"
        password: "$secrets.sap_s4_password"
      resources:
        - name: records
          path: "/records"
          operations:
            - name: get-record
              method: GET

Creates a ServiceNow change request for planned infrastructure changes, routes it for approval, and notifies stakeholders in Microsoft Teams when approval status changes.

naftiko: "0.5"
info:
  label: "ServiceNow Change Request Approval Workflow"
  description: "Creates a ServiceNow change request for planned infrastructure changes, routes it for approval, and notifies stakeholders in Microsoft Teams when approval status changes."
  tags:
    - itsm
    - change-management
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: change-mgmt
      port: 8080
      tools:
        - name: create-change-request
          description: "Given a change summary, affected CI, implementation plan, and risk level, create a ServiceNow change request and notify the approver in Teams. Use to initiate controlled infrastructure change processes."
          inputParameters:
            - name: short_description
              in: body
              type: string
              description: "Brief summary of the planned change."
            - name: risk
              in: body
              type: string
              description: "Risk level: low, medium, or high."
            - name: assignment_group
              in: body
              type: string
              description: "The ServiceNow assignment group responsible for the change."
          steps:
            - name: create-cr
              type: call
              call: "servicenow-cr.create-change"
              with:
                short_description: "{{short_description}}"
                risk: "{{risk}}"
                assignment_group: "{{assignment_group}}"
            - name: notify-approvers
              type: call
              call: "msteams-change.post-message"
              with:
                channel_id: "$secrets.change_teams_channel"
                text: "Change request {{create-cr.number}} submitted. Risk: {{risk}}. Summary: {{short_description}}"
  consumes:
    - type: http
      namespace: servicenow-cr
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: change-requests
          path: "/table/change_request"
          operations:
            - name: create-change
              method: POST
    - type: http
      namespace: msteams-change
      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: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

When a critical P1 ServiceNow incident is raised for a digital platform, automatically creates a linked Jira bug, assigns it to the on-call engineering squad, and posts an alert to the Microsoft Teams ops channel.

naftiko: "0.5"
info:
  label: "ServiceNow Incident to Jira Bug Escalation"
  description: "When a critical P1 ServiceNow incident is raised for a digital platform, automatically creates a linked Jira bug, assigns it to the on-call engineering squad, and posts an alert to the Microsoft Teams ops channel."
  tags:
    - itsm
    - incident-response
    - servicenow
    - jira
    - microsoft-teams
    - devops
capability:
  exposes:
    - type: mcp
      namespace: incident-ops
      port: 8080
      tools:
        - name: escalate-incident
          description: "Given a ServiceNow P1 incident number, create a corresponding Jira bug for engineering triage and post an alert to the Teams operations channel. Use when critical incidents require engineering escalation."
          inputParameters:
            - name: incident_number
              in: body
              type: string
              description: "The ServiceNow incident number (e.g., INC0012345)."
            - name: jira_project_key
              in: body
              type: string
              description: "The Jira project key where the bug should be created (e.g., DOPS)."
          steps:
            - name: get-incident
              type: call
              call: "servicenow-inc.get-incident"
              with:
                number: "{{incident_number}}"
            - name: create-bug
              type: call
              call: "jira.create-issue"
              with:
                project_key: "{{jira_project_key}}"
                issuetype: "Bug"
                summary: "[P1] {{get-incident.short_description}}"
                description: "ServiceNow: {{incident_number}}\nImpact: {{get-incident.impact}}\nDescription: {{get-incident.description}}"
            - name: post-alert
              type: call
              call: "msteams-ops.post-message"
              with:
                channel_id: "$secrets.ops_teams_channel"
                text: "P1 Incident {{incident_number}} escalated. Jira: {{create-bug.key}}"
  consumes:
    - type: http
      namespace: servicenow-inc
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          inputParameters:
            - name: number
              in: query
          operations:
            - name: get-incident
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://siemens.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-ops
      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: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Retrieves a quality document from SharePoint by document ID.

naftiko: "0.5"
info:
  label: "SharePoint Quality Document Retrieval"
  description: "Retrieves a quality document from SharePoint by document ID."
  tags:
    - quality
    - sharepoint
    - document-management
capability:
  exposes:
    - type: mcp
      namespace: quality
      port: 8080
      tools:
        - name: sharepoint-retrieval
          description: "Retrieves a quality document from SharePoint by document ID."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "The identifier for the lookup."
          call: "quality.get-record"
          with:
            id: "{{identifier}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.result"
  consumes:
    - namespace: quality
      type: http
      baseUri: "https://siemens-s4.sap.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.sap_s4_username"
        password: "$secrets.sap_s4_password"
      resources:
        - name: records
          path: "/records"
          operations:
            - name: get-record
              method: GET

Queries Snowflake for failed or stalled data pipeline tasks, surfaces anomalies, and opens a ServiceNow incident if critical failures are detected.

naftiko: "0.5"
info:
  label: "Snowflake Data Pipeline Health Check"
  description: "Queries Snowflake for failed or stalled data pipeline tasks, surfaces anomalies, and opens a ServiceNow incident if critical failures are detected."
  tags:
    - data
    - analytics
    - snowflake
    - servicenow
    - monitoring
capability:
  exposes:
    - type: mcp
      namespace: data-ops
      port: 8080
      tools:
        - name: check-pipeline-health
          description: "Query Snowflake task history for failures in the last N hours. If critical failures are found, open a ServiceNow incident automatically. Use for scheduled data pipeline health monitoring."
          inputParameters:
            - name: lookback_hours
              in: body
              type: integer
              description: "Number of hours to look back in Snowflake task history (e.g., 24)."
            - name: database
              in: body
              type: string
              description: "The Snowflake database to query for task failures."
          steps:
            - name: query-failures
              type: call
              call: "snowflake.query-task-history"
              with:
                database: "{{database}}"
                lookback_hours: "{{lookback_hours}}"
            - name: create-incident
              type: call
              call: "servicenow-data.create-incident"
              with:
                short_description: "Snowflake pipeline failures detected in {{database}}"
                category: "data_engineering"
                description: "Failed tasks detected over last {{lookback_hours}} hours."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://siemens.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: task-history
          path: "/databases/{{database}}/schemas/INFORMATION_SCHEMA/task-history"
          inputParameters:
            - name: database
              in: path
          operations:
            - name: query-task-history
              method: GET
    - type: http
      namespace: servicenow-data
      baseUri: "https://siemens.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

Runs data quality checks against key Snowflake tables, reports anomalies in row counts or null rates, and opens a Jira data engineering ticket when thresholds are breached.

naftiko: "0.5"
info:
  label: "Snowflake Data Quality Monitor"
  description: "Runs data quality checks against key Snowflake tables, reports anomalies in row counts or null rates, and opens a Jira data engineering ticket when thresholds are breached."
  tags:
    - data
    - data-quality
    - snowflake
    - jira
    - monitoring
capability:
  exposes:
    - type: mcp
      namespace: data-quality
      port: 8080
      tools:
        - name: run-data-quality-check
          description: "Given a Snowflake table name and quality threshold parameters, run row count and null-rate checks. If anomalies exceed thresholds, open a Jira ticket for the data engineering team. Use on a scheduled basis for critical data assets."
          inputParameters:
            - name: table_name
              in: body
              type: string
              description: "Fully qualified Snowflake table name (DATABASE.SCHEMA.TABLE)."
            - name: min_row_count
              in: body
              type: integer
              description: "Minimum expected row count; alert if below this threshold."
          steps:
            - name: check-row-count
              type: call
              call: "snowflake-dq.query-row-count"
              with:
                table_name: "{{table_name}}"
            - name: create-ticket
              type: call
              call: "jira-dq.create-issue"
              with:
                project_key: "DATA"
                issuetype: "Bug"
                summary: "Data quality failure: {{table_name}} row count below threshold"
                description: "Table: {{table_name}}\nExpected minimum: {{min_row_count}}\nActual: {{check-row-count.rowCount}}"
  consumes:
    - type: http
      namespace: snowflake-dq
      baseUri: "https://siemens.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: query
          path: "/statements"
          operations:
            - name: query-row-count
              method: POST
    - type: http
      namespace: jira-dq
      baseUri: "https://siemens.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

Searches Splunk for security events matching a query.

naftiko: "0.5"
info:
  label: "Splunk Security Event Search"
  description: "Searches Splunk for security events matching a query."
  tags:
    - security
    - splunk
    - search
    - monitoring
capability:
  exposes:
    - type: mcp
      namespace: security
      port: 8080
      tools:
        - name: splunk-search
          description: "Searches Splunk for security events matching a query."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "The identifier for the lookup."
          call: "security.get-record"
          with:
            id: "{{identifier}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.result"
  consumes:
    - namespace: security
      type: http
      baseUri: "https://siemens-s4.sap.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.sap_s4_username"
        password: "$secrets.sap_s4_password"
      resources:
        - name: records
          path: "/records"
          operations:
            - name: get-record
              method: GET

Onboards a new supplier by creating a SAP vendor record, Salesforce account, ServiceNow task, and notifying procurement via Teams.

naftiko: "0.5"
info:
  label: "Supplier Onboarding Orchestration"
  description: "Onboards a new supplier by creating a SAP vendor record, Salesforce account, ServiceNow task, and notifying procurement via Teams."
  tags:
    - procurement
    - sap
    - salesforce
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: procurement-ops
      port: 8080
      tools:
        - name: supplier-onboarding-orchestration
          description: "Onboards a new supplier by creating a SAP vendor record, Salesforce account, ServiceNow task, and notifying procurement via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Supplier Onboarding Orchestration: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Supplier Onboarding Orchestration: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_procurement_channel_id"
                text: "Supplier Onboarding Orchestration | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Initiates a supplier quality audit by pulling vendor data from SAP, creating a Jira task, and notifying quality via Teams.

naftiko: "0.5"
info:
  label: "Supplier Quality Audit Workflow"
  description: "Initiates a supplier quality audit by pulling vendor data from SAP, creating a Jira task, and notifying quality via Teams."
  tags:
    - quality
    - supply-chain
    - sap
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: quality-ops
      port: 8080
      tools:
        - name: supplier-quality-audit-workflow
          description: "Initiates a supplier quality audit by pulling vendor data from SAP, creating a Jira task, and notifying quality via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Supplier Quality Audit Workflow: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Supplier Quality Audit Workflow: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_quality_channel_id"
                text: "Supplier Quality Audit Workflow | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

When a supply chain disruption is detected, creates a Jira incident, flags SAP purchase orders, and notifies procurement via Teams.

naftiko: "0.5"
info:
  label: "Supply Chain Disruption Alert"
  description: "When a supply chain disruption is detected, creates a Jira incident, flags SAP purchase orders, and notifies procurement via Teams."
  tags:
    - supply-chain
    - jira
    - sap
    - microsoft-teams
    - procurement
capability:
  exposes:
    - type: mcp
      namespace: supply-chain-ops
      port: 8080
      tools:
        - name: supply-chain-disruption-alert
          description: "When a supply chain disruption is detected, creates a Jira incident, flags SAP purchase orders, and notifies procurement via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Supply Chain Disruption Alert: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Supply Chain Disruption Alert: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_supply-chain_channel_id"
                text: "Supply Chain Disruption Alert | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Triggers a refresh of a Tableau analytics dashboard.

naftiko: "0.5"
info:
  label: "Tableau Dashboard Refresh"
  description: "Triggers a refresh of a Tableau analytics dashboard."
  tags:
    - analytics
    - tableau
    - dashboard
capability:
  exposes:
    - type: mcp
      namespace: analytics
      port: 8080
      tools:
        - name: tableau-refresh
          description: "Triggers a refresh of a Tableau analytics dashboard."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "The identifier for the lookup."
          call: "analytics.get-record"
          with:
            id: "{{identifier}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.result"
  consumes:
    - namespace: analytics
      type: http
      baseUri: "https://siemens-s4.sap.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.sap_s4_username"
        password: "$secrets.sap_s4_password"
      resources:
        - name: records
          path: "/records"
          operations:
            - name: get-record
              method: GET

Provisions a new Terraform Cloud workspace for an engineering team, seeds the workspace with required variable sets, and notifies the requestor via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Terraform Cloud Workspace Provisioning"
  description: "Provisions a new Terraform Cloud workspace for an engineering team, seeds the workspace with required variable sets, and notifies the requestor via Microsoft Teams."
  tags:
    - cloud
    - infrastructure
    - terraform
    - devops
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: infra-provisioning
      port: 8080
      tools:
        - name: provision-terraform-workspace
          description: "Given an organization name, workspace name, and variable set IDs, create a new Terraform Cloud workspace and attach variable sets. Notify the requesting team in Teams when done. Use for self-service infrastructure provisioning."
          inputParameters:
            - name: org_name
              in: body
              type: string
              description: "The Terraform Cloud organization name."
            - name: workspace_name
              in: body
              type: string
              description: "The new workspace name to create."
            - name: project_id
              in: body
              type: string
              description: "The Terraform Cloud project ID to associate the workspace with."
          steps:
            - name: create-workspace
              type: call
              call: "terraform.create-workspace"
              with:
                org_name: "{{org_name}}"
                workspace_name: "{{workspace_name}}"
                project_id: "{{project_id}}"
            - name: notify-team
              type: call
              call: "msteams-infra.post-message"
              with:
                channel_id: "$secrets.infra_teams_channel"
                text: "Terraform workspace {{workspace_name}} created in org {{org_name}}. ID: {{create-workspace.workspaceId}}"
  consumes:
    - type: http
      namespace: terraform
      baseUri: "https://app.terraform.io/api/v2"
      authentication:
        type: bearer
        token: "$secrets.terraform_token"
      resources:
        - name: workspaces
          path: "/organizations/{{org_name}}/workspaces"
          inputParameters:
            - name: org_name
              in: path
          operations:
            - name: create-workspace
              method: POST
    - type: http
      namespace: msteams-infra
      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: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

Checks SAP PM for calibration due dates, creates ServiceNow reminders, and alerts tool managers via Teams.

naftiko: "0.5"
info:
  label: "Tooling Calibration Due Alert"
  description: "Checks SAP PM for calibration due dates, creates ServiceNow reminders, and alerts tool managers via Teams."
  tags:
    - manufacturing
    - sap
    - servicenow
    - microsoft-teams
    - tooling
capability:
  exposes:
    - type: mcp
      namespace: manufacturing-ops
      port: 8080
      tools:
        - name: tooling-calibration-due-alert
          description: "Checks SAP PM for calibration due dates, creates ServiceNow reminders, and alerts tool managers via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Tooling Calibration Due Alert: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Tooling Calibration Due Alert: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_manufacturing_channel_id"
                text: "Tooling Calibration Due Alert | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Verifies emissions compliance from SAP QM data, checks SharePoint limits, and logs in ServiceNow.

naftiko: "0.5"
info:
  label: "Vehicle Emissions Compliance Check"
  description: "Verifies emissions compliance from SAP QM data, checks SharePoint limits, and logs in ServiceNow."
  tags:
    - compliance
    - sap
    - sharepoint
    - servicenow
    - automotive
capability:
  exposes:
    - type: mcp
      namespace: compliance-ops
      port: 8080
      tools:
        - name: vehicle-emissions-compliance-check
          description: "Verifies emissions compliance from SAP QM data, checks SharePoint limits, and logs in ServiceNow."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Vehicle Emissions Compliance Check: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Vehicle Emissions Compliance Check: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_compliance_channel_id"
                text: "Vehicle Emissions Compliance Check | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Manages recall by identifying VINs in Salesforce, creating SAP quality notification, and alerting recall team via Teams.

naftiko: "0.5"
info:
  label: "Vehicle Recall Notification Workflow"
  description: "Manages recall by identifying VINs in Salesforce, creating SAP quality notification, and alerting recall team via Teams."
  tags:
    - quality
    - salesforce
    - sap
    - microsoft-teams
    - automotive
capability:
  exposes:
    - type: mcp
      namespace: quality-ops
      port: 8080
      tools:
        - name: vehicle-recall-notification-workflow
          description: "Manages recall by identifying VINs in Salesforce, creating SAP quality notification, and alerting recall team via Teams."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Vehicle Recall Notification Workflow: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Vehicle Recall Notification Workflow: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_quality_channel_id"
                text: "Vehicle Recall Notification Workflow | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Compiles vendor scorecard from SAP data, aggregates in Snowflake, and publishes to Tableau.

naftiko: "0.5"
info:
  label: "Vendor Performance Scorecard Generation"
  description: "Compiles vendor scorecard from SAP data, aggregates in Snowflake, and publishes to Tableau."
  tags:
    - supply-chain
    - sap
    - snowflake
    - tableau
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: supply-chain-ops
      port: 8080
      tools:
        - name: vendor-performance-scorecard-generation
          description: "Compiles vendor scorecard from SAP data, aggregates in Snowflake, and publishes to Tableau."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Vendor Performance Scorecard Generation: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Vendor Performance Scorecard Generation: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_supply-chain_channel_id"
                text: "Vendor Performance Scorecard Generation | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST

Retrieves an employee profile from Workday by employee ID.

naftiko: "0.5"
info:
  label: "Workday Employee Profile Lookup"
  description: "Retrieves an employee profile from Workday by employee ID."
  tags:
    - hr
    - workday
    - lookup
    - employee
capability:
  exposes:
    - type: mcp
      namespace: hr
      port: 8080
      tools:
        - name: workday-lookup
          description: "Retrieves an employee profile from Workday by employee ID."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "The identifier for the lookup."
          call: "hr.get-record"
          with:
            id: "{{identifier}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.result"
  consumes:
    - namespace: hr
      type: http
      baseUri: "https://siemens-s4.sap.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.sap_s4_username"
        password: "$secrets.sap_s4_password"
      resources:
        - name: records
          path: "/records"
          operations:
            - name: get-record
              method: GET

When an employee termination is processed in Workday, deactivates the Microsoft 365 account via Graph API, closes open ServiceNow tickets assigned to the user, and notifies HR via Teams.

naftiko: "0.5"
info:
  label: "Workday Offboarding Orchestrator"
  description: "When an employee termination is processed in Workday, deactivates the Microsoft 365 account via Graph API, closes open ServiceNow tickets assigned to the user, and notifies HR via Teams."
  tags:
    - hr
    - offboarding
    - workday
    - microsoft-365
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: hr-offboarding
      port: 8080
      tools:
        - name: trigger-offboarding
          description: "Given a Workday worker ID and termination date, deactivate the employee's Microsoft 365 account, close their open ServiceNow tickets, and notify HR in Teams. Use when a termination is confirmed in Workday."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "The Workday worker ID for the departing employee."
            - name: termination_date
              in: body
              type: string
              description: "The effective termination date in ISO 8601 format."
          steps:
            - name: get-worker
              type: call
              call: "workday-offboard.get-worker"
              with:
                worker_id: "{{worker_id}}"
            - name: disable-account
              type: call
              call: "msgraph-offboard.disable-user"
              with:
                user_id: "{{get-worker.email}}"
            - name: notify-hr
              type: call
              call: "msteams-hr.post-message"
              with:
                channel_id: "$secrets.hr_teams_channel"
                text: "Offboarding complete for {{get-worker.firstName}} {{get-worker.lastName}}. Account disabled. Termination date: {{termination_date}}"
  consumes:
    - type: http
      namespace: workday-offboard
      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: msgraph-offboard
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: users
          path: "/users/{{user_id}}"
          inputParameters:
            - name: user_id
              in: path
          operations:
            - name: disable-user
              method: PATCH
    - type: http
      namespace: msteams-hr
      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: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

At payroll period close, pulls headcount and compensation data from Workday and publishes a period summary to the finance team's Microsoft Teams channel for review.

naftiko: "0.5"
info:
  label: "Workday Payroll Period Close Snapshot"
  description: "At payroll period close, pulls headcount and compensation data from Workday and publishes a period summary to the finance team's Microsoft Teams channel for review."
  tags:
    - hr
    - finance
    - payroll
    - workday
    - microsoft-teams
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: payroll-reporting
      port: 8080
      tools:
        - name: publish-payroll-period-snapshot
          description: "Given a Workday payroll period ID, retrieve headcount and total compensation figures and publish a period close summary to the finance Teams channel. Use at the end of each payroll period."
          inputParameters:
            - name: period_id
              in: body
              type: string
              description: "The Workday payroll period ID to report on."
            - name: company_code
              in: body
              type: string
              description: "The Workday company code (e.g., Siemens AG Germany)."
          steps:
            - name: get-payroll-data
              type: call
              call: "workday-payroll.get-payroll-results"
              with:
                period_id: "{{period_id}}"
                company_code: "{{company_code}}"
            - name: post-summary
              type: call
              call: "msteams-payroll.post-message"
              with:
                channel_id: "$secrets.finance_teams_channel"
                text: "Payroll period {{period_id}} closed. Total headcount: {{get-payroll-data.headcount}}. Total compensation: {{get-payroll-data.totalCompensation}}"
  consumes:
    - type: http
      namespace: workday-payroll
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: payroll-results
          path: "/payrollResults"
          inputParameters:
            - name: period_id
              in: query
            - name: company_code
              in: query
          operations:
            - name: get-payroll-results
              method: GET
    - type: http
      namespace: msteams-payroll
      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: channel_id
              in: path
          operations:
            - name: post-message
              method: POST

When an employee position or department change is processed in Workday, updates the corresponding user profile in SAP SuccessFactors and syncs the new org unit in Active Directory via Microsoft Graph.

naftiko: "0.5"
info:
  label: "Workday Position Change Sync"
  description: "When an employee position or department change is processed in Workday, updates the corresponding user profile in SAP SuccessFactors and syncs the new org unit in Active Directory via Microsoft Graph."
  tags:
    - hr
    - role-change
    - workday
    - sap-successfactors
    - microsoft-graph
capability:
  exposes:
    - type: mcp
      namespace: hr-position-sync
      port: 8080
      tools:
        - name: sync-position-change
          description: "Given a Workday worker ID and new position details, update the employee's profile in SAP SuccessFactors and sync the department/role in Azure Active Directory. Use after a position change is approved in Workday."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "The Workday worker ID for the employee."
            - name: new_position_id
              in: body
              type: string
              description: "The new Workday position ID being assigned."
            - name: effective_date
              in: body
              type: string
              description: "Effective date of the position change in ISO 8601 format."
          steps:
            - name: get-worker
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{worker_id}}"
            - name: update-sf-profile
              type: call
              call: "successfactors-update.update-employee"
              with:
                employee_id: "{{get-worker.externalId}}"
                department: "{{get-worker.department}}"
                job_title: "{{get-worker.jobTitle}}"
            - name: update-aad-user
              type: call
              call: "msgraph-hr.update-user"
              with:
                user_id: "{{get-worker.email}}"
                department: "{{get-worker.department}}"
                job_title: "{{get-worker.jobTitle}}"
  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: successfactors-update
      baseUri: "https://api4.successfactors.com/odata/v2"
      authentication:
        type: bearer
        token: "$secrets.successfactors_token"
      resources:
        - name: employees
          path: "/PerPerson({{employee_id}})"
          inputParameters:
            - name: employee_id
              in: path
          operations:
            - name: update-employee
              method: PATCH
    - type: http
      namespace: msgraph-hr
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: users
          path: "/users/{{user_id}}"
          inputParameters:
            - name: user_id
              in: path
          operations:
            - name: update-user
              method: PATCH

Retrieves time-off balance from Workday by employee ID.

naftiko: "0.5"
info:
  label: "Workday Time Off Balance Check"
  description: "Retrieves time-off balance from Workday by employee ID."
  tags:
    - hr
    - workday
    - time-off
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: hr
      port: 8080
      tools:
        - name: workday-check
          description: "Retrieves time-off balance from Workday by employee ID."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "The identifier for the lookup."
          call: "hr.get-record"
          with:
            id: "{{identifier}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.result"
  consumes:
    - namespace: hr
      type: http
      baseUri: "https://siemens-s4.sap.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.sap_s4_username"
        password: "$secrets.sap_s4_password"
      resources:
        - name: records
          path: "/records"
          operations:
            - name: get-record
              method: GET

Generates workforce capacity report from Workday headcount, Jira demand, and publishes to Tableau.

naftiko: "0.5"
info:
  label: "Workforce Capacity Planning Report"
  description: "Generates workforce capacity report from Workday headcount, Jira demand, and publishes to Tableau."
  tags:
    - hr
    - workday
    - jira
    - tableau
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: hr-ops
      port: 8080
      tools:
        - name: workforce-capacity-planning-report
          description: "Generates workforce capacity report from Workday headcount, Jira demand, and publishes to Tableau."
          inputParameters:
            - name: reference_id
              in: body
              type: string
              description: "The reference identifier for this request."
            - name: description
              in: body
              type: string
              description: "Detailed description of the request."
            - name: priority
              in: body
              type: string
              description: "Priority level: high, medium, or low."
          steps:
            - name: create-primary-record
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Workforce Capacity Planning Report: {{reference_id}}"
                urgency: "2"
                description: "{{description}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Workforce Capacity Planning Report: {{reference_id}}"
                description: "Incident: {{create-primary-record.number}} | {{description}}"
            - name: notify-team
              type: call
              call: "msteams.post-message"
              with:
                channel_id: "$secrets.teams_hr_channel_id"
                text: "Workforce Capacity Planning Report | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}"
  consumes:
    - namespace: servicenow
      type: http
      baseUri: "https://siemens.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_username"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - namespace: jira
      type: http
      baseUri: "https://siemens.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - namespace: msteams
      type: http
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_bearer_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: post-message
              method: POST