Mercedes-Benz Capabilities
Naftiko 0.5 capability definitions for Mercedes-Benz - 100 capabilities showing integration workflows and service orchestrations.
Launches Okta certification, queries Snowflake for hierarchies, and creates Jira tracking task.
naftiko: "0.5"
info:
label: "Access Certification Campaign Orchestrator"
description: "Launches Okta certification, queries Snowflake for hierarchies, and creates Jira tracking task."
tags:
- security
- okta
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: access-orchestrate
description: "Launches Okta certification, queries Snowflake for hierarchies, and creates Jira tracking task."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "okta.get-user-groups"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "snowflake.run-query"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "jira.create-issue"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: okta
baseUri: "https://mercedes-benz.okta.com/api/v1"
authentication:
type: bearer
token: "$secrets.okta_token"
resources:
- name: user-groups
path: "/users/{{{{user_id}}}}/groups"
operations:
- name: get-user-groups
method: GET
- type: http
namespace: snowflake
baseUri: "https://mercedes-benz.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: jira
baseUri: "https://mercedes-benz.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_password"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Accepts a SharePoint-stored technical specification document and uses OpenAI to generate an executive summary, then stores the summary back in SharePoint.
naftiko: "0.5"
info:
label: "AI-Assisted Technical Document Summarization"
description: "Accepts a SharePoint-stored technical specification document and uses OpenAI to generate an executive summary, then stores the summary back in SharePoint."
tags:
- ai
- automation
- openai
- sharepoint
- document-management
capability:
exposes:
- type: mcp
namespace: ai-docs
port: 8080
tools:
- name: summarize-technical-document
description: "Given a SharePoint document site ID and file path, retrieve the technical specification document, generate an executive summary using OpenAI, and store the summary as a new document in SharePoint."
inputParameters:
- name: site_id
in: body
type: string
description: "The SharePoint site ID where the document is stored."
- name: document_path
in: body
type: string
description: "The SharePoint document library path to the technical specification file."
steps:
- name: get-document
type: call
call: "sharepoint.get-document-content"
with:
site_id: "{{site_id}}"
document_path: "{{document_path}}"
- name: generate-summary
type: call
call: "openai.create-completion"
with:
model: "gpt-4o"
prompt: "Summarize the following technical specification for a non-technical executive audience in 3-5 bullet points: {{get-document.content}}"
- name: store-summary
type: call
call: "sharepoint.create-document"
with:
site_id: "{{site_id}}"
document_path: "{{document_path}}_summary.txt"
content: "{{generate-summary.choices[0].message.content}}"
consumes:
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: document-content
path: "/sites/{{site_id}}/drive/root:{{document_path}}:/content"
inputParameters:
- name: site_id
in: path
- name: document_path
in: path
operations:
- name: get-document-content
method: GET
- name: documents
path: "/sites/{{site_id}}/drive/root:{{document_path}}:/content"
inputParameters:
- name: site_id
in: path
- name: document_path
in: path
operations:
- name: create-document
method: PUT
- type: http
namespace: openai
baseUri: "https://api.openai.com/v1"
authentication:
type: bearer
token: "$secrets.openai_api_key"
resources:
- name: completions
path: "/chat/completions"
operations:
- name: create-completion
method: POST
When Datadog detects latency, creates Jira performance ticket and alerts engineering via Teams.
naftiko: "0.5"
info:
label: "APM Latency Alert Handler"
description: "When Datadog detects latency, creates Jira performance ticket and alerts engineering via Teams."
tags:
- monitoring
- datadog
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: monitoring
port: 8080
tools:
- name: apm-orchestrate
description: "When Datadog detects latency, creates Jira performance ticket and alerts engineering via Teams."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "datadog.get-monitor"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "jira.create-issue"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "msteams.send-message"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
header: "DD-API-KEY"
key: "$secrets.datadog_api_key"
resources:
- name: monitors
path: "/monitor/{{{{monitor_id}}}}"
operations:
- name: get-monitor
method: GET
- type: http
namespace: jira
baseUri: "https://mercedes-benz.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_password"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/mercedes-benz/channels/general/messages"
operations:
- name: send-message
method: POST
Retrieves an Azure AD user profile by UPN.
naftiko: "0.5"
info:
label: "Azure AD User Lookup"
description: "Retrieves an Azure AD user profile by UPN."
tags:
- identity
- azure
- microsoft-graph
capability:
exposes:
- type: mcp
namespace: identity
port: 8080
tools:
- name: get-azure-ad-user
description: "Retrieves an Azure AD user profile by UPN."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary lookup parameter."
call: "msgraph.get-user"
with:
param_1: "{{param_1}}"
outputParameters:
- name: result
type: string
mapping: "$.result"
consumes:
- type: http
namespace: msgraph
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: get-user
path: "/users/{{{{upn}}}}"
operations:
- name: get-user
method: GET
Retrieves the current month cost summary for an Azure resource group.
naftiko: "0.5"
info:
label: "Azure Resource Group Cost Lookup"
description: "Retrieves the current month cost summary for an Azure resource group."
tags:
- cloud
- azure
- cost-management
capability:
exposes:
- type: mcp
namespace: cloud-finops
port: 8080
tools:
- name: get-resource-group-cost
description: "Retrieves the current month cost summary for an Azure resource group."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary lookup parameter."
call: "azure.get-cost-summary"
with:
param_1: "{{param_1}}"
outputParameters:
- name: result
type: string
mapping: "$.result"
consumes:
- type: http
namespace: azure
baseUri: "https://management.azure.com"
authentication:
type: bearer
token: "$secrets.azure_token"
resources:
- name: get-cost-summary
path: "/subscriptions/{{{{subscription_id}}}}/resourceGroups/{{{{resource_group}}}}/providers/Microsoft.CostManagement/query"
operations:
- name: get-cost-summary
method: POST
Queries Jira for ungroomed backlog, generates Confluence summary, and notifies team via Teams.
naftiko: "0.5"
info:
label: "Backlog Grooming Summary Generator"
description: "Queries Jira for ungroomed backlog, generates Confluence summary, and notifies team via Teams."
tags:
- devops
- jira
- confluence
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: backlog-orchestrate
description: "Queries Jira for ungroomed backlog, generates Confluence summary, and notifies team via Teams."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "jira.create-issue"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "confluence.create-page"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "msteams.send-message"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: jira
baseUri: "https://mercedes-benz.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_password"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: confluence
baseUri: "https://mercedes-benz.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_password"
resources:
- name: pages
path: "/content"
operations:
- name: create-page
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/mercedes-benz/channels/general/messages"
operations:
- name: send-message
method: POST
Verifies Workday benefits enrollment, checks SAP payroll deductions, and sends Teams confirmation.
naftiko: "0.5"
info:
label: "Benefits Enrollment Verification"
description: "Verifies Workday benefits enrollment, checks SAP payroll deductions, and sends Teams confirmation."
tags:
- hr
- workday
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: benefits-orchestrate
description: "Verifies Workday benefits enrollment, checks SAP payroll deductions, and sends Teams confirmation."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "workday.get-worker"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "sap.get-po"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "msteams.send-message"
with:
input: "{{step-1.result}}"
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: "/mercedes-benz/workers/{{worker_id}}"
operations:
- name: get-worker
method: GET
- type: http
namespace: sap
baseUri: "https://mercedes-benz-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}}}}')"
operations:
- name: get-po
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/mercedes-benz/channels/general/messages"
operations:
- name: send-message
method: POST
Detects Power BI refresh failure, creates Jira ticket, and sends Teams notification.
naftiko: "0.5"
info:
label: "BI Refresh Failure Escalation"
description: "Detects Power BI refresh failure, creates Jira ticket, and sends Teams notification."
tags:
- analytics
- power-bi
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: bi-orchestrate
description: "Detects Power BI refresh failure, creates Jira ticket, and sends Teams notification."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "powerbi.trigger-refresh"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "jira.create-issue"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "msteams.send-message"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: refreshes
path: "/datasets/{{{{dataset_id}}}}/refreshes"
operations:
- name: trigger-refresh
method: POST
- type: http
namespace: jira
baseUri: "https://mercedes-benz.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_password"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/mercedes-benz/channels/general/messages"
operations:
- name: send-message
method: POST
On a GitHub Actions pipeline failure on a protected branch, creates a Jira bug, posts an alert to Microsoft Teams, and logs a Datadog event marker.
naftiko: "0.5"
info:
label: "CI/CD Pipeline Failure Handler"
description: "On a GitHub Actions pipeline failure on a protected branch, creates a Jira bug, posts an alert to Microsoft Teams, and logs a Datadog event marker."
tags:
- devops
- cicd
- github
- jira
- datadog
- microsoft-teams
- incident-response
capability:
exposes:
- type: mcp
namespace: devops-ops
port: 8080
tools:
- name: handle-pipeline-failure
description: "Given a GitHub Actions pipeline failure, create a Jira bug, log a Datadog deployment event, and post an alert to the engineering Microsoft Teams channel."
inputParameters:
- name: repository
in: body
type: string
description: "The GitHub repository name where the pipeline failed (e.g., mercedes-benz/eqs-platform)."
- name: workflow_name
in: body
type: string
description: "The GitHub Actions workflow name that failed."
- name: branch
in: body
type: string
description: "The branch on which the pipeline failure occurred."
- name: run_url
in: body
type: string
description: "The URL to the failed GitHub Actions run for linking."
- name: commit_sha
in: body
type: string
description: "The commit SHA associated with the failed run."
steps:
- name: create-bug
type: call
call: "jira.create-issue"
with:
project_key: "ENG"
issuetype: "Bug"
summary: "[CI Failure] {{repository}} / {{branch}} - {{workflow_name}}"
description: "Workflow: {{workflow_name}}\nBranch: {{branch}}\nCommit: {{commit_sha}}\nRun: {{run_url}}"
- name: log-event
type: call
call: "datadog.create-event"
with:
title: "CI Failure: {{repository}}/{{branch}}"
text: "Workflow {{workflow_name}} failed at commit {{commit_sha}}"
alert_type: "error"
- name: notify-team
type: call
call: "msteams.post-channel-message"
with:
channel_id: "engineering-alerts"
message: "Pipeline Failure: {{repository}} | Branch: {{branch}} | Jira: {{create-bug.key}} | Run: {{run_url}}"
consumes:
- type: http
namespace: jira
baseUri: "https://mercedes-benz.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: datadog
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
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
When Datadog detects a cloud cost anomaly, creates a ServiceNow change request, and notifies the FinOps team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Cloud Cost Anomaly Alert"
description: "When Datadog detects a cloud cost anomaly, creates a ServiceNow change request, and notifies the FinOps team via Microsoft Teams."
tags:
- cloud
- finops
- datadog
- servicenow
- microsoft-teams
- cost-management
capability:
exposes:
- type: mcp
namespace: cloud-finops
port: 8080
tools:
- name: handle-cost-anomaly
description: "Given a Datadog cost anomaly alert with service name and excess amount, create a ServiceNow change request for cost review and notify the FinOps Microsoft Teams channel."
inputParameters:
- name: service_name
in: body
type: string
description: "The cloud service or application generating the cost anomaly."
- name: excess_amount
in: body
type: number
description: "The dollar amount exceeding the expected cost baseline."
- name: anomaly_period
in: body
type: string
description: "The time period of the anomaly (e.g., 2026-03-20)."
steps:
- name: create-change
type: call
call: "servicenow.create-change"
with:
short_description: "Cost anomaly review: {{service_name}} - ${{excess_amount}} over baseline"
category: "cloud_cost"
type: "normal"
- name: notify-finops
type: call
call: "msteams.post-channel-message"
with:
channel_id: "finops-alerts"
message: "Cost Anomaly Detected: {{service_name}} exceeded baseline by ${{excess_amount}} on {{anomaly_period}}. Change: {{create-change.number}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: change-request
path: "/table/change_request"
operations:
- name: create-change
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Pulls Azure cost data, compares Snowflake forecasts, creates Jira ticket, and notifies via Teams.
naftiko: "0.5"
info:
label: "Cloud Cost Review Orchestrator"
description: "Pulls Azure cost data, compares Snowflake forecasts, creates Jira ticket, and notifies via Teams."
tags:
- finops
- azure
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finops
port: 8080
tools:
- name: cloud-orchestrate
description: "Pulls Azure cost data, compares Snowflake forecasts, creates Jira ticket, and notifies via Teams."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "azure.get-resources"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "snowflake.run-query"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "jira.create-issue"
with:
input: "{{step-1.result}}"
- name: step-4
type: call
call: "msteams.send-message"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: azure
baseUri: "https://management.azure.com"
authentication:
type: bearer
token: "$secrets.azure_token"
resources:
- name: resources
path: "/subscriptions"
operations:
- name: get-resources
method: GET
- type: http
namespace: snowflake
baseUri: "https://mercedes-benz.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: jira
baseUri: "https://mercedes-benz.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_password"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/mercedes-benz/channels/general/messages"
operations:
- name: send-message
method: POST
Processes compensation change with Workday data, SAP budget check, and Teams approval notification.
naftiko: "0.5"
info:
label: "Compensation Change Approval Workflow"
description: "Processes compensation change with Workday data, SAP budget check, and Teams approval notification."
tags:
- hr
- workday
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: compensation-orchestrate
description: "Processes compensation change with Workday data, SAP budget check, and Teams approval notification."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "workday.get-worker"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "sap.get-po"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "msteams.send-message"
with:
input: "{{step-1.result}}"
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: "/mercedes-benz/workers/{{worker_id}}"
operations:
- name: get-worker
method: GET
- type: http
namespace: sap
baseUri: "https://mercedes-benz-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}}}}')"
operations:
- name: get-po
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/mercedes-benz/channels/general/messages"
operations:
- name: send-message
method: POST
Retrieves pending expense reports from SAP Concur, validates against policy, and routes for manager approval or auto-approves within threshold.
naftiko: "0.5"
info:
label: "Concur Expense Report Approval"
description: "Retrieves pending expense reports from SAP Concur, validates against policy, and routes for manager approval or auto-approves within threshold."
tags:
- finance
- expense-management
- sap-concur
- approval
capability:
exposes:
- type: mcp
namespace: expense-ops
port: 8080
tools:
- name: process-expense-report
description: "Given an SAP Concur expense report ID, retrieve details, validate against Mercedes-Benz expense policy, and either auto-approve if within threshold or escalate for manager review."
inputParameters:
- name: report_id
in: body
type: string
description: "The SAP Concur expense report ID to process."
- name: approval_threshold
in: body
type: number
description: "The auto-approval threshold in EUR. Reports above this amount require manual review."
steps:
- name: get-report
type: call
call: "concur.get-expense-report"
with:
report_id: "{{report_id}}"
- name: approve-report
type: call
call: "concur.approve-expense-report"
with:
report_id: "{{report_id}}"
comment: "Auto-approved within policy threshold"
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/{{report_id}}"
inputParameters:
- name: report_id
in: path
operations:
- name: get-expense-report
method: GET
- name: approve-expense-report
method: PATCH
Retrieves a Confluence page by ID.
naftiko: "0.5"
info:
label: "Confluence Page Lookup"
description: "Retrieves a Confluence page by ID."
tags:
- knowledge-management
- confluence
- documentation
capability:
exposes:
- type: mcp
namespace: knowledge
port: 8080
tools:
- name: get-confluence-page
description: "Retrieves a Confluence page by ID."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary lookup parameter."
call: "confluence.get-page"
with:
param_1: "{{param_1}}"
outputParameters:
- name: result
type: string
mapping: "$.result"
consumes:
- type: http
namespace: confluence
baseUri: "https://mercedes-benz.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_password"
resources:
- name: get-page
path: "/content/{{{{page_id}}}}?expand=body.storage,version"
operations:
- name: get-page
method: GET
Retrieves SAP contract at milestone, creates billing document, and notifies manager via Teams.
naftiko: "0.5"
info:
label: "Contract Milestone Billing Workflow"
description: "Retrieves SAP contract at milestone, creates billing document, and notifies manager via Teams."
tags:
- finance
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: contract-orchestrate
description: "Retrieves SAP contract at milestone, creates billing document, and notifies manager via Teams."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "sap.get-po"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "msteams.send-message"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: sap
baseUri: "https://mercedes-benz-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}}}}')"
operations:
- name: get-po
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/mercedes-benz/channels/general/messages"
operations:
- name: send-message
method: POST
Detects expiring Salesforce contracts, pulls Snowflake spend data, and creates Jira renewal task.
naftiko: "0.5"
info:
label: "Contract Renewal Alert Workflow"
description: "Detects expiring Salesforce contracts, pulls Snowflake spend data, and creates Jira renewal task."
tags:
- sales
- salesforce
- snowflake
- jira
capability:
exposes:
- type: mcp
namespace: sales
port: 8080
tools:
- name: contract-orchestrate
description: "Detects expiring Salesforce contracts, pulls Snowflake spend data, and creates Jira renewal task."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "salesforce.get-opportunity"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "snowflake.run-query"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "jira.create-issue"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://mercedes-benz.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: opportunities
path: "/sobjects/Opportunity"
operations:
- name: get-opportunity
method: GET
- type: http
namespace: snowflake
baseUri: "https://mercedes-benz.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: jira
baseUri: "https://mercedes-benz.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_password"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Provisions contractor with Azure AD guest account, Okta groups, and ServiceNow tracking ticket.
naftiko: "0.5"
info:
label: "Contractor Access Provisioning Workflow"
description: "Provisions contractor with Azure AD guest account, Okta groups, and ServiceNow tracking ticket."
tags:
- security
- azure
- okta
- servicenow
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: contractor-orchestrate
description: "Provisions contractor with Azure AD guest account, Okta groups, and ServiceNow tracking ticket."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "azure.get-resources"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "okta.get-user-groups"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "servicenow.create-incident"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: azure
baseUri: "https://management.azure.com"
authentication:
type: bearer
token: "$secrets.azure_token"
resources:
- name: resources
path: "/subscriptions"
operations:
- name: get-resources
method: GET
- type: http
namespace: okta
baseUri: "https://mercedes-benz.okta.com/api/v1"
authentication:
type: bearer
token: "$secrets.okta_token"
resources:
- name: user-groups
path: "/users/{{{{user_id}}}}/groups"
operations:
- name: get-user-groups
method: GET
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.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
Queries CrowdStrike Falcon for endpoint details by device ID.
naftiko: "0.5"
info:
label: "CrowdStrike Endpoint Status Lookup"
description: "Queries CrowdStrike Falcon for endpoint details by device ID."
tags:
- security
- crowdstrike
- endpoint
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: get-endpoint-status
description: "Queries CrowdStrike Falcon for endpoint details by device ID."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary lookup parameter."
call: "crowdstrike.get-device"
with:
param_1: "{{param_1}}"
outputParameters:
- name: result
type: string
mapping: "$.result"
consumes:
- type: http
namespace: crowdstrike
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.crowdstrike_token"
resources:
- name: get-device
path: "/devices/entities/devices/v2?ids={{{{device_id}}}}"
operations:
- name: get-device
method: GET
Runs Snowflake data quality check, logs in ServiceNow, and notifies data engineering via Teams.
naftiko: "0.5"
info:
label: "Data Quality Alert Workflow"
description: "Runs Snowflake data quality check, logs in ServiceNow, and notifies data engineering via Teams."
tags:
- data
- snowflake
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: data
port: 8080
tools:
- name: data-orchestrate
description: "Runs Snowflake data quality check, logs in ServiceNow, and notifies data engineering via Teams."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "snowflake.run-query"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "servicenow.create-incident"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "msteams.send-message"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://mercedes-benz.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/mercedes-benz/channels/general/messages"
operations:
- name: send-message
method: POST
When a Datadog infrastructure monitor triggers, creates a ServiceNow incident and pages the on-call engineer via PagerDuty.
naftiko: "0.5"
info:
label: "Datadog Infrastructure Alert Handler"
description: "When a Datadog infrastructure monitor triggers, creates a ServiceNow incident and pages the on-call engineer via PagerDuty."
tags:
- observability
- infrastructure
- datadog
- servicenow
- pagerduty
- monitoring
capability:
exposes:
- type: mcp
namespace: infra-monitoring
port: 8080
tools:
- name: handle-infrastructure-alert
description: "Given a Datadog monitor alert with host, metric, and threshold details, open a ServiceNow incident and trigger a PagerDuty escalation to the on-call engineer."
inputParameters:
- name: monitor_name
in: body
type: string
description: "The Datadog monitor name that fired."
- name: host
in: body
type: string
description: "The affected host or service name."
- name: metric_value
in: body
type: number
description: "The current metric value that breached the threshold."
- name: alert_url
in: body
type: string
description: "URL to the Datadog monitor alert for context."
steps:
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Infrastructure alert: {{monitor_name}} on {{host}}"
urgency: "1"
category: "infrastructure"
- name: page-oncall
type: call
call: "pagerduty.create-incident"
with:
title: "Infra Alert: {{monitor_name}} on {{host}}"
severity: "critical"
body: "Metric value {{metric_value}}. Datadog: {{alert_url}}. SNOW: {{create-incident.number}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incident
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_token"
placement: header
resources:
- name: incidents
path: "/incidents"
operations:
- name: create-incident
method: POST
Queries Datadog for the current health status of a monitored service.
naftiko: "0.5"
info:
label: "Datadog Service Health Check"
description: "Queries Datadog for the current health status of a monitored service."
tags:
- monitoring
- datadog
- observability
capability:
exposes:
- type: mcp
namespace: observability
port: 8080
tools:
- name: get-service-health
description: "Queries Datadog for the current health status of a monitored service."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary lookup parameter."
call: "datadog.get-monitor"
with:
param_1: "{{param_1}}"
outputParameters:
- name: result
type: string
mapping: "$.result"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
header: "DD-API-KEY"
key: "$secrets.datadog_api_key"
resources:
- name: get-monitor
path: "/monitor/{{{{monitor_id}}}}"
operations:
- name: get-monitor
method: GET
When a Datadog SLO drops below target, fetches breach details, creates a Jira issue for the owning team, and posts a remediation request to Microsoft Teams.
naftiko: "0.5"
info:
label: "Datadog SLO Breach Reporter"
description: "When a Datadog SLO drops below target, fetches breach details, creates a Jira issue for the owning team, and posts a remediation request to Microsoft Teams."
tags:
- observability
- slo
- datadog
- jira
- microsoft-teams
- reliability
capability:
exposes:
- type: mcp
namespace: slo-ops
port: 8080
tools:
- name: handle-slo-breach
description: "Given a Datadog SLO ID that has breached its target, retrieve breach details, open a Jira issue for the responsible team, and post a remediation request to the platform Microsoft Teams channel."
inputParameters:
- name: slo_id
in: body
type: string
description: "The Datadog SLO ID that has breached its target."
- name: current_slo_value
in: body
type: number
description: "The current SLO value as a percentage (e.g., 98.5)."
- name: target_slo_value
in: body
type: number
description: "The target SLO value as a percentage (e.g., 99.9)."
steps:
- name: get-slo
type: call
call: "datadog.get-slo"
with:
slo_id: "{{slo_id}}"
- name: create-issue
type: call
call: "jira.create-issue"
with:
project_key: "ENG"
issuetype: "Bug"
summary: "SLO Breach: {{get-slo.name}} at {{current_slo_value}}% (target {{target_slo_value}}%)"
description: "SLO {{get-slo.name}} has breached its target. Current: {{current_slo_value}}% | Target: {{target_slo_value}}%"
- name: notify-platform
type: call
call: "msteams.post-channel-message"
with:
channel_id: "platform-reliability"
message: "SLO BREACH: {{get-slo.name}} is at {{current_slo_value}}% against a {{target_slo_value}}% target. Jira: {{create-issue.key}}"
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: slos
path: "/slo/{{slo_id}}"
inputParameters:
- name: slo_id
in: path
operations:
- name: get-slo
method: GET
- type: http
namespace: jira
baseUri: "https://mercedes-benz.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Synchronizes dealer vehicle order data from the Salesforce CRM to SAP S/4HANA for production planning and revenue tracking.
naftiko: "0.5"
info:
label: "Dealer Sales Pipeline Sync"
description: "Synchronizes dealer vehicle order data from the Salesforce CRM to SAP S/4HANA for production planning and revenue tracking."
tags:
- sales
- crm
- salesforce
- sap-s4hana
- erp
capability:
exposes:
- type: mcp
namespace: dealer-sales
port: 8080
tools:
- name: sync-dealer-order
description: "Given a Salesforce opportunity ID for a dealer vehicle order, retrieve order details and sync them into SAP S/4HANA as a sales order for production planning."
inputParameters:
- name: opportunity_id
in: body
type: string
description: "The Salesforce Opportunity ID representing a dealer vehicle order."
steps:
- name: get-opportunity
type: call
call: "salesforce.get-opportunity"
with:
opportunity_id: "{{opportunity_id}}"
- name: create-sales-order
type: call
call: "sap-s4.create-sales-order"
with:
customer_id: "{{get-opportunity.dealer_account_id}}"
vehicle_model: "{{get-opportunity.vehicle_model}}"
quantity: "{{get-opportunity.quantity}}"
delivery_date: "{{get-opportunity.close_date}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://mercedes-benz.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: opportunity
path: "/sobjects/Opportunity/{{opportunity_id}}"
inputParameters:
- name: opportunity_id
in: path
operations:
- name: get-opportunity
method: GET
- type: http
namespace: sap-s4
baseUri: "https://mercedes-benz-s4.sap.com/sap/opu/odata/sap/SD_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
Monitors SAP delivery schedules, creates Jira follow-up task, and alerts supply chain via Teams.
naftiko: "0.5"
info:
label: "Delivery Schedule Monitor and Alert"
description: "Monitors SAP delivery schedules, creates Jira follow-up task, and alerts supply chain via Teams."
tags:
- logistics
- sap
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: logistics
port: 8080
tools:
- name: delivery-orchestrate
description: "Monitors SAP delivery schedules, creates Jira follow-up task, and alerts supply chain via Teams."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "sap.get-po"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "jira.create-issue"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "msteams.send-message"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: sap
baseUri: "https://mercedes-benz-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}}}}')"
operations:
- name: get-po
method: GET
- type: http
namespace: jira
baseUri: "https://mercedes-benz.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_password"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/mercedes-benz/channels/general/messages"
operations:
- name: send-message
method: POST
Retrieves GitHub Dependabot alerts, creates Jira tasks, and notifies security via Teams.
naftiko: "0.5"
info:
label: "Dependabot to Jira Task Bridge"
description: "Retrieves GitHub Dependabot alerts, creates Jira tasks, and notifies security via Teams."
tags:
- devops
- github
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: dependabot-orchestrate
description: "Retrieves GitHub Dependabot alerts, creates Jira tasks, and notifies security via Teams."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "github.get-branch-protection"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "jira.create-issue"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "msteams.send-message"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: repos
path: "/repos/{{{{repo}}}}/branches/main/protection"
operations:
- name: get-branch-protection
method: GET
- type: http
namespace: jira
baseUri: "https://mercedes-benz.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_password"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/mercedes-benz/channels/general/messages"
operations:
- name: send-message
method: POST
Checks CrowdStrike for non-compliant endpoints, assigns policies, creates ServiceNow task, and alerts via Teams.
naftiko: "0.5"
info:
label: "Device Compliance Remediation"
description: "Checks CrowdStrike for non-compliant endpoints, assigns policies, creates ServiceNow task, and alerts via Teams."
tags:
- security
- crowdstrike
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: device-orchestrate
description: "Checks CrowdStrike for non-compliant endpoints, assigns policies, creates ServiceNow task, and alerts via Teams."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "crowdstrike.get-device"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "servicenow.create-incident"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "msteams.send-message"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: crowdstrike
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.crowdstrike_token"
resources:
- name: devices
path: "/devices/entities/devices/v2"
operations:
- name: get-device
method: GET
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/mercedes-benz/channels/general/messages"
operations:
- name: send-message
method: POST
When an employee departure is confirmed in Workday, disables their Microsoft 365 account, closes all open ServiceNow tickets, and notifies HR via Teams.
naftiko: "0.5"
info:
label: "Employee Offboarding Orchestrator"
description: "When an employee departure is confirmed in Workday, disables their Microsoft 365 account, closes all open ServiceNow tickets, 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 employee ID and termination date, disable their Microsoft 365 account, close open ServiceNow tickets assigned to them, and notify HR via Microsoft Teams."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday employee ID of the departing employee."
- name: termination_date
in: body
type: string
description: "The employee's last working day in ISO 8601 format (YYYY-MM-DD)."
steps:
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{employee_id}}"
- name: disable-account
type: call
call: "msgraph.disable-user"
with:
user_id: "{{get-employee.work_email}}"
- name: notify-hr
type: call
call: "msteams.post-channel-message"
with:
channel_id: "hr-operations"
message: "Offboarding complete for {{get-employee.displayName}} ({{employee_id}}). M365 account disabled. Termination date: {{termination_date}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: basic
username: "$secrets.workday_user"
password: "$secrets.workday_password"
resources:
- name: workers
path: "/mercedes-benz/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: msgraph
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
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
When a new hire is created in SAP SuccessFactors, opens a ServiceNow onboarding ticket, provisions a Microsoft 365 account, and sends a Microsoft Teams welcome message.
naftiko: "0.5"
info:
label: "Employee Onboarding Orchestrator"
description: "When a new hire is created in SAP SuccessFactors, opens a ServiceNow onboarding ticket, provisions a Microsoft 365 account, and sends a Microsoft 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 new hire employee ID from SAP SuccessFactors, 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: department
in: body
type: string
description: "The department the new hire is joining (e.g., Engineering, Finance)."
steps:
- name: get-employee
type: call
call: "successfactors.get-employee"
with:
employee_id: "{{employee_id}}"
- name: create-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "New hire onboarding: {{get-employee.displayName}}"
category: "hr_onboarding"
assigned_to: "IT_Onboarding_Team"
- name: provision-account
type: call
call: "msgraph.create-user"
with:
displayName: "{{get-employee.displayName}}"
mailNickname: "{{get-employee.userId}}"
department: "{{department}}"
- name: send-welcome
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{provision-account.userPrincipalName}}"
message: "Welcome to Mercedes-Benz, {{get-employee.firstName}}! Your IT onboarding ticket is {{create-ticket.number}}."
consumes:
- type: http
namespace: successfactors
baseUri: "https://api4.successfactors.com/odata/v2"
authentication:
type: bearer
token: "$secrets.successfactors_token"
resources:
- name: employee
path: "/User('{{employee_id}}')"
inputParameters:
- name: employee_id
in: path
operations:
- name: get-employee
method: GET
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incident
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: chat-messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Detects Snowflake ETL failure, creates Jira ticket, retries pipeline, and notifies via Teams.
naftiko: "0.5"
info:
label: "ETL Failure Recovery Workflow"
description: "Detects Snowflake ETL failure, creates Jira ticket, retries pipeline, and notifies via Teams."
tags:
- data
- snowflake
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: data
port: 8080
tools:
- name: etl-orchestrate
description: "Detects Snowflake ETL failure, creates Jira ticket, retries pipeline, and notifies via Teams."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "snowflake.run-query"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "jira.create-issue"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "msteams.send-message"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://mercedes-benz.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: jira
baseUri: "https://mercedes-benz.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_password"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/mercedes-benz/channels/general/messages"
operations:
- name: send-message
method: POST
Retrieves real-time status of Mercedes-Benz EV charging stations from the connected services API and surfaces alerts for offline stations via Microsoft Teams.
naftiko: "0.5"
info:
label: "EV Charging Network Status Lookup"
description: "Retrieves real-time status of Mercedes-Benz EV charging stations from the connected services API and surfaces alerts for offline stations via Microsoft Teams."
tags:
- operations
- ev
- connected-services
- microsoft-teams
- monitoring
capability:
exposes:
- type: mcp
namespace: ev-ops
port: 8080
tools:
- name: check-charging-station-status
description: "Query the Mercedes me Connect API for the status of EV charging stations at a given location. If any stations are offline, post an alert to the operations Microsoft Teams channel."
inputParameters:
- name: location_id
in: body
type: string
description: "The charging network location ID to check."
steps:
- name: get-status
type: call
call: "mercedes-connect.get-charging-status"
with:
location_id: "{{location_id}}"
- name: notify-ops
type: call
call: "msteams.post-channel-message"
with:
channel_id: "ev-operations"
message: "Charging Station Alert at {{location_id}}: {{get-status.offline_count}} stations offline out of {{get-status.total_count}} total."
consumes:
- type: http
namespace: mercedes-connect
baseUri: "https://api.mercedes-benz.com/vehicleservices/v3"
authentication:
type: bearer
token: "$secrets.mercedes_connect_token"
resources:
- name: charging-status
path: "/charging/locations/{{location_id}}/status"
inputParameters:
- name: location_id
in: path
operations:
- name: get-charging-status
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Submits firewall policy change, creates ServiceNow change, and notifies security via Teams.
naftiko: "0.5"
info:
label: "Firewall Policy Change Approval"
description: "Submits firewall policy change, creates ServiceNow change, and notifies security via Teams."
tags:
- security
- palo-alto-networks
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: firewall-orchestrate
description: "Submits firewall policy change, creates ServiceNow change, and notifies security via Teams."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "paloalto.get-security-rule"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "servicenow.create-incident"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "msteams.send-message"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: paloalto
baseUri: "https://panorama.mercedes-benz.com/restapi/v10.2"
authentication:
type: bearer
token: "$secrets.paloalto_token"
resources:
- name: security-rules
path: "/Policies/SecurityRules"
operations:
- name: get-security-rule
method: GET
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/mercedes-benz/channels/general/messages"
operations:
- name: send-message
method: POST
Triggers a rollback deployment via GitHub Actions when a Datadog error rate monitor exceeds threshold, creating a ServiceNow change request for audit trail.
naftiko: "0.5"
info:
label: "GitHub Deployment Rollback"
description: "Triggers a rollback deployment via GitHub Actions when a Datadog error rate monitor exceeds threshold, creating a ServiceNow change request for audit trail."
tags:
- devops
- deployment
- github
- datadog
- servicenow
- rollback
capability:
exposes:
- type: mcp
namespace: deployment-ops
port: 8080
tools:
- name: trigger-rollback
description: "Given a repository, environment, and previous stable version tag, trigger a rollback GitHub Actions workflow, create a ServiceNow emergency change request, and log a Datadog event."
inputParameters:
- name: repository
in: body
type: string
description: "The GitHub repository to roll back (e.g., mercedes-benz/eqs-api)."
- name: environment
in: body
type: string
description: "The deployment environment to roll back (production, staging)."
- name: target_version
in: body
type: string
description: "The stable version tag to roll back to (e.g., v2.3.1)."
steps:
- name: create-change
type: call
call: "servicenow.create-change"
with:
short_description: "Emergency rollback: {{repository}} to {{target_version}} in {{environment}}"
type: "emergency"
category: "software_deployment"
- name: trigger-workflow
type: call
call: "github.trigger-workflow"
with:
repository: "{{repository}}"
workflow_id: "rollback.yml"
ref: "main"
inputs: "environment={{environment}},version={{target_version}}"
- name: log-event
type: call
call: "datadog.create-event"
with:
title: "Rollback triggered: {{repository}}/{{environment}} to {{target_version}}"
alert_type: "warning"
consumes:
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: change-request
path: "/table/change_request"
operations:
- name: create-change
method: POST
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: workflow-dispatches
path: "/repos/{{repository}}/actions/workflows/{{workflow_id}}/dispatches"
inputParameters:
- name: repository
in: path
- name: workflow_id
in: path
operations:
- name: trigger-workflow
method: POST
- 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: events
path: "/events"
operations:
- name: create-event
method: POST
Runs GitHub security scan on PR, checks CrowdStrike for indicators, and posts review summary.
naftiko: "0.5"
info:
label: "GitHub PR Security Review Orchestrator"
description: "Runs GitHub security scan on PR, checks CrowdStrike for indicators, and posts review summary."
tags:
- devops
- github
- crowdstrike
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: github-orchestrate
description: "Runs GitHub security scan on PR, checks CrowdStrike for indicators, and posts review summary."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "github.get-branch-protection"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "crowdstrike.get-device"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: repos
path: "/repos/{{{{repo}}}}/branches/main/protection"
operations:
- name: get-branch-protection
method: GET
- type: http
namespace: crowdstrike
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.crowdstrike_token"
resources:
- name: devices
path: "/devices/entities/devices/v2"
operations:
- name: get-device
method: GET
Checks a GitHub repository for branch protection compliance.
naftiko: "0.5"
info:
label: "GitHub Repository Compliance Check"
description: "Checks a GitHub repository for branch protection compliance."
tags:
- devops
- github
- compliance
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: check-repo-compliance
description: "Checks a GitHub repository for branch protection compliance."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary lookup parameter."
call: "github.get-branch-protection"
with:
param_1: "{{param_1}}"
outputParameters:
- name: result
type: string
mapping: "$.result"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: get-branch-protection
path: "/repos/{{{{repo}}}}/branches/main/protection"
operations:
- name: get-branch-protection
method: GET
Triggers a Snyk security scan on a GitHub repository and creates Jira issues for any critical or high vulnerabilities discovered.
naftiko: "0.5"
info:
label: "GitHub Repository Security Scan"
description: "Triggers a Snyk security scan on a GitHub repository and creates Jira issues for any critical or high vulnerabilities discovered."
tags:
- devops
- security
- github
- snyk
- jira
- vulnerability-management
capability:
exposes:
- type: mcp
namespace: security-scanning
port: 8080
tools:
- name: scan-repo-vulnerabilities
description: "Given a GitHub repository name, trigger a Snyk vulnerability scan and create Jira issues for all critical and high severity findings."
inputParameters:
- name: repository
in: body
type: string
description: "The GitHub repository full name to scan (e.g., mercedes-benz/eqs-sdk)."
- name: jira_project_key
in: body
type: string
description: "The Jira project key where vulnerability issues should be created."
steps:
- name: trigger-scan
type: call
call: "snyk.test-repository"
with:
repository: "{{repository}}"
- name: create-vuln-issue
type: call
call: "jira.create-issue"
with:
project_key: "{{jira_project_key}}"
issuetype: "Bug"
summary: "Security vulnerabilities found in {{repository}}"
description: "Snyk scan found {{trigger-scan.critical_count}} critical and {{trigger-scan.high_count}} high vulnerabilities. Report: {{trigger-scan.report_url}}"
consumes:
- type: http
namespace: snyk
baseUri: "https://api.snyk.io/v1"
authentication:
type: bearer
token: "$secrets.snyk_token"
resources:
- name: test
path: "/test/github/{{repository}}"
inputParameters:
- name: repository
in: path
operations:
- name: test-repository
method: POST
- type: http
namespace: jira
baseUri: "https://mercedes-benz.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
Creates SAP quality inspection from goods receipt, logs in ServiceNow, and notifies QA via Teams.
naftiko: "0.5"
info:
label: "Goods Receipt to Quality Inspection"
description: "Creates SAP quality inspection from goods receipt, logs in ServiceNow, and notifies QA via Teams."
tags:
- logistics
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: logistics
port: 8080
tools:
- name: goods-orchestrate
description: "Creates SAP quality inspection from goods receipt, logs in ServiceNow, and notifies QA via Teams."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "sap.get-po"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "servicenow.create-incident"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "msteams.send-message"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: sap
baseUri: "https://mercedes-benz-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}}}}')"
operations:
- name: get-po
method: GET
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/mercedes-benz/channels/general/messages"
operations:
- name: send-message
method: POST
Pulls Snowflake headcount, refreshes Power BI dashboard, and notifies leadership via Teams.
naftiko: "0.5"
info:
label: "Headcount Forecast Report Generator"
description: "Pulls Snowflake headcount, refreshes Power BI dashboard, and notifies leadership via Teams."
tags:
- hr
- snowflake
- power-bi
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: headcount-orchestrate
description: "Pulls Snowflake headcount, refreshes Power BI dashboard, and notifies leadership via Teams."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "snowflake.run-query"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "powerbi.trigger-refresh"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "msteams.send-message"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://mercedes-benz.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: refreshes
path: "/datasets/{{{{dataset_id}}}}/refreshes"
operations:
- name: trigger-refresh
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/mercedes-benz/channels/general/messages"
operations:
- name: send-message
method: POST
Escalates recurring ServiceNow incidents to problems, correlates Splunk events, and creates Jira tasks.
naftiko: "0.5"
info:
label: "Incident to Problem Escalation Workflow"
description: "Escalates recurring ServiceNow incidents to problems, correlates Splunk events, and creates Jira tasks."
tags:
- itsm
- servicenow
- splunk
- jira
capability:
exposes:
- type: mcp
namespace: itsm
port: 8080
tools:
- name: incident-orchestrate
description: "Escalates recurring ServiceNow incidents to problems, correlates Splunk events, and creates Jira tasks."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "servicenow.create-incident"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "splunk.run-search"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "jira.create-issue"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.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: splunk
baseUri: "https://splunk.mercedes-benz.com:8089/services"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: search
path: "/search/jobs"
operations:
- name: run-search
method: POST
- type: http
namespace: jira
baseUri: "https://mercedes-benz.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_password"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Processes SAP intercompany transfer, logs in Snowflake audit, and notifies logistics via Teams.
naftiko: "0.5"
info:
label: "Intercompany Transfer Orchestrator"
description: "Processes SAP intercompany transfer, logs in Snowflake audit, and notifies logistics via Teams."
tags:
- logistics
- sap
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: logistics
port: 8080
tools:
- name: intercompany-orchestrate
description: "Processes SAP intercompany transfer, logs in Snowflake audit, and notifies logistics via Teams."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "sap.get-po"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "snowflake.run-query"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "msteams.send-message"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: sap
baseUri: "https://mercedes-benz-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}}}}')"
operations:
- name: get-po
method: GET
- type: http
namespace: snowflake
baseUri: "https://mercedes-benz.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/mercedes-benz/channels/general/messages"
operations:
- name: send-message
method: POST
Compares invoice against SAP purchase order and goods receipt, then logs in ServiceNow.
naftiko: "0.5"
info:
label: "Invoice Three-Way Match Orchestrator"
description: "Compares invoice against SAP purchase order and goods receipt, then logs in ServiceNow."
tags:
- finance
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: invoice-orchestrate
description: "Compares invoice against SAP purchase order and goods receipt, then logs in ServiceNow."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "sap.get-po"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "servicenow.create-incident"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: sap
baseUri: "https://mercedes-benz-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}}}}')"
operations:
- name: get-po
method: GET
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.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
Retrieves a Jira issue by key, returning summary, status, and assignee.
naftiko: "0.5"
info:
label: "Jira Issue Detail Lookup"
description: "Retrieves a Jira issue by key, returning summary, status, and assignee."
tags:
- devops
- jira
- project-management
capability:
exposes:
- type: mcp
namespace: project-management
port: 8080
tools:
- name: get-jira-issue
description: "Retrieves a Jira issue by key, returning summary, status, and assignee."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary lookup parameter."
call: "jira.get-issue"
with:
param_1: "{{param_1}}"
outputParameters:
- name: result
type: string
mapping: "$.result"
consumes:
- type: http
namespace: jira
baseUri: "https://mercedes-benz.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_password"
resources:
- name: get-issue
path: "/issue/{{{{issue_key}}}}"
operations:
- name: get-issue
method: GET
Generates a sprint retrospective summary by fetching completed and incomplete Jira issues and posting a digest to the team's Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Jira Sprint Retrospective Digest"
description: "Generates a sprint retrospective summary by fetching completed and incomplete Jira issues and posting a digest to the team's Microsoft Teams channel."
tags:
- devops
- reporting
- jira
- microsoft-teams
- agile
capability:
exposes:
- type: mcp
namespace: agile-reporting
port: 8080
tools:
- name: digest-sprint-retrospective
description: "Given a Jira board ID and sprint ID, fetch completed and incomplete issues, compute velocity metrics, and post a formatted retrospective digest to the team's Microsoft Teams channel."
inputParameters:
- name: board_id
in: body
type: string
description: "The Jira board ID for the sprint."
- name: sprint_id
in: body
type: string
description: "The Jira sprint ID to summarize."
- name: teams_channel_id
in: body
type: string
description: "The Microsoft Teams channel ID to post the digest to."
steps:
- name: get-issues
type: call
call: "jira.list-sprint-issues"
with:
board_id: "{{board_id}}"
sprint_id: "{{sprint_id}}"
- name: post-digest
type: call
call: "msteams.post-channel-message"
with:
channel_id: "{{teams_channel_id}}"
message: "Sprint Retrospective - Sprint {{sprint_id}}: {{get-issues.done_count}} issues completed, {{get-issues.todo_count}} carried over. Velocity: {{get-issues.story_points_completed}} points."
consumes:
- type: http
namespace: jira
baseUri: "https://mercedes-benz.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: sprint-issues
path: "/board/{{board_id}}/sprint/{{sprint_id}}/issue"
inputParameters:
- name: board_id
in: path
- name: sprint_id
in: path
operations:
- name: list-sprint-issues
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Generates ServiceNow knowledge article from resolved incident and shares via Teams.
naftiko: "0.5"
info:
label: "Knowledge Article Auto-Publisher"
description: "Generates ServiceNow knowledge article from resolved incident and shares via Teams."
tags:
- itsm
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: itsm
port: 8080
tools:
- name: knowledge-orchestrate
description: "Generates ServiceNow knowledge article from resolved incident and shares via Teams."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "servicenow.create-incident"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "msteams.send-message"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/mercedes-benz/channels/general/messages"
operations:
- name: send-message
method: POST
Compares Azure AD licenses against Snowflake headcount and creates ServiceNow optimization task.
naftiko: "0.5"
info:
label: "License Reconciliation Workflow"
description: "Compares Azure AD licenses against Snowflake headcount and creates ServiceNow optimization task."
tags:
- identity
- azure
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: identity
port: 8080
tools:
- name: license-orchestrate
description: "Compares Azure AD licenses against Snowflake headcount and creates ServiceNow optimization task."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "azure.get-resources"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "snowflake.run-query"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "servicenow.create-incident"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: azure
baseUri: "https://management.azure.com"
authentication:
type: bearer
token: "$secrets.azure_token"
resources:
- name: resources
path: "/subscriptions"
operations:
- name: get-resources
method: GET
- type: http
namespace: snowflake
baseUri: "https://mercedes-benz.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.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
Fetches LinkedIn Campaign Manager performance metrics for Mercedes-Benz brand campaigns and posts a weekly summary to the marketing Microsoft Teams channel.
naftiko: "0.5"
info:
label: "LinkedIn Brand Campaign Performance Digest"
description: "Fetches LinkedIn Campaign Manager performance metrics for Mercedes-Benz brand campaigns and posts a weekly summary to the marketing Microsoft Teams channel."
tags:
- marketing
- social-media
- linkedin
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: marketing-reporting
port: 8080
tools:
- name: digest-linkedin-campaign-performance
description: "Retrieve LinkedIn Campaign Manager analytics for a specified date range for Mercedes-Benz brand campaigns and post a formatted digest to the marketing Microsoft Teams channel."
inputParameters:
- name: date_range_start
in: body
type: string
description: "Start date for the campaign performance report (YYYY-MM-DD)."
- name: date_range_end
in: body
type: string
description: "End date for the campaign performance report (YYYY-MM-DD)."
steps:
- name: get-analytics
type: call
call: "linkedin.get-campaign-analytics"
with:
start_date: "{{date_range_start}}"
end_date: "{{date_range_end}}"
- name: post-digest
type: call
call: "msteams.post-channel-message"
with:
channel_id: "marketing-brand"
message: "LinkedIn Campaign Report ({{date_range_start}} to {{date_range_end}}): Impressions: {{get-analytics.impressions}} | Clicks: {{get-analytics.clicks}} | CTR: {{get-analytics.ctr}}%"
consumes:
- type: http
namespace: linkedin
baseUri: "https://api.linkedin.com/v2"
authentication:
type: bearer
token: "$secrets.linkedin_token"
resources:
- name: campaign-analytics
path: "/adAnalyticsV2"
operations:
- name: get-campaign-analytics
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Retrieves P1 incident details, creates Teams bridge channel, and posts stakeholder updates.
naftiko: "0.5"
info:
label: "Major Incident Communication Orchestrator"
description: "Retrieves P1 incident details, creates Teams bridge channel, and posts stakeholder updates."
tags:
- itsm
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: itsm
port: 8080
tools:
- name: major-orchestrate
description: "Retrieves P1 incident details, creates Teams bridge channel, and posts stakeholder updates."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "servicenow.create-incident"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "msteams.send-message"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/mercedes-benz/channels/general/messages"
operations:
- name: send-message
method: POST
When Datadog alert fires, creates Jira incident ticket and posts Teams notification.
naftiko: "0.5"
info:
label: "Monitoring Alert to Jira Bridge"
description: "When Datadog alert fires, creates Jira incident ticket and posts Teams notification."
tags:
- monitoring
- datadog
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: monitoring
port: 8080
tools:
- name: monitoring-orchestrate
description: "When Datadog alert fires, creates Jira incident ticket and posts Teams notification."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "datadog.get-monitor"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "jira.create-issue"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "msteams.send-message"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
header: "DD-API-KEY"
key: "$secrets.datadog_api_key"
resources:
- name: monitors
path: "/monitor/{{{{monitor_id}}}}"
operations:
- name: get-monitor
method: GET
- type: http
namespace: jira
baseUri: "https://mercedes-benz.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_password"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/mercedes-benz/channels/general/messages"
operations:
- name: send-message
method: POST
Provisions Okta application access for a new employee based on their department and role, and logs the provisioning action in ServiceNow.
naftiko: "0.5"
info:
label: "Okta Access Provisioning"
description: "Provisions Okta application access for a new employee based on their department and role, and logs the provisioning action in ServiceNow."
tags:
- identity
- security
- okta
- servicenow
- access-management
capability:
exposes:
- type: mcp
namespace: identity-ops
port: 8080
tools:
- name: provision-okta-access
description: "Given a user email, department, and list of required application IDs, assign the user to Okta application groups and log the access provisioning in a ServiceNow ticket."
inputParameters:
- name: user_email
in: body
type: string
description: "The employee's work email address to provision in Okta."
- name: department
in: body
type: string
description: "The employee's department for role-based group assignment."
- name: application_ids
in: body
type: string
description: "Comma-separated list of Okta application IDs to provision access for."
steps:
- name: get-user
type: call
call: "okta.get-user-by-email"
with:
email: "{{user_email}}"
- name: assign-groups
type: call
call: "okta.assign-user-to-group"
with:
user_id: "{{get-user.id}}"
department: "{{department}}"
- name: log-provisioning
type: call
call: "servicenow.create-incident"
with:
short_description: "Okta access provisioned for {{user_email}}"
category: "access_management"
description: "Applications: {{application_ids}} | Department: {{department}}"
consumes:
- type: http
namespace: okta
baseUri: "https://mercedes-benz.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: users
path: "/users"
operations:
- name: get-user-by-email
method: GET
- name: groups
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: servicenow
baseUri: "https://mercedes-benz.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incident
path: "/table/incident"
operations:
- name: create-incident
method: POST
When Okta detects a suspicious login event, creates a high-priority ServiceNow security incident and notifies the security operations team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Okta Suspicious Login Alert"
description: "When Okta detects a suspicious login event, creates a high-priority ServiceNow security incident and notifies the security operations team via Microsoft Teams."
tags:
- security
- identity
- okta
- servicenow
- microsoft-teams
- siem
capability:
exposes:
- type: mcp
namespace: security-ops
port: 8080
tools:
- name: handle-suspicious-login
description: "Given an Okta suspicious login event with user ID and event details, create a high-priority ServiceNow security incident and alert the security operations Microsoft Teams channel for immediate investigation."
inputParameters:
- name: user_email
in: body
type: string
description: "The email of the user who triggered the suspicious login event."
- name: event_id
in: body
type: string
description: "The Okta system log event ID for the suspicious login."
- name: ip_address
in: body
type: string
description: "The IP address from which the suspicious login originated."
steps:
- name: get-event
type: call
call: "okta.get-system-log-event"
with:
event_id: "{{event_id}}"
- name: create-security-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Suspicious login detected for {{user_email}} from {{ip_address}}"
urgency: "1"
category: "security"
description: "Okta Event ID: {{event_id}} | User: {{user_email}} | IP: {{ip_address}} | Details: {{get-event.outcome}}"
- name: alert-soc
type: call
call: "msteams.post-channel-message"
with:
channel_id: "security-operations"
message: "SECURITY ALERT: Suspicious login for {{user_email}} from {{ip_address}}. Incident: {{create-security-incident.number}}. Investigate immediately."
consumes:
- type: http
namespace: okta
baseUri: "https://mercedes-benz.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_api_token"
placement: header
resources:
- name: system-logs
path: "/logs/{{event_id}}"
inputParameters:
- name: event_id
in: path
operations:
- name: get-system-log-event
method: GET
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incident
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Retrieves all Okta group memberships for a user.
naftiko: "0.5"
info:
label: "Okta User Group Membership Lookup"
description: "Retrieves all Okta group memberships for a user."
tags:
- security
- okta
- identity
capability:
exposes:
- type: mcp
namespace: identity
port: 8080
tools:
- name: get-user-groups
description: "Retrieves all Okta group memberships for a user."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary lookup parameter."
call: "okta.get-user-groups"
with:
param_1: "{{param_1}}"
outputParameters:
- name: result
type: string
mapping: "$.result"
consumes:
- type: http
namespace: okta
baseUri: "https://mercedes-benz.okta.com/api/v1"
authentication:
type: bearer
token: "$secrets.okta_token"
resources:
- name: get-user-groups
path: "/users/{{{{user_id}}}}/groups"
operations:
- name: get-user-groups
method: GET
Detects Workday org changes, updates Okta groups and Azure AD, and logs in ServiceNow.
naftiko: "0.5"
info:
label: "Org Change to Identity Sync"
description: "Detects Workday org changes, updates Okta groups and Azure AD, and logs in ServiceNow."
tags:
- hr
- workday
- okta
- azure
- servicenow
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: org-orchestrate
description: "Detects Workday org changes, updates Okta groups and Azure AD, and logs in ServiceNow."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "workday.get-worker"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "okta.get-user-groups"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "azure.get-resources"
with:
input: "{{step-1.result}}"
- name: step-4
type: call
call: "servicenow.create-incident"
with:
input: "{{step-1.result}}"
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: "/mercedes-benz/workers/{{worker_id}}"
operations:
- name: get-worker
method: GET
- type: http
namespace: okta
baseUri: "https://mercedes-benz.okta.com/api/v1"
authentication:
type: bearer
token: "$secrets.okta_token"
resources:
- name: user-groups
path: "/users/{{{{user_id}}}}/groups"
operations:
- name: get-user-groups
method: GET
- type: http
namespace: azure
baseUri: "https://management.azure.com"
authentication:
type: bearer
token: "$secrets.azure_token"
resources:
- name: resources
path: "/subscriptions"
operations:
- name: get-resources
method: GET
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.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
Retrieves a firewall security rule from Palo Alto Panorama by rule name.
naftiko: "0.5"
info:
label: "Palo Alto Firewall Rule Lookup"
description: "Retrieves a firewall security rule from Palo Alto Panorama by rule name."
tags:
- security
- palo-alto-networks
- firewall
capability:
exposes:
- type: mcp
namespace: network-security
port: 8080
tools:
- name: get-firewall-rule
description: "Retrieves a firewall security rule from Palo Alto Panorama by rule name."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary lookup parameter."
call: "paloalto.get-security-rule"
with:
param_1: "{{param_1}}"
outputParameters:
- name: result
type: string
mapping: "$.result"
consumes:
- type: http
namespace: paloalto
baseUri: "https://panorama.mercedes-benz.com/restapi/v10.2"
authentication:
type: bearer
token: "$secrets.paloalto_token"
resources:
- name: get-security-rule
path: "/Policies/SecurityRules?name={{{{rule_name}}}}"
operations:
- name: get-security-rule
method: GET
Checks the refresh status of a Power BI dataset.
naftiko: "0.5"
info:
label: "Power BI Dataset Refresh Status"
description: "Checks the refresh status of a Power BI dataset."
tags:
- analytics
- power-bi
- reporting
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: get-dataset-refresh-status
description: "Checks the refresh status of a Power BI dataset."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary lookup parameter."
call: "powerbi.get-refresh-history"
with:
param_1: "{{param_1}}"
outputParameters:
- name: result
type: string
mapping: "$.result"
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: get-refresh-history
path: "/datasets/{{{{dataset_id}}}}/refreshes?$top=1"
operations:
- name: get-refresh-history
method: GET
Triggers a Power BI dataset refresh for the global sales dashboard and notifies the analytics team via Microsoft Teams when complete.
naftiko: "0.5"
info:
label: "Power BI Sales Dashboard Refresh"
description: "Triggers a Power BI dataset refresh for the global sales dashboard and notifies the analytics team via Microsoft Teams when complete."
tags:
- analytics
- reporting
- power-bi
- microsoft-teams
- data
capability:
exposes:
- type: mcp
namespace: analytics-reporting
port: 8080
tools:
- name: refresh-sales-dashboard
description: "Given a Power BI dataset ID, trigger a dataset refresh for the global sales dashboard and notify the analytics Microsoft Teams channel upon completion."
inputParameters:
- name: dataset_id
in: body
type: string
description: "The Power BI dataset ID to refresh."
- name: workspace_id
in: body
type: string
description: "The Power BI workspace ID containing the dataset."
steps:
- name: trigger-refresh
type: call
call: "powerbi.refresh-dataset"
with:
dataset_id: "{{dataset_id}}"
workspace_id: "{{workspace_id}}"
- name: notify-analytics
type: call
call: "msteams.post-channel-message"
with:
channel_id: "analytics-team"
message: "Power BI sales dashboard refresh initiated for dataset {{dataset_id}}. Refresh ID: {{trigger-refresh.refresh_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: refresh-dataset
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
When a production line downtime event is logged, creates a high-priority ServiceNow incident, pages the maintenance team via PagerDuty, and posts an alert to the plant operations Teams channel.
naftiko: "0.5"
info:
label: "Production Line Downtime Notification"
description: "When a production line downtime event is logged, creates a high-priority ServiceNow incident, pages the maintenance team via PagerDuty, and posts an alert to the plant operations Teams channel."
tags:
- manufacturing
- operations
- servicenow
- pagerduty
- microsoft-teams
- downtime
capability:
exposes:
- type: mcp
namespace: plant-ops
port: 8080
tools:
- name: handle-line-downtime
description: "Given a production line downtime event with plant ID, line number, and cause, create a critical ServiceNow incident, page the maintenance team via PagerDuty, and alert the plant operations Teams channel."
inputParameters:
- name: plant_id
in: body
type: string
description: "The plant identifier where the downtime occurred (e.g., SIN for Sindelfingen)."
- name: line_number
in: body
type: string
description: "The production line number that is down."
- name: downtime_cause
in: body
type: string
description: "Brief description of the cause of the production line downtime."
steps:
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Production line down: Plant {{plant_id}} Line {{line_number}}"
urgency: "1"
category: "manufacturing"
description: "Cause: {{downtime_cause}}"
- name: page-maintenance
type: call
call: "pagerduty.create-incident"
with:
title: "LINE DOWN: Plant {{plant_id}} Line {{line_number}}"
severity: "critical"
body: "{{downtime_cause}}. SNOW: {{create-incident.number}}"
- name: notify-plant
type: call
call: "msteams.post-channel-message"
with:
channel_id: "plant-operations"
message: "PRODUCTION ALERT: Line {{line_number}} at Plant {{plant_id}} is DOWN. Cause: {{downtime_cause}} | Incident: {{create-incident.number}} | Maintenance paged."
consumes:
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incident
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_token"
placement: header
resources:
- name: incidents
path: "/incidents"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Queries SAP for budget utilization, checks Snowflake analytics, and sends Teams alert when spending exceeds threshold.
naftiko: "0.5"
info:
label: "Program Budget Alert Workflow"
description: "Queries SAP for budget utilization, checks Snowflake analytics, and sends Teams alert when spending exceeds threshold."
tags:
- finance
- sap
- snowflake
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finance
port: 8080
tools:
- name: program-orchestrate
description: "Queries SAP for budget utilization, checks Snowflake analytics, and sends Teams alert when spending exceeds threshold."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "sap.get-po"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "snowflake.run-query"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "msteams.send-message"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: sap
baseUri: "https://mercedes-benz-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}}}}')"
operations:
- name: get-po
method: GET
- type: http
namespace: snowflake
baseUri: "https://mercedes-benz.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/mercedes-benz/channels/general/messages"
operations:
- name: send-message
method: POST
Retrieves SAP purchase requisition, identifies Workday approver, and sends Teams approval request.
naftiko: "0.5"
info:
label: "Purchase Requisition Approval Routing"
description: "Retrieves SAP purchase requisition, identifies Workday approver, and sends Teams approval request."
tags:
- procurement
- sap
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: purchase-orchestrate
description: "Retrieves SAP purchase requisition, identifies Workday approver, and sends Teams approval request."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "sap.get-po"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "workday.get-worker"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "msteams.send-message"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: sap
baseUri: "https://mercedes-benz-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}}}}')"
operations:
- name: get-po
method: GET
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/mercedes-benz/workers/{{worker_id}}"
operations:
- name: get-worker
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/mercedes-benz/channels/general/messages"
operations:
- name: send-message
method: POST
Pulls LinkedIn pipeline, creates Workday requisition, and notifies hiring manager via Teams.
naftiko: "0.5"
info:
label: "Recruiting Pipeline to Workday Sync"
description: "Pulls LinkedIn pipeline, creates Workday requisition, and notifies hiring manager via Teams."
tags:
- hr
- linkedin
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: recruiting-orchestrate
description: "Pulls LinkedIn pipeline, creates Workday requisition, and notifies hiring manager via Teams."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "linkedin.get-job-pipeline"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "workday.get-worker"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "msteams.send-message"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: linkedin
baseUri: "https://api.linkedin.com/v2"
authentication:
type: bearer
token: "$secrets.linkedin_token"
resources:
- name: postings
path: "/jobPostings"
operations:
- name: get-job-pipeline
method: GET
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/mercedes-benz/workers/{{worker_id}}"
operations:
- name: get-worker
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/mercedes-benz/channels/general/messages"
operations:
- name: send-message
method: POST
Gathers completed Jira issues, generates Confluence release notes, and notifies stakeholders via Teams.
naftiko: "0.5"
info:
label: "Release Documentation Generator"
description: "Gathers completed Jira issues, generates Confluence release notes, and notifies stakeholders via Teams."
tags:
- devops
- jira
- confluence
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: release-orchestrate
description: "Gathers completed Jira issues, generates Confluence release notes, and notifies stakeholders via Teams."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "jira.create-issue"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "confluence.create-page"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "msteams.send-message"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: jira
baseUri: "https://mercedes-benz.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_password"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: confluence
baseUri: "https://mercedes-benz.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_password"
resources:
- name: pages
path: "/content"
operations:
- name: create-page
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/mercedes-benz/channels/general/messages"
operations:
- name: send-message
method: POST
Creates ServiceNow change for GitHub release, triggers Terraform deployment, and posts Teams notification.
naftiko: "0.5"
info:
label: "Release to Deployment Pipeline"
description: "Creates ServiceNow change for GitHub release, triggers Terraform deployment, and posts Teams notification."
tags:
- devops
- github
- servicenow
- terraform
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: release-orchestrate
description: "Creates ServiceNow change for GitHub release, triggers Terraform deployment, and posts Teams notification."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "github.get-branch-protection"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "servicenow.create-incident"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "terraform.get-workspace"
with:
input: "{{step-1.result}}"
- name: step-4
type: call
call: "msteams.send-message"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: repos
path: "/repos/{{{{repo}}}}/branches/main/protection"
operations:
- name: get-branch-protection
method: GET
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.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: terraform
baseUri: "https://app.terraform.io/api/v2"
authentication:
type: bearer
token: "$secrets.terraform_token"
resources:
- name: workspaces
path: "/organizations/mercedes-benz/workspaces"
operations:
- name: get-workspace
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/mercedes-benz/channels/general/messages"
operations:
- name: send-message
method: POST
Retrieves SAP Ariba RFQ, sends vendor notification via Graph, and updates Salesforce opportunity.
naftiko: "0.5"
info:
label: "RFQ to Vendor Notification"
description: "Retrieves SAP Ariba RFQ, sends vendor notification via Graph, and updates Salesforce opportunity."
tags:
- procurement
- sap-ariba
- microsoft-graph
- salesforce
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: rfq-orchestrate
description: "Retrieves SAP Ariba RFQ, sends vendor notification via Graph, and updates Salesforce opportunity."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "ariba.get-vendor"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "msgraph.send-mail"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "salesforce.get-opportunity"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: ariba
baseUri: "https://openapi.ariba.com/api/procurement/v2"
authentication:
type: bearer
token: "$secrets.ariba_token"
resources:
- name: vendors
path: "/vendors/{{{{vendor_id}}}}"
operations:
- name: get-vendor
method: GET
- type: http
namespace: msgraph
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/me/sendMail"
operations:
- name: send-mail
method: POST
- type: http
namespace: salesforce
baseUri: "https://mercedes-benz.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: opportunities
path: "/sobjects/Opportunity"
operations:
- name: get-opportunity
method: GET
Enriches a new Salesforce lead with company data from LinkedIn and updates the CRM record with verified contact and firmographic information.
naftiko: "0.5"
info:
label: "Salesforce Lead Enrichment"
description: "Enriches a new Salesforce lead with company data from LinkedIn and updates the CRM record with verified contact and firmographic information."
tags:
- sales
- crm
- salesforce
- linkedin
- lead-enrichment
capability:
exposes:
- type: mcp
namespace: crm-enrichment
port: 8080
tools:
- name: enrich-lead
description: "Given a Salesforce lead ID, retrieve the lead, look up the company on LinkedIn for firmographic data, and update the Salesforce record with enriched information."
inputParameters:
- name: lead_id
in: body
type: string
description: "The Salesforce Lead ID to enrich."
steps:
- name: get-lead
type: call
call: "salesforce-lookup.get-lead"
with:
lead_id: "{{lead_id}}"
- name: lookup-company
type: call
call: "linkedin.search-company"
with:
company_name: "{{get-lead.company}}"
- name: update-lead
type: call
call: "salesforce-update.update-lead"
with:
lead_id: "{{lead_id}}"
employee_count: "{{lookup-company.staffCount}}"
industry: "{{lookup-company.industries}}"
consumes:
- type: http
namespace: salesforce-lookup
baseUri: "https://mercedes-benz.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: lead
path: "/sobjects/Lead/{{lead_id}}"
inputParameters:
- name: lead_id
in: path
operations:
- name: get-lead
method: GET
- type: http
namespace: linkedin
baseUri: "https://api.linkedin.com/v2"
authentication:
type: bearer
token: "$secrets.linkedin_token"
resources:
- name: organizations
path: "/organizations"
operations:
- name: search-company
method: GET
- type: http
namespace: salesforce-update
baseUri: "https://mercedes-benz.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: lead
path: "/sobjects/Lead/{{lead_id}}"
inputParameters:
- name: lead_id
in: path
operations:
- name: update-lead
method: PATCH
When a Salesforce opportunity is marked Close Won, logs a SAP S/4HANA revenue entry and notifies the sales leadership team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Salesforce Opportunity Close Won Notification"
description: "When a Salesforce opportunity is marked Close Won, logs a SAP S/4HANA revenue entry and notifies the sales leadership team via Microsoft Teams."
tags:
- sales
- crm
- salesforce
- sap-s4hana
- microsoft-teams
- revenue
capability:
exposes:
- type: mcp
namespace: sales-ops
port: 8080
tools:
- name: handle-opportunity-won
description: "Given a Salesforce opportunity ID that has been marked Close Won, retrieve deal details, create a revenue entry in SAP S/4HANA, and celebrate the win in the sales Microsoft Teams channel."
inputParameters:
- name: opportunity_id
in: body
type: string
description: "The Salesforce Opportunity ID that has been closed as won."
steps:
- name: get-opportunity
type: call
call: "salesforce.get-opportunity"
with:
opportunity_id: "{{opportunity_id}}"
- name: create-revenue-entry
type: call
call: "sap-s4.post-revenue"
with:
customer: "{{get-opportunity.account_name}}"
amount: "{{get-opportunity.amount}}"
currency: "{{get-opportunity.currency_iso_code}}"
- name: notify-sales-team
type: call
call: "msteams.post-channel-message"
with:
channel_id: "sales-wins"
message: "Deal Won! {{get-opportunity.account_name}} - {{get-opportunity.amount}} {{get-opportunity.currency_iso_code}}. Opportunity: {{opportunity_id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://mercedes-benz.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: opportunity
path: "/sobjects/Opportunity/{{opportunity_id}}"
inputParameters:
- name: opportunity_id
in: path
operations:
- name: get-opportunity
method: GET
- type: http
namespace: sap-s4
baseUri: "https://mercedes-benz-s4.sap.com/sap/opu/odata/sap/FI_REVENUE_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: revenue-entries
path: "/A_RevenueEntry"
operations:
- name: post-revenue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Retrieves a Salesforce opportunity by ID.
naftiko: "0.5"
info:
label: "Salesforce Opportunity Lookup"
description: "Retrieves a Salesforce opportunity by ID."
tags:
- sales
- salesforce
- crm
capability:
exposes:
- type: mcp
namespace: crm
port: 8080
tools:
- name: get-opportunity
description: "Retrieves a Salesforce opportunity by ID."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary lookup parameter."
call: "salesforce.get-opportunity"
with:
param_1: "{{param_1}}"
outputParameters:
- name: result
type: string
mapping: "$.result"
consumes:
- type: http
namespace: salesforce
baseUri: "https://mercedes-benz.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: get-opportunity
path: "/sobjects/Opportunity/{{{{id}}}}"
operations:
- name: get-opportunity
method: GET
Queries SAP Ariba for contracts expiring within 90 days and creates Jira tasks for the procurement team to initiate renewal negotiations.
naftiko: "0.5"
info:
label: "SAP Ariba Contract Renewal Alert"
description: "Queries SAP Ariba for contracts expiring within 90 days and creates Jira tasks for the procurement team to initiate renewal negotiations."
tags:
- procurement
- sap-ariba
- jira
- contract-management
capability:
exposes:
- type: mcp
namespace: procurement-ops
port: 8080
tools:
- name: alert-expiring-contracts
description: "Query SAP Ariba for supplier contracts expiring within a configurable number of days and create Jira tasks for the procurement team to begin renewal negotiations."
inputParameters:
- name: days_ahead
in: body
type: integer
description: "Number of days ahead to check for expiring contracts (e.g., 90)."
steps:
- name: get-expiring
type: call
call: "sap-ariba.list-expiring-contracts"
with:
days_ahead: "{{days_ahead}}"
- name: create-renewal-task
type: call
call: "jira.create-issue"
with:
project_key: "PROC"
issuetype: "Task"
summary: "Contract renewals due within {{days_ahead}} days - {{get-expiring.contract_count}} contracts"
description: "{{get-expiring.contract_list}}"
consumes:
- type: http
namespace: sap-ariba
baseUri: "https://openapi.ariba.com/api/contract/v1"
authentication:
type: apikey
key: "apiKey"
value: "$secrets.ariba_api_key"
placement: header
resources:
- name: contracts
path: "/contracts"
operations:
- name: list-expiring-contracts
method: GET
- type: http
namespace: jira
baseUri: "https://mercedes-benz.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Retrieves budget vs. actuals for a SAP cost center and fiscal period.
naftiko: "0.5"
info:
label: "SAP Cost Center Budget Lookup"
description: "Retrieves budget vs. actuals for a SAP cost center and fiscal period."
tags:
- finance
- sap
- budget
capability:
exposes:
- type: mcp
namespace: erp-finance
port: 8080
tools:
- name: get-cost-center-budget
description: "Retrieves budget vs. actuals for a SAP cost center and fiscal period."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary lookup parameter."
call: "sap.get-budget"
with:
param_1: "{{param_1}}"
outputParameters:
- name: result
type: string
mapping: "$.result"
consumes:
- type: http
namespace: sap
baseUri: "https://mercedes-benz-s4.sap.com/sap/opu/odata/sap/API_CSTCTRBUDGET_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: get-budget
path: "/A_CostCenterBudget(CostCenter='{{{{cost_center}}}}',FiscalYear='{{{{fiscal_year}}}}')"
operations:
- name: get-budget
method: GET
At the start of a financial period close, creates a set of Jira tasks for the finance team covering all required close activities in SAP S/4HANA.
naftiko: "0.5"
info:
label: "SAP Finance Period Close Checklist"
description: "At the start of a financial period close, creates a set of Jira tasks for the finance team covering all required close activities in SAP S/4HANA."
tags:
- finance
- period-close
- sap-s4hana
- jira
- erp
capability:
exposes:
- type: mcp
namespace: finance-close
port: 8080
tools:
- name: initiate-period-close
description: "Given a fiscal period and year, create a structured set of Jira tasks for the Mercedes-Benz finance team covering all SAP S/4HANA period close activities including journal entries, reconciliations, and reporting."
inputParameters:
- name: fiscal_period
in: body
type: string
description: "The fiscal period number (01-12) to close."
- name: fiscal_year
in: body
type: string
description: "The fiscal year to close (e.g., 2026)."
steps:
- name: get-close-status
type: call
call: "sap-s4.get-period-close-status"
with:
fiscal_period: "{{fiscal_period}}"
fiscal_year: "{{fiscal_year}}"
- name: create-close-epic
type: call
call: "jira.create-issue"
with:
project_key: "FIN"
issuetype: "Epic"
summary: "Period Close {{fiscal_period}}/{{fiscal_year}} - {{get-close-status.company_code}}"
description: "Period close activities for fiscal period {{fiscal_period}}, year {{fiscal_year}}"
consumes:
- type: http
namespace: sap-s4
baseUri: "https://mercedes-benz-s4.sap.com/sap/opu/odata/sap/FI_PERIOD_CLOSE_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: period-close-status
path: "/PeriodCloseStatusSet"
operations:
- name: get-period-close-status
method: GET
- type: http
namespace: jira
baseUri: "https://mercedes-benz.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Retrieves a goods receipt document from SAP by material document number.
naftiko: "0.5"
info:
label: "SAP Goods Receipt Lookup"
description: "Retrieves a goods receipt document from SAP by material document number."
tags:
- logistics
- sap
- warehouse
capability:
exposes:
- type: mcp
namespace: erp-logistics
port: 8080
tools:
- name: get-goods-receipt
description: "Retrieves a goods receipt document from SAP by material document number."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary lookup parameter."
call: "sap.get-goods-receipt"
with:
param_1: "{{param_1}}"
outputParameters:
- name: result
type: string
mapping: "$.result"
consumes:
- type: http
namespace: sap
baseUri: "https://mercedes-benz-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_DOCUMENT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: get-goods-receipt
path: "/A_MaterialDocumentHeader('{{{{doc_number}}}}')"
operations:
- name: get-goods-receipt
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
- materials
capability:
exposes:
- type: mcp
namespace: erp
port: 8080
tools:
- name: get-material
description: "Retrieves material master data from SAP S/4HANA by material number."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary lookup parameter."
call: "sap.get-material"
with:
param_1: "{{param_1}}"
outputParameters:
- name: result
type: string
mapping: "$.result"
consumes:
- type: http
namespace: sap
baseUri: "https://mercedes-benz-s4.sap.com/sap/opu/odata/sap/API_PRODUCT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: get-material
path: "/A_Product('{{{{material}}}}')"
operations:
- name: get-material
method: GET
Retrieves a purchase order from SAP S/4HANA by PO number, returning header status, vendor details, and line items.
naftiko: "0.5"
info:
label: "SAP Purchase Order Lookup"
description: "Retrieves a purchase order from SAP S/4HANA by PO number, returning header status, vendor details, and line items."
tags:
- finance
- procurement
- sap-s4hana
- erp
capability:
exposes:
- type: mcp
namespace: erp-procurement
port: 8080
tools:
- name: get-purchase-order
description: "Look up a SAP S/4HANA purchase order by PO number. Returns header status, vendor name, total value, currency, and open line items. Use when reviewing procurement status or approving invoices."
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.CompanyName"
- name: total_value
type: string
mapping: "$.d.TotalAmount"
- name: currency
type: string
mapping: "$.d.TransactionCurrency"
consumes:
- type: http
namespace: sap-s4
baseUri: "https://mercedes-benz-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
Detects expiring Azure Key Vault secrets, rotates them, updates Terraform, and creates ServiceNow change.
naftiko: "0.5"
info:
label: "Secret Rotation Orchestrator"
description: "Detects expiring Azure Key Vault secrets, rotates them, updates Terraform, and creates ServiceNow change."
tags:
- security
- azure
- terraform
- servicenow
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: secret-orchestrate
description: "Detects expiring Azure Key Vault secrets, rotates them, updates Terraform, and creates ServiceNow change."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "azure.get-resources"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "terraform.get-workspace"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "servicenow.create-incident"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: azure
baseUri: "https://management.azure.com"
authentication:
type: bearer
token: "$secrets.azure_token"
resources:
- name: resources
path: "/subscriptions"
operations:
- name: get-resources
method: GET
- type: http
namespace: terraform
baseUri: "https://app.terraform.io/api/v2"
authentication:
type: bearer
token: "$secrets.terraform_token"
resources:
- name: workspaces
path: "/organizations/mercedes-benz/workspaces"
operations:
- name: get-workspace
method: GET
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.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
Queries Workday for employee data, checks Okta group assignments, and logs verification in ServiceNow.
naftiko: "0.5"
info:
label: "Security Clearance Verification Workflow"
description: "Queries Workday for employee data, checks Okta group assignments, and logs verification in ServiceNow."
tags:
- security
- workday
- okta
- servicenow
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: security-orchestrate
description: "Queries Workday for employee data, checks Okta group assignments, and logs verification in ServiceNow."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "workday.get-worker"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "okta.get-user-groups"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "servicenow.create-incident"
with:
input: "{{step-1.result}}"
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: "/mercedes-benz/workers/{{worker_id}}"
operations:
- name: get-worker
method: GET
- type: http
namespace: okta
baseUri: "https://mercedes-benz.okta.com/api/v1"
authentication:
type: bearer
token: "$secrets.okta_token"
resources:
- name: user-groups
path: "/users/{{{{user_id}}}}/groups"
operations:
- name: get-user-groups
method: GET
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.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
Retrieves a pending ServiceNow change request, notifies the Change Advisory Board via Microsoft Teams, and updates the change record with approval decision.
naftiko: "0.5"
info:
label: "ServiceNow Change Management Approval"
description: "Retrieves a pending ServiceNow change request, notifies the Change Advisory Board via Microsoft Teams, and updates the change record with approval decision."
tags:
- itsm
- change-management
- servicenow
- microsoft-teams
- approval
capability:
exposes:
- type: mcp
namespace: change-management
port: 8080
tools:
- name: process-change-approval
description: "Given a ServiceNow change request number and approval decision, retrieve the change details, update the approval status in ServiceNow, and notify the CAB via Microsoft Teams."
inputParameters:
- name: change_number
in: body
type: string
description: "The ServiceNow change request number (e.g., CHG0012345)."
- name: approval_decision
in: body
type: string
description: "The approval decision: approved or rejected."
- name: approver_comments
in: body
type: string
description: "Comments from the approver explaining the decision."
steps:
- name: get-change
type: call
call: "servicenow-lookup.get-change-request"
with:
change_number: "{{change_number}}"
- name: update-approval
type: call
call: "servicenow-update.update-change-approval"
with:
change_number: "{{change_number}}"
state: "{{approval_decision}}"
comments: "{{approver_comments}}"
- name: notify-cab
type: call
call: "msteams.post-channel-message"
with:
channel_id: "change-advisory-board"
message: "Change {{change_number}} - {{get-change.short_description}}: {{approval_decision}}. Comments: {{approver_comments}}"
consumes:
- type: http
namespace: servicenow-lookup
baseUri: "https://mercedes-benz.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: change-request
path: "/table/change_request"
inputParameters:
- name: change_number
in: query
operations:
- name: get-change-request
method: GET
- type: http
namespace: servicenow-update
baseUri: "https://mercedes-benz.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: change-approval
path: "/table/change_request/{{sys_id}}"
inputParameters:
- name: sys_id
in: path
operations:
- name: update-change-approval
method: PATCH
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Escalates a high-priority ServiceNow incident to the on-call engineer via PagerDuty and posts context to Microsoft Teams.
naftiko: "0.5"
info:
label: "ServiceNow Incident Escalation"
description: "Escalates a high-priority ServiceNow incident to the on-call engineer via PagerDuty and posts context to Microsoft Teams."
tags:
- itsm
- incident-response
- servicenow
- pagerduty
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: itsm-ops
port: 8080
tools:
- name: escalate-incident
description: "Given a ServiceNow incident number, retrieve incident details, trigger a PagerDuty alert to the on-call engineer, and post full context to the IT ops Microsoft Teams channel."
inputParameters:
- name: incident_number
in: body
type: string
description: "The ServiceNow incident number to escalate (e.g., INC0012345)."
- name: escalation_reason
in: body
type: string
description: "The reason for escalation to be included in the PagerDuty alert and Teams message."
steps:
- name: get-incident
type: call
call: "servicenow.get-incident"
with:
incident_number: "{{incident_number}}"
- name: trigger-pagerduty
type: call
call: "pagerduty.create-incident"
with:
title: "Escalated: {{incident_number}} - {{get-incident.short_description}}"
severity: "{{get-incident.urgency}}"
body: "{{escalation_reason}}"
- name: notify-team
type: call
call: "msteams.post-channel-message"
with:
channel_id: "it-operations"
message: "Incident Escalated: {{incident_number}} | {{get-incident.short_description}} | PagerDuty: {{trigger-pagerduty.incident_id}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incident
path: "/table/incident"
inputParameters:
- name: incident_number
in: query
operations:
- name: get-incident
method: GET
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.pagerduty_token"
placement: header
resources:
- name: incidents
path: "/incidents"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Looks up a ServiceNow incident by number and returns state, priority, and assignment group.
naftiko: "0.5"
info:
label: "ServiceNow Incident Status Lookup"
description: "Looks up a ServiceNow incident by number and returns state, priority, and assignment group."
tags:
- itsm
- servicenow
- incident
capability:
exposes:
- type: mcp
namespace: itsm
port: 8080
tools:
- name: get-incident-status
description: "Looks up a ServiceNow incident by number and returns state, priority, and assignment group."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary lookup parameter."
call: "servicenow.get-incident"
with:
param_1: "{{param_1}}"
outputParameters:
- name: result
type: string
mapping: "$.result"
consumes:
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: get-incident
path: "/table/incident?sysparm_query=number={{{{number}}}}"
operations:
- name: get-incident
method: GET
Responds to Splunk alert by isolating CrowdStrike endpoint and creating ServiceNow incident.
naftiko: "0.5"
info:
label: "SIEM Alert to Endpoint Isolation"
description: "Responds to Splunk alert by isolating CrowdStrike endpoint and creating ServiceNow incident."
tags:
- security
- splunk
- crowdstrike
- servicenow
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: siem-orchestrate
description: "Responds to Splunk alert by isolating CrowdStrike endpoint and creating ServiceNow incident."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "splunk.run-search"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "crowdstrike.get-device"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "servicenow.create-incident"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: splunk
baseUri: "https://splunk.mercedes-benz.com:8089/services"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: search
path: "/search/jobs"
operations:
- name: run-search
method: POST
- type: http
namespace: crowdstrike
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.crowdstrike_token"
resources:
- name: devices
path: "/devices/entities/devices/v2"
operations:
- name: get-device
method: GET
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.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
Queries Snowflake for failed data pipeline tasks, creates Jira issues for each failure, and posts a summary report to Microsoft Teams.
naftiko: "0.5"
info:
label: "Snowflake Data Pipeline Health Check"
description: "Queries Snowflake for failed data pipeline tasks, creates Jira issues for each failure, and posts a summary report to Microsoft Teams."
tags:
- data
- analytics
- snowflake
- jira
- microsoft-teams
- monitoring
capability:
exposes:
- type: mcp
namespace: data-ops
port: 8080
tools:
- name: check-pipeline-health
description: "Query Snowflake for failed pipeline tasks in the last 24 hours, create Jira issues for each critical failure, and post a summary to the data engineering Microsoft Teams channel."
inputParameters:
- name: warehouse
in: body
type: string
description: "The Snowflake warehouse name to check for task failures."
- name: lookback_hours
in: body
type: integer
description: "Number of hours to look back for failed tasks (default 24)."
steps:
- name: get-failures
type: call
call: "snowflake.query-task-failures"
with:
warehouse: "{{warehouse}}"
lookback_hours: "{{lookback_hours}}"
- name: create-issue
type: call
call: "jira.create-issue"
with:
project_key: "DATA"
issuetype: "Bug"
summary: "Snowflake pipeline failures detected in {{warehouse}}"
description: "{{get-failures.failure_count}} tasks failed in the last {{lookback_hours}} hours. Details: {{get-failures.failure_summary}}"
- name: notify-team
type: call
call: "msteams.post-channel-message"
with:
channel_id: "data-engineering"
message: "Pipeline Health Alert: {{get-failures.failure_count}} Snowflake task failures detected in {{warehouse}}. Jira: {{create-issue.key}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://mercedes-benz.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: query-task-failures
method: POST
- type: http
namespace: jira
baseUri: "https://mercedes-benz.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Checks the execution status of a Snowflake query by ID.
naftiko: "0.5"
info:
label: "Snowflake Query Execution Status"
description: "Checks the execution status of a Snowflake query by ID."
tags:
- data
- snowflake
- monitoring
capability:
exposes:
- type: mcp
namespace: data-platform
port: 8080
tools:
- name: get-query-status
description: "Checks the execution status of a Snowflake query by ID."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary lookup parameter."
call: "snowflake.get-query-status"
with:
param_1: "{{param_1}}"
outputParameters:
- name: result
type: string
mapping: "$.result"
consumes:
- type: http
namespace: snowflake
baseUri: "https://mercedes-benz.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: get-query-status
path: "/statements/{{{{query_id}}}}"
operations:
- name: get-query-status
method: GET
Queries Snowflake for long-running queries exceeding a cost threshold, creates Jira tickets for optimization, and alerts the data platform team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Snowflake Query Performance Monitor"
description: "Queries Snowflake for long-running queries exceeding a cost threshold, creates Jira tickets for optimization, and alerts the data platform team via Microsoft Teams."
tags:
- data
- snowflake
- performance
- jira
- microsoft-teams
- monitoring
capability:
exposes:
- type: mcp
namespace: data-performance
port: 8080
tools:
- name: monitor-query-performance
description: "Identify Snowflake queries running longer than a specified duration threshold, create Jira optimization tickets for each, and post a summary to the data platform Microsoft Teams channel."
inputParameters:
- name: duration_threshold_minutes
in: body
type: integer
description: "Minimum query duration in minutes to flag for optimization (e.g., 30)."
- name: cost_threshold_credits
in: body
type: number
description: "Minimum Snowflake credit consumption to flag (e.g., 10.0)."
steps:
- name: get-slow-queries
type: call
call: "snowflake.query-slow-queries"
with:
duration_threshold: "{{duration_threshold_minutes}}"
cost_threshold: "{{cost_threshold_credits}}"
- name: create-optimization-ticket
type: call
call: "jira.create-issue"
with:
project_key: "DATA"
issuetype: "Task"
summary: "Snowflake query optimization: {{get-slow-queries.query_count}} queries above threshold"
description: "Queries consuming over {{cost_threshold_credits}} credits or running >{{duration_threshold_minutes}} min: {{get-slow-queries.query_summary}}"
- name: notify-data-team
type: call
call: "msteams.post-channel-message"
with:
channel_id: "data-platform"
message: "Snowflake Performance Alert: {{get-slow-queries.query_count}} queries flagged. Jira: {{create-optimization-ticket.key}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://mercedes-benz.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: query-slow-queries
method: POST
- type: http
namespace: jira
baseUri: "https://mercedes-benz.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Identifies stale Confluence SOPs, creates Jira review tasks, and sends reminders via Teams.
naftiko: "0.5"
info:
label: "SOP Review Cycle Orchestrator"
description: "Identifies stale Confluence SOPs, creates Jira review tasks, and sends reminders via Teams."
tags:
- knowledge-management
- confluence
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: knowledge_management
port: 8080
tools:
- name: sop-orchestrate
description: "Identifies stale Confluence SOPs, creates Jira review tasks, and sends reminders via Teams."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "confluence.create-page"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "jira.create-issue"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "msteams.send-message"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: confluence
baseUri: "https://mercedes-benz.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_password"
resources:
- name: pages
path: "/content"
operations:
- name: create-page
method: POST
- type: http
namespace: jira
baseUri: "https://mercedes-benz.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_password"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/mercedes-benz/channels/general/messages"
operations:
- name: send-message
method: POST
Retrieves the latest results from a Splunk saved search.
naftiko: "0.5"
info:
label: "Splunk Saved Search Results Lookup"
description: "Retrieves the latest results from a Splunk saved search."
tags:
- security
- splunk
- siem
capability:
exposes:
- type: mcp
namespace: siem
port: 8080
tools:
- name: get-saved-search-results
description: "Retrieves the latest results from a Splunk saved search."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary lookup parameter."
call: "splunk.get-saved-search"
with:
param_1: "{{param_1}}"
outputParameters:
- name: result
type: string
mapping: "$.result"
consumes:
- type: http
namespace: splunk
baseUri: "https://splunk.mercedes-benz.com:8089/servicesNS/admin/search"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: get-saved-search
path: "/saved/searches/{{{{search_name}}}}/history"
operations:
- name: get-saved-search
method: GET
Receives a supplier invoice, looks up the matching PO in SAP S/4HANA, validates amounts, and routes the invoice for approval via SAP Ariba.
naftiko: "0.5"
info:
label: "Supplier Invoice Processing"
description: "Receives a supplier invoice, looks up the matching PO in SAP S/4HANA, validates amounts, and routes the invoice for approval via SAP Ariba."
tags:
- finance
- procurement
- sap-s4hana
- sap-ariba
- invoice-processing
capability:
exposes:
- type: mcp
namespace: invoice-ops
port: 8080
tools:
- name: process-supplier-invoice
description: "Given a supplier invoice number and amount, retrieve the linked PO from SAP S/4HANA, validate the amount, and submit the invoice for approval in SAP Ariba."
inputParameters:
- name: invoice_number
in: body
type: string
description: "The supplier invoice number to process."
- name: po_number
in: body
type: string
description: "The SAP PO number associated with this invoice."
- name: invoice_amount
in: body
type: number
description: "The total invoice amount in the invoice currency."
steps:
- name: get-po
type: call
call: "sap-s4.get-po"
with:
po_number: "{{po_number}}"
- name: submit-invoice
type: call
call: "sap-ariba.create-invoice"
with:
invoice_number: "{{invoice_number}}"
po_number: "{{po_number}}"
amount: "{{invoice_amount}}"
vendor_id: "{{get-po.supplier_id}}"
consumes:
- type: http
namespace: sap-s4
baseUri: "https://mercedes-benz-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
- type: http
namespace: sap-ariba
baseUri: "https://openapi.ariba.com/api/invoice/v1"
authentication:
type: apikey
key: "apiKey"
value: "$secrets.ariba_api_key"
placement: header
resources:
- name: invoices
path: "/invoices"
operations:
- name: create-invoice
method: POST
Retrieves Ariba supplier profile, Snowflake performance data, and creates ServiceNow risk record.
naftiko: "0.5"
info:
label: "Supplier Risk Assessment Orchestrator"
description: "Retrieves Ariba supplier profile, Snowflake performance data, and creates ServiceNow risk record."
tags:
- procurement
- sap-ariba
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: supplier-orchestrate
description: "Retrieves Ariba supplier profile, Snowflake performance data, and creates ServiceNow risk record."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "ariba.get-vendor"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "snowflake.run-query"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "servicenow.create-incident"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: ariba
baseUri: "https://openapi.ariba.com/api/procurement/v2"
authentication:
type: bearer
token: "$secrets.ariba_token"
resources:
- name: vendors
path: "/vendors/{{{{vendor_id}}}}"
operations:
- name: get-vendor
method: GET
- type: http
namespace: snowflake
baseUri: "https://mercedes-benz.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.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
Responds to suspicious Okta login by checking CrowdStrike endpoint and creating ServiceNow incident.
naftiko: "0.5"
info:
label: "Suspicious Login Response Workflow"
description: "Responds to suspicious Okta login by checking CrowdStrike endpoint and creating ServiceNow incident."
tags:
- security
- okta
- crowdstrike
- servicenow
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: suspicious-orchestrate
description: "Responds to suspicious Okta login by checking CrowdStrike endpoint and creating ServiceNow incident."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "okta.get-user-groups"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "crowdstrike.get-device"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "servicenow.create-incident"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: okta
baseUri: "https://mercedes-benz.okta.com/api/v1"
authentication:
type: bearer
token: "$secrets.okta_token"
resources:
- name: user-groups
path: "/users/{{{{user_id}}}}/groups"
operations:
- name: get-user-groups
method: GET
- type: http
namespace: crowdstrike
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.crowdstrike_token"
resources:
- name: devices
path: "/devices/entities/devices/v2"
operations:
- name: get-device
method: GET
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.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
Processes access request by verifying identity in Workday, provisioning Okta group, creating ServiceNow request, and notifying via Teams.
naftiko: "0.5"
info:
label: "System Access Request Orchestrator"
description: "Processes access request by verifying identity in Workday, provisioning Okta group, creating ServiceNow request, and notifying via Teams."
tags:
- security
- workday
- okta
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: system-orchestrate
description: "Processes access request by verifying identity in Workday, provisioning Okta group, creating ServiceNow request, and notifying via Teams."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "workday.get-worker"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "okta.get-user-groups"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "servicenow.create-incident"
with:
input: "{{step-1.result}}"
- name: step-4
type: call
call: "msteams.send-message"
with:
input: "{{step-1.result}}"
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: "/mercedes-benz/workers/{{worker_id}}"
operations:
- name: get-worker
method: GET
- type: http
namespace: okta
baseUri: "https://mercedes-benz.okta.com/api/v1"
authentication:
type: bearer
token: "$secrets.okta_token"
resources:
- name: user-groups
path: "/users/{{{{user_id}}}}/groups"
operations:
- name: get-user-groups
method: GET
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/mercedes-benz/channels/general/messages"
operations:
- name: send-message
method: POST
Disables Azure AD account, suspends Okta sessions, and creates ServiceNow asset recovery ticket.
naftiko: "0.5"
info:
label: "Termination to Access Revocation"
description: "Disables Azure AD account, suspends Okta sessions, and creates ServiceNow asset recovery ticket."
tags:
- hr
- azure
- okta
- servicenow
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: termination-orchestrate
description: "Disables Azure AD account, suspends Okta sessions, and creates ServiceNow asset recovery ticket."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "azure.get-resources"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "okta.get-user-groups"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "servicenow.create-incident"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: azure
baseUri: "https://management.azure.com"
authentication:
type: bearer
token: "$secrets.azure_token"
resources:
- name: resources
path: "/subscriptions"
operations:
- name: get-resources
method: GET
- type: http
namespace: okta
baseUri: "https://mercedes-benz.okta.com/api/v1"
authentication:
type: bearer
token: "$secrets.okta_token"
resources:
- name: user-groups
path: "/users/{{{{user_id}}}}/groups"
operations:
- name: get-user-groups
method: GET
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.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
Creates a new Terraform Cloud workspace for a software team, configures GitHub repository linking, and notifies the platform team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Terraform Cloud Workspace Provisioning"
description: "Creates a new Terraform Cloud workspace for a software team, configures GitHub repository linking, and notifies the platform team via Microsoft Teams."
tags:
- cloud
- infrastructure
- terraform
- github
- microsoft-teams
- provisioning
capability:
exposes:
- type: mcp
namespace: platform-provisioning
port: 8080
tools:
- name: provision-terraform-workspace
description: "Given a team name and GitHub repository, create a Terraform Cloud workspace, link it to the repository, and notify the platform engineering team via Microsoft Teams."
inputParameters:
- name: team_name
in: body
type: string
description: "The software team name for whom the workspace is being created."
- name: repository
in: body
type: string
description: "The GitHub repository to link to the Terraform workspace (e.g., mercedes-benz/my-service)."
- name: environment
in: body
type: string
description: "The target environment: dev, staging, or production."
steps:
- name: create-workspace
type: call
call: "terraform.create-workspace"
with:
name: "{{team_name}}-{{environment}}"
vcs_repo: "{{repository}}"
- name: notify-platform
type: call
call: "msteams.post-channel-message"
with:
channel_id: "platform-engineering"
message: "Terraform workspace created: {{team_name}}-{{environment}} linked to {{repository}}. Workspace ID: {{create-workspace.workspace_id}}"
consumes:
- type: http
namespace: terraform
baseUri: "https://app.terraform.io/api/v2"
authentication:
type: bearer
token: "$secrets.terraform_token"
resources:
- name: workspaces
path: "/organizations/mercedes-benz/workspaces"
operations:
- name: create-workspace
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Checks Terraform workspace for drift, creates ServiceNow change, and triggers remediation plan.
naftiko: "0.5"
info:
label: "Terraform Drift Detection and Remediation"
description: "Checks Terraform workspace for drift, creates ServiceNow change, and triggers remediation plan."
tags:
- devops
- terraform
- servicenow
capability:
exposes:
- type: mcp
namespace: devops
port: 8080
tools:
- name: terraform-orchestrate
description: "Checks Terraform workspace for drift, creates ServiceNow change, and triggers remediation plan."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "terraform.get-workspace"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "servicenow.create-incident"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: terraform
baseUri: "https://app.terraform.io/api/v2"
authentication:
type: bearer
token: "$secrets.terraform_token"
resources:
- name: workspaces
path: "/organizations/mercedes-benz/workspaces"
operations:
- name: get-workspace
method: GET
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.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
Retrieves current status of a Terraform Cloud workspace.
naftiko: "0.5"
info:
label: "Terraform Workspace Status Lookup"
description: "Retrieves current status of a Terraform Cloud workspace."
tags:
- devops
- terraform
- infrastructure
capability:
exposes:
- type: mcp
namespace: infrastructure
port: 8080
tools:
- name: get-workspace-status
description: "Retrieves current status of a Terraform Cloud workspace."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary lookup parameter."
call: "terraform.get-workspace"
with:
param_1: "{{param_1}}"
outputParameters:
- name: result
type: string
mapping: "$.result"
consumes:
- type: http
namespace: terraform
baseUri: "https://app.terraform.io/api/v2"
authentication:
type: bearer
token: "$secrets.terraform_token"
resources:
- name: get-workspace
path: "/organizations/mercedes-benz/workspaces/{{{{workspace}}}}"
operations:
- name: get-workspace
method: GET
Pulls CrowdStrike threat indicators, runs Splunk search, and creates ServiceNow security incident.
naftiko: "0.5"
info:
label: "Threat Intel to Log Search"
description: "Pulls CrowdStrike threat indicators, runs Splunk search, and creates ServiceNow security incident."
tags:
- security
- crowdstrike
- splunk
- servicenow
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: threat-orchestrate
description: "Pulls CrowdStrike threat indicators, runs Splunk search, and creates ServiceNow security incident."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "crowdstrike.get-device"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "splunk.run-search"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "servicenow.create-incident"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: crowdstrike
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.crowdstrike_token"
resources:
- name: devices
path: "/devices/entities/devices/v2"
operations:
- name: get-device
method: GET
- type: http
namespace: splunk
baseUri: "https://splunk.mercedes-benz.com:8089/services"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: search
path: "/search/jobs"
operations:
- name: run-search
method: POST
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.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
Retrieves Concur travel request, validates SAP budget, and sends Teams approval request.
naftiko: "0.5"
info:
label: "Travel Request Approval Orchestrator"
description: "Retrieves Concur travel request, validates SAP budget, and sends Teams approval request."
tags:
- travel
- sap-concur
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: travel
port: 8080
tools:
- name: travel-orchestrate
description: "Retrieves Concur travel request, validates SAP budget, and sends Teams approval request."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "concur.get-travel-request"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "sap.get-po"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "msteams.send-message"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: concur
baseUri: "https://us.api.concursolutions.com/api/v3.0"
authentication:
type: bearer
token: "$secrets.concur_token"
resources:
- name: travel-requests
path: "/travelrequest/requests/{{{{request_id}}}}"
operations:
- name: get-travel-request
method: GET
- type: http
namespace: sap
baseUri: "https://mercedes-benz-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}}}}')"
operations:
- name: get-po
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/mercedes-benz/channels/general/messages"
operations:
- name: send-message
method: POST
When a quality defect is reported in the manufacturing system, creates a ServiceNow incident, notifies the quality engineering team via Microsoft Teams, and logs the defect in SAP S/4HANA.
naftiko: "0.5"
info:
label: "Vehicle Quality Defect Incident Response"
description: "When a quality defect is reported in the manufacturing system, creates a ServiceNow incident, notifies the quality engineering team via Microsoft Teams, and logs the defect in SAP S/4HANA."
tags:
- manufacturing
- quality
- servicenow
- sap-s4hana
- microsoft-teams
- incident-response
capability:
exposes:
- type: mcp
namespace: quality-ops
port: 8080
tools:
- name: handle-quality-defect
description: "Given a quality defect report with vehicle model, defect code, and production line, create a ServiceNow incident, log the defect in SAP S/4HANA, and alert the quality team in Microsoft Teams."
inputParameters:
- name: vehicle_model
in: body
type: string
description: "The vehicle model where the defect was found (e.g., C-Class, EQS)."
- name: defect_code
in: body
type: string
description: "The manufacturing defect code identifier."
- name: production_line
in: body
type: string
description: "The production line number where the defect was detected."
- name: severity
in: body
type: string
description: "Defect severity: critical, major, or minor."
steps:
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Quality defect on {{vehicle_model}} - Code {{defect_code}}"
urgency: "{{severity}}"
category: "manufacturing_quality"
- name: log-defect
type: call
call: "sap-s4.create-quality-notification"
with:
vehicle_model: "{{vehicle_model}}"
defect_code: "{{defect_code}}"
production_line: "{{production_line}}"
- name: notify-team
type: call
call: "msteams.post-channel-message"
with:
channel_id: "quality-engineering"
message: "Quality Alert: {{vehicle_model}} defect {{defect_code}} on line {{production_line}}. Incident: {{create-incident.number}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incident
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: sap-s4
baseUri: "https://mercedes-benz-s4.sap.com/sap/opu/odata/sap/QM_QMEL_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: quality-notifications
path: "/QualityNotificationSet"
operations:
- name: create-quality-notification
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Runs vendor compliance check with SAP Ariba data, Snowflake contract history, and ServiceNow audit task.
naftiko: "0.5"
info:
label: "Vendor Compliance Audit Orchestrator"
description: "Runs vendor compliance check with SAP Ariba data, Snowflake contract history, and ServiceNow audit task."
tags:
- procurement
- sap-ariba
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: vendor-orchestrate
description: "Runs vendor compliance check with SAP Ariba data, Snowflake contract history, and ServiceNow audit task."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "ariba.get-vendor"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "snowflake.run-query"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "servicenow.create-incident"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: ariba
baseUri: "https://openapi.ariba.com/api/procurement/v2"
authentication:
type: bearer
token: "$secrets.ariba_token"
resources:
- name: vendors
path: "/vendors/{{{{vendor_id}}}}"
operations:
- name: get-vendor
method: GET
- type: http
namespace: snowflake
baseUri: "https://mercedes-benz.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.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
Creates ServiceNow change for VM patching, triggers Terraform apply, and validates with Datadog.
naftiko: "0.5"
info:
label: "VM Patching Orchestrator"
description: "Creates ServiceNow change for VM patching, triggers Terraform apply, and validates with Datadog."
tags:
- cloud
- servicenow
- terraform
- datadog
capability:
exposes:
- type: mcp
namespace: cloud
port: 8080
tools:
- name: vm-orchestrate
description: "Creates ServiceNow change for VM patching, triggers Terraform apply, and validates with Datadog."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "servicenow.create-incident"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "terraform.get-workspace"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "datadog.get-monitor"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.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: terraform
baseUri: "https://app.terraform.io/api/v2"
authentication:
type: bearer
token: "$secrets.terraform_token"
resources:
- name: workspaces
path: "/organizations/mercedes-benz/workspaces"
operations:
- name: get-workspace
method: GET
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
header: "DD-API-KEY"
key: "$secrets.datadog_api_key"
resources:
- name: monitors
path: "/monitor/{{{{monitor_id}}}}"
operations:
- name: get-monitor
method: GET
Creates ServiceNow change for patching, triggers Terraform deployment, and validates with Datadog.
naftiko: "0.5"
info:
label: "Vulnerability Patch Deployment Orchestrator"
description: "Creates ServiceNow change for patching, triggers Terraform deployment, and validates with Datadog."
tags:
- security
- servicenow
- terraform
- datadog
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: vulnerability-orchestrate
description: "Creates ServiceNow change for patching, triggers Terraform deployment, and validates with Datadog."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary input parameter for this workflow."
steps:
- name: step-1
type: call
call: "servicenow.create-incident"
with:
input: "{{param_1}}"
- name: step-2
type: call
call: "terraform.get-workspace"
with:
input: "{{step-1.result}}"
- name: step-3
type: call
call: "datadog.get-monitor"
with:
input: "{{step-1.result}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.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: terraform
baseUri: "https://app.terraform.io/api/v2"
authentication:
type: bearer
token: "$secrets.terraform_token"
resources:
- name: workspaces
path: "/organizations/mercedes-benz/workspaces"
operations:
- name: get-workspace
method: GET
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
header: "DD-API-KEY"
key: "$secrets.datadog_api_key"
resources:
- name: monitors
path: "/monitor/{{{{monitor_id}}}}"
operations:
- name: get-monitor
method: GET
When a compensation change request is submitted in Workday, routes it for approval via ServiceNow and notifies the HR business partner via Microsoft Teams.
naftiko: "0.5"
info:
label: "Workday Compensation Change Approval"
description: "When a compensation change request is submitted in Workday, routes it for approval via ServiceNow and notifies the HR business partner via Microsoft Teams."
tags:
- hr
- compensation
- workday
- servicenow
- approval
capability:
exposes:
- type: mcp
namespace: hr-compensation
port: 8080
tools:
- name: route-compensation-change
description: "Given a Workday compensation change event ID, retrieve the change details, create a ServiceNow approval task for the HR business partner, and notify them via Microsoft Teams."
inputParameters:
- name: event_id
in: body
type: string
description: "The Workday compensation change event ID to route for approval."
steps:
- name: get-comp-change
type: call
call: "workday.get-compensation-event"
with:
event_id: "{{event_id}}"
- name: create-approval
type: call
call: "servicenow.create-incident"
with:
short_description: "Compensation change approval required: {{get-comp-change.employee_name}}"
category: "hr_compensation"
description: "Employee: {{get-comp-change.employee_name}} | Change: {{get-comp-change.change_amount}} | Effective: {{get-comp-change.effective_date}}"
- name: notify-hrbp
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{get-comp-change.hrbp_email}}"
message: "Compensation change approval needed for {{get-comp-change.employee_name}}. ServiceNow: {{create-approval.number}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: basic
username: "$secrets.workday_user"
password: "$secrets.workday_password"
resources:
- name: compensation-events
path: "/mercedes-benz/compensationEvents/{{event_id}}"
inputParameters:
- name: event_id
in: path
operations:
- name: get-compensation-event
method: GET
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incident
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Retrieves an employee record from Workday by worker ID, returning name, department, and manager.
naftiko: "0.5"
info:
label: "Workday Employee Directory Lookup"
description: "Retrieves an employee record from Workday by worker ID, returning name, department, and manager."
tags:
- hr
- workday
- directory
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: get-employee
description: "Retrieves an employee record from Workday by worker ID, returning name, department, and manager."
inputParameters:
- name: param_1
in: body
type: string
description: "Primary lookup parameter."
call: "workday.get-worker"
with:
param_1: "{{param_1}}"
outputParameters:
- name: result
type: string
mapping: "$.result"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: get-worker
path: "/mercedes-benz/workers/{{{{worker_id}}}}"
operations:
- name: get-worker
method: GET
Retrieves current headcount by department and cost center from Workday for workforce planning and finance reporting.
naftiko: "0.5"
info:
label: "Workday Headcount Report"
description: "Retrieves current headcount by department and cost center from Workday for workforce planning and finance reporting."
tags:
- hr
- reporting
- workday
- headcount
capability:
exposes:
- type: mcp
namespace: hr-reporting
port: 8080
tools:
- name: get-headcount-snapshot
description: "Returns current headcount grouped by department and cost center from Workday. Use for workforce planning, budget reviews, and executive reporting."
call: "workday.list-workers"
outputParameters:
- name: workers
type: array
mapping: "$.Report_Entry"
items:
- name: employee_id
type: string
mapping: "$.Employee_ID"
- name: full_name
type: string
mapping: "$.Employee_Name"
- name: department
type: string
mapping: "$.Department"
- name: cost_center
type: string
mapping: "$.Cost_Center"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: basic
username: "$secrets.workday_user"
password: "$secrets.workday_password"
resources:
- name: workers
path: "/mercedes-benz/workers"
operations:
- name: list-workers
method: GET
When an employee completes a mandatory compliance training in Workday Learning, updates the compliance tracking record in ServiceNow and notifies the compliance team.
naftiko: "0.5"
info:
label: "Workday Learning Completion to Compliance Tracker"
description: "When an employee completes a mandatory compliance training in Workday Learning, updates the compliance tracking record in ServiceNow and notifies the compliance team."
tags:
- hr
- compliance
- workday
- servicenow
- training
capability:
exposes:
- type: mcp
namespace: compliance-training
port: 8080
tools:
- name: record-training-completion
description: "Given a Workday Learning training completion event with employee ID and course ID, update the compliance record in ServiceNow and notify the compliance team via Microsoft Teams."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday employee ID who completed the training."
- name: course_id
in: body
type: string
description: "The Workday Learning course ID that was completed."
- name: completion_date
in: body
type: string
description: "The date the training was completed (YYYY-MM-DD)."
steps:
- name: get-course
type: call
call: "workday.get-learning-course"
with:
course_id: "{{course_id}}"
- name: update-compliance
type: call
call: "servicenow.update-compliance-record"
with:
employee_id: "{{employee_id}}"
course_name: "{{get-course.name}}"
completion_date: "{{completion_date}}"
- name: notify-compliance
type: call
call: "msteams.post-channel-message"
with:
channel_id: "compliance-team"
message: "Training completed: Employee {{employee_id}} finished {{get-course.name}} on {{completion_date}}. Compliance record updated: {{update-compliance.sys_id}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: basic
username: "$secrets.workday_user"
password: "$secrets.workday_password"
resources:
- name: learning-courses
path: "/mercedes-benz/learningCourses/{{course_id}}"
inputParameters:
- name: course_id
in: path
operations:
- name: get-learning-course
method: GET
- type: http
namespace: servicenow
baseUri: "https://mercedes-benz.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: compliance-records
path: "/table/sn_compliance_policy_statement"
operations:
- name: update-compliance-record
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
When a new position requisition is approved in Workday, creates a Jira task for the recruiting team and notifies the hiring manager via Microsoft Teams.
naftiko: "0.5"
info:
label: "Workday Position Requisition to Jira Task"
description: "When a new position requisition is approved in Workday, creates a Jira task for the recruiting team and notifies the hiring manager via Microsoft Teams."
tags:
- hr
- recruiting
- workday
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: recruiting-ops
port: 8080
tools:
- name: create-recruiting-task
description: "Given a Workday position requisition ID, retrieve requisition details and create a Jira task for the recruiting team, then notify the hiring manager via Microsoft Teams."
inputParameters:
- name: requisition_id
in: body
type: string
description: "The Workday position requisition ID that has been approved."
steps:
- name: get-requisition
type: call
call: "workday.get-job-requisition"
with:
requisition_id: "{{requisition_id}}"
- name: create-task
type: call
call: "jira.create-issue"
with:
project_key: "RECRUIT"
issuetype: "Task"
summary: "Recruit for: {{get-requisition.job_title}} - {{get-requisition.department}}"
description: "Workday Req ID: {{requisition_id}}\nJob Title: {{get-requisition.job_title}}\nDepartment: {{get-requisition.department}}\nLocation: {{get-requisition.location}}"
- name: notify-manager
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{get-requisition.hiring_manager_email}}"
message: "Your position requisition for {{get-requisition.job_title}} has been approved. Recruiting task created: {{create-task.key}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: basic
username: "$secrets.workday_user"
password: "$secrets.workday_password"
resources:
- name: job-requisitions
path: "/mercedes-benz/jobRequisitions/{{requisition_id}}"
inputParameters:
- name: requisition_id
in: path
operations:
- name: get-job-requisition
method: GET
- type: http
namespace: jira
baseUri: "https://mercedes-benz.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST