Siemens Capabilities
Naftiko 0.5 capability definitions for Siemens - 100 capabilities showing integration workflows and service orchestrations.
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