Volkswagen Capabilities
Naftiko 0.5 capability definitions for Volkswagen - 100 capabilities showing integration workflows and service orchestrations.
Uses Anthropic to summarize lengthy vehicle technical specifications and engineering change documents, storing summaries in SharePoint for engineering teams to access.
naftiko: "0.5"
info:
label: "Anthropic Vehicle Technical Document Summarization"
description: "Uses Anthropic to summarize lengthy vehicle technical specifications and engineering change documents, storing summaries in SharePoint for engineering teams to access."
tags:
- ai
- document-processing
- anthropic
- sharepoint
- engineering
- automotive
capability:
exposes:
- type: mcp
namespace: ai-engineering-docs
port: 8080
tools:
- name: summarize-technical-document
description: "Given a vehicle technical specification or engineering change document, use Anthropic to generate a concise technical summary and store it in the engineering SharePoint library."
inputParameters:
- name: document_text
in: body
type: string
description: "Full text of the technical document to summarize."
- name: document_title
in: body
type: string
description: "Title of the technical document."
- name: document_type
in: body
type: string
description: "Type of document (e.g., technical_spec, engineering_change, homologation_report)."
- name: sharepoint_site_id
in: body
type: string
description: "SharePoint site ID for the engineering document library."
steps:
- name: summarize
type: call
call: "anthropic.create-message"
with:
model: "claude-opus-4-5"
max_tokens: 1024
prompt: "Summarize this {{document_type}} for automotive engineers. Highlight: 1) Key specifications or changes, 2) Safety or compliance implications, 3) Required actions or approvals. Be concise and technical. Document: {{document_text}}"
- name: store-summary
type: call
call: "sharepoint-eng.upload-file"
with:
site_id: "{{sharepoint_site_id}}"
folder_path: "EngineeringDocs/Summaries/{{document_type}}"
file_name: "{{document_title}}_summary.txt"
content: "{{summarize.content}}"
consumes:
- type: http
namespace: anthropic
baseUri: "https://api.anthropic.com/v1"
authentication:
type: apikey
key: "x-api-key"
value: "$secrets.anthropic_api_key"
placement: header
resources:
- name: messages
path: "/messages"
operations:
- name: create-message
method: POST
- type: http
namespace: sharepoint-eng
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: files
path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
- name: file_name
in: path
operations:
- name: upload-file
method: PUT
Detects Azure cloud spend anomalies for Volkswagen Group's digital and CARIAD software division accounts and creates ServiceNow FinOps tasks for the cloud team.
naftiko: "0.5"
info:
label: "Azure Cost Anomaly Response"
description: "Detects Azure cloud spend anomalies for Volkswagen Group's digital and CARIAD software division accounts and creates ServiceNow FinOps tasks for the cloud team."
tags:
- cloud
- finops
- azure
- servicenow
- cost-management
capability:
exposes:
- type: mcp
namespace: cloud-finops
port: 8080
tools:
- name: handle-azure-cost-anomaly
description: "Given an Azure subscription ID and billing period, detect cost anomalies and create a ServiceNow FinOps task for the cloud engineering team when spend exceeds budget."
inputParameters:
- name: subscription_id
in: body
type: string
description: "Azure subscription ID to check."
- name: billing_period
in: body
type: string
description: "Billing period in YYYYMM format."
- name: overage_threshold_pct
in: body
type: number
description: "Percent overage above budget that triggers a task."
steps:
- name: get-cost-summary
type: call
call: "azure-cost.get-usage-details"
with:
subscription_id: "{{subscription_id}}"
billing_period: "{{billing_period}}"
- name: create-finops-task
type: call
call: "servicenow-finops.create-task"
with:
short_description: "Azure cost anomaly: subscription {{subscription_id}} — {{billing_period}}"
description: "Actual spend: {{get-cost-summary.actual_cost}}. Budget: {{get-cost-summary.budget_amount}}. Overage: {{get-cost-summary.overage_pct}}%."
assignment_group: "Cloud_FinOps"
consumes:
- type: http
namespace: azure-cost
baseUri: "https://management.azure.com/subscriptions/{{subscription_id}}/providers/Microsoft.Consumption"
authentication:
type: bearer
token: "$secrets.azure_mgmt_token"
resources:
- name: usage-details
path: "/billingPeriods/{{billing_period}}/providers/Microsoft.Consumption/usageDetails"
inputParameters:
- name: subscription_id
in: path
- name: billing_period
in: path
operations:
- name: get-usage-details
method: GET
- type: http
namespace: servicenow-finops
baseUri: "https://vwgroup.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/sc_task"
operations:
- name: create-task
method: POST
Returns connected car platform health metrics from Datadog.
naftiko: "0.5"
info:
label: "Datadog Connected Car Health"
description: "Returns connected car platform health metrics from Datadog."
tags:
- automotive
- datadog
- connected-vehicles
capability:
exposes:
- type: mcp
namespace: datadog_connected_ca
port: 8080
tools:
- name: query-data
description: "Returns connected car platform health metrics from Datadog."
inputParameters:
- name: query_param
in: body
type: string
description: "The query parameter."
call: "snowflake-api.run-query"
with:
query_param: "{{query_param}}"
outputParameters:
- name: results
type: object
mapping: "$.data"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
Fetches Datadog SLO compliance data for Volkswagen Group's digital services and publishes a weekly report to the platform operations Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Datadog SLO Compliance Report"
description: "Fetches Datadog SLO compliance data for Volkswagen Group's digital services and publishes a weekly report to the platform operations Microsoft Teams channel."
tags:
- observability
- datadog
- microsoft-teams
- slo
- reporting
capability:
exposes:
- type: mcp
namespace: slo-reporting
port: 8080
tools:
- name: publish-slo-compliance-report
description: "Fetch SLO compliance data from Datadog for digital services and post a formatted weekly report to the platform ops Teams channel."
inputParameters:
- name: slo_ids
in: body
type: string
description: "Comma-separated Datadog SLO IDs to include in the report."
- name: timeframe
in: body
type: string
description: "Reporting timeframe: 7d, 30d, or 90d."
- name: platform_channel_id
in: body
type: string
description: "Microsoft Teams channel ID for the platform operations team."
steps:
- name: get-slo-data
type: call
call: "datadog-slo.get-slo-history"
with:
ids: "{{slo_ids}}"
timeframe: "{{timeframe}}"
- name: post-report
type: call
call: "msteams-platform.post-message"
with:
channel_id: "{{platform_channel_id}}"
text: "SLO Compliance Report ({{timeframe}}): {{get-slo-data.compliant_count}} compliant, {{get-slo-data.breached_count}} breached. Overall: {{get-slo-data.overall_pct}}%."
consumes:
- type: http
namespace: datadog-slo
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: slo-history
path: "/slo/history"
operations:
- name: get-slo-history
method: GET
- type: http
namespace: msteams-platform
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-message
method: POST
Monitors Datadog metrics for Volkswagen's over-the-air (OTA) vehicle software update infrastructure and creates ServiceNow incidents when update rollout failure rates exceed thresholds.
naftiko: "0.5"
info:
label: "Datadog Vehicle Software OTA Update Monitor"
description: "Monitors Datadog metrics for Volkswagen's over-the-air (OTA) vehicle software update infrastructure and creates ServiceNow incidents when update rollout failure rates exceed thresholds."
tags:
- observability
- datadog
- servicenow
- ota
- automotive
- software-update
capability:
exposes:
- type: mcp
namespace: ota-monitoring
port: 8080
tools:
- name: monitor-ota-rollout-health"
description: "Given a Datadog monitor ID and OTA rollout ID, fetch rollout failure rate metrics and create a ServiceNow incident if the failure rate exceeds the defined threshold."
inputParameters:
- name: monitor_id
in: body
type: string
description: "Datadog monitor ID tracking OTA rollout health."
- name: rollout_id
in: body
type: string
description: "OTA software update rollout identifier."
- name: failure_threshold_pct
in: body
type: number
description: "Acceptable failure rate percentage threshold (e.g., 2.0 for 2%)."
steps:
- name: get-monitor-status
type: call
call: "datadog-ota.get-monitor"
with:
monitor_id: "{{monitor_id}}"
- name: create-incident
type: call
call: "servicenow-ota.create-incident"
with:
short_description: "OTA rollout failure: {{rollout_id}} exceeded {{failure_threshold_pct}}% threshold"
description: "Datadog monitor {{monitor_id}} detected OTA rollout {{rollout_id}} failure rate above threshold. Rollout may need to be paused."
category: "software_update"
urgency: "1"
consumes:
- type: http
namespace: datadog-ota
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: monitors
path: "/monitor/{{monitor_id}}"
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
- type: http
namespace: servicenow-ota
baseUri: "https://vwgroup.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
When an employee departure is recorded in SAP SuccessFactors, disables the Microsoft 365 account, closes open ServiceNow tickets, and notifies the manager via Teams.
naftiko: "0.5"
info:
label: "Employee Offboarding Workflow"
description: "When an employee departure is recorded in SAP SuccessFactors, disables the Microsoft 365 account, closes open ServiceNow tickets, and notifies the manager via Teams."
tags:
- hr
- offboarding
- sap-successfactors
- azure-ad
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: trigger-offboarding
description: "Given a SuccessFactors employee ID and last day, disable the Microsoft 365 account, close ServiceNow tickets, and notify the manager via Teams."
inputParameters:
- name: employee_id
in: body
type: string
description: "SAP SuccessFactors employee ID for the departing employee."
- name: last_day
in: body
type: string
description: "Last working day in YYYY-MM-DD format."
- name: manager_upn
in: body
type: string
description: "UPN of the departing employee's manager."
steps:
- name: get-employee
type: call
call: "successfactors-off.get-employee"
with:
employee_id: "{{employee_id}}"
- name: disable-account
type: call
call: "azuread-off.disable-user"
with:
user_id: "{{get-employee.azure_object_id}}"
- name: close-tickets
type: call
call: "servicenow-off.close-user-incidents"
with:
caller_email: "{{get-employee.work_email}}"
- name: notify-manager
type: call
call: "msteams-off.send-message"
with:
recipient_upn: "{{manager_upn}}"
text: "Offboarding complete for {{get-employee.full_name}} (last day: {{last_day}}). Microsoft 365 account disabled, open tickets closed."
consumes:
- type: http
namespace: successfactors-off
baseUri: "https://api4.successfactors.com/odata/v2"
authentication:
type: basic
username: "$secrets.sf_user"
password: "$secrets.sf_password"
resources:
- name: employees
path: "/PerPerson('{{employee_id}}')"
inputParameters:
- name: employee_id
in: path
operations:
- name: get-employee
method: GET
- type: http
namespace: azuread-off
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: servicenow-off
baseUri: "https://vwgroup.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: close-user-incidents
method: PATCH
- type: http
namespace: msteams-off
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
On new hire creation 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: "On new hire creation 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-365
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-onboarding
port: 8080
tools:
- name: trigger-onboarding
description: "Given a SuccessFactors employee ID and start date, orchestrate the full onboarding sequence across ServiceNow, Microsoft 365, and Microsoft Teams."
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 employee start date in YYYY-MM-DD format."
- name: plant_or_division
in: body
type: string
description: "The Volkswagen plant or business division the new hire is joining (e.g., Wolfsburg, Audi, Porsche)."
steps:
- name: get-employee
type: call
call: "successfactors.get-employee"
with:
employee_id: "{{employee_id}}"
- name: open-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "New hire onboarding: {{get-employee.full_name}}"
category: "hr_onboarding"
assigned_group: "IT_Onboarding"
description: "Onboarding for {{get-employee.full_name}} starting {{start_date}} at {{plant_or_division}}."
- name: provision-m365
type: call
call: "azuread.create-user"
with:
display_name: "{{get-employee.full_name}}"
user_principal_name: "{{get-employee.work_email}}"
department: "{{plant_or_division}}"
- name: send-welcome
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{get-employee.work_email}}"
text: "Welcome to Volkswagen Group, {{get-employee.first_name}}! Your IT onboarding ticket is {{open-ticket.number}} and your Microsoft 365 account is ready."
consumes:
- type: http
namespace: successfactors
baseUri: "https://api4.successfactors.com/odata/v2"
authentication:
type: basic
username: "$secrets.sf_user"
password: "$secrets.sf_password"
resources:
- name: employees
path: "/PerPerson('{{employee_id}}')"
inputParameters:
- name: employee_id
in: path
operations:
- name: get-employee
method: GET
- type: http
namespace: servicenow
baseUri: "https://vwgroup.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: azuread
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: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
When a GitHub Actions pipeline fails on a protected branch in Volkswagen Group's software repositories, creates a Jira bug and alerts the engineering Microsoft Teams channel.
naftiko: "0.5"
info:
label: "GitHub CI/CD Pipeline Failure Handler"
description: "When a GitHub Actions pipeline fails on a protected branch in Volkswagen Group's software repositories, creates a Jira bug and alerts the engineering Microsoft Teams channel."
tags:
- devops
- cicd
- github
- jira
- microsoft-teams
- incident-response
capability:
exposes:
- type: mcp
namespace: devops-cicd
port: 8080
tools:
- name: handle-pipeline-failure
description: "Given a GitHub Actions run ID, repository, and branch, create a Jira bug and post a Teams alert with full failure context."
inputParameters:
- name: run_id
in: body
type: string
description: "The GitHub Actions workflow run ID."
- name: repository
in: body
type: string
description: "GitHub repository in owner/repo format."
- name: branch
in: body
type: string
description: "The branch where the pipeline failed."
- name: workflow_name
in: body
type: string
description: "The failed workflow name."
steps:
- name: get-run
type: call
call: "github.get-workflow-run"
with:
repo: "{{repository}}"
run_id: "{{run_id}}"
- name: create-bug
type: call
call: "jira.create-issue"
with:
project_key: "SW"
issuetype: "Bug"
summary: "[CI Failure] {{repository}} / {{branch}} — {{workflow_name}}"
description: "Run {{run_id}} failed. URL: {{get-run.html_url}}"
- name: post-teams-alert
type: call
call: "msteams-eng.post-message"
with:
channel_id: "engineering-alerts"
text: "Pipeline Failure: {{repository}} | Branch: {{branch}} | Jira: {{create-bug.key}} | Run: {{get-run.html_url}}"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: workflow-runs
path: "/repos/{{repo}}/actions/runs/{{run_id}}"
inputParameters:
- name: repo
in: path
- name: run_id
in: path
operations:
- name: get-workflow-run
method: GET
- type: http
namespace: jira
baseUri: "https://vwgroup.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams-eng
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Monitors GitHub Dependabot alerts for critical dependency vulnerabilities in Volkswagen Group software repositories and creates ServiceNow security incidents.
naftiko: "0.5"
info:
label: "GitHub Dependabot Vulnerability Alert Handler"
description: "Monitors GitHub Dependabot alerts for critical dependency vulnerabilities in Volkswagen Group software repositories and creates ServiceNow security incidents."
tags:
- devops
- security
- github
- servicenow
- vulnerability
- dependency-management
capability:
exposes:
- type: mcp
namespace: dependency-security
port: 8080
tools:
- name: handle-dependabot-alert
description: "Given a GitHub Dependabot alert number and repository, fetch alert details and create a ServiceNow security incident for remediation tracking."
inputParameters:
- name: repository
in: body
type: string
description: "GitHub repository in owner/repo format."
- name: alert_number
in: body
type: integer
description: "The Dependabot alert number."
steps:
- name: get-alert
type: call
call: "github-dep.get-dependabot-alert"
with:
repo: "{{repository}}"
alert_number: "{{alert_number}}"
- name: create-sec-incident
type: call
call: "servicenow-vuln.create-incident"
with:
short_description: "Dependabot: {{get-alert.security_advisory.cve_id}} in {{repository}}"
description: "CVE: {{get-alert.security_advisory.cve_id}}. Severity: {{get-alert.security_advisory.severity}}. Package: {{get-alert.dependency.package.name}}."
category: "security"
consumes:
- type: http
namespace: github-dep
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: dependabot-alerts
path: "/repos/{{repo}}/dependabot/alerts/{{alert_number}}"
inputParameters:
- name: repo
in: path
- name: alert_number
in: path
operations:
- name: get-dependabot-alert
method: GET
- type: http
namespace: servicenow-vuln
baseUri: "https://vwgroup.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
On a successful GitHub release for Volkswagen Group software, generates formatted release notes via Anthropic, publishes to Teams, and updates the ServiceNow CMDB.
naftiko: "0.5"
info:
label: "GitHub Release Notes and CMDB Update"
description: "On a successful GitHub release for Volkswagen Group software, generates formatted release notes via Anthropic, publishes to Teams, and updates the ServiceNow CMDB."
tags:
- devops
- release-management
- github
- anthropic
- microsoft-teams
- servicenow
capability:
exposes:
- type: mcp
namespace: release-management
port: 8080
tools:
- name: publish-release-notes
description: "Given a GitHub release tag and repository, generate release notes via Anthropic, post to the Teams engineering channel, and update the ServiceNow CMDB CI record."
inputParameters:
- name: repository
in: body
type: string
description: "GitHub repository in owner/repo format."
- name: release_tag
in: body
type: string
description: "The GitHub release tag (e.g., v2.5.0)."
- name: teams_channel_id
in: body
type: string
description: "Microsoft Teams channel ID for release notes."
- name: cmdb_ci_id
in: body
type: string
description: "ServiceNow CMDB CI sys_id to update."
steps:
- name: get-release
type: call
call: "github-release.get-release"
with:
repo: "{{repository}}"
tag: "{{release_tag}}"
- name: format-notes
type: call
call: "anthropic-notes.create-message"
with:
model: "claude-opus-4-5"
max_tokens: 512
prompt: "Format these GitHub release notes for automotive software engineers. Highlight safety-critical changes prominently. Use bullet points. Notes: {{get-release.body}}"
- name: post-to-teams
type: call
call: "msteams-release.post-message"
with:
channel_id: "{{teams_channel_id}}"
text: "Release {{release_tag}} for {{repository}}: {{format-notes.content}}"
- name: update-cmdb
type: call
call: "servicenow-cmdb.update-ci"
with:
sys_id: "{{cmdb_ci_id}}"
version: "{{release_tag}}"
consumes:
- type: http
namespace: github-release
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: releases
path: "/repos/{{repo}}/releases/tags/{{tag}}"
inputParameters:
- name: repo
in: path
- name: tag
in: path
operations:
- name: get-release
method: GET
- type: http
namespace: anthropic-notes
baseUri: "https://api.anthropic.com/v1"
authentication:
type: apikey
key: "x-api-key"
value: "$secrets.anthropic_api_key"
placement: header
resources:
- name: messages
path: "/messages"
operations:
- name: create-message
method: POST
- type: http
namespace: msteams-release
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
- type: http
namespace: servicenow-cmdb
baseUri: "https://vwgroup.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: cmdb-ci
path: "/table/cmdb_ci_appl/{{sys_id}}"
inputParameters:
- name: sys_id
in: path
operations:
- name: update-ci
method: PATCH
Fetches critical GitHub Advanced Security alerts for Volkswagen Group software repositories and creates ServiceNow security incidents for each finding requiring remediation.
naftiko: "0.5"
info:
label: "GitHub Security Scan and Vulnerability Triage"
description: "Fetches critical GitHub Advanced Security alerts for Volkswagen Group software repositories and creates ServiceNow security incidents for each finding requiring remediation."
tags:
- devops
- security
- github
- servicenow
- vulnerability
capability:
exposes:
- type: mcp
namespace: security-scan
port: 8080
tools:
- name: triage-security-alerts
description: "Given a GitHub repository and severity level, list code scanning alerts and create ServiceNow security incidents for each. Use after automated security scans complete."
inputParameters:
- name: repository
in: body
type: string
description: "GitHub repository in owner/repo format."
- name: severity_filter
in: body
type: string
description: "Minimum severity to triage: critical or high."
steps:
- name: get-alerts
type: call
call: "github-sec.list-alerts"
with:
repo: "{{repository}}"
severity: "{{severity_filter}}"
- name: create-incident
type: call
call: "servicenow-sec.create-incident"
with:
short_description: "Security scan findings: {{repository}} ({{severity_filter}})"
description: "GitHub Advanced Security found {{get-alerts.total_count}} {{severity_filter}} alerts. Immediate remediation required."
category: "security"
urgency: "1"
consumes:
- type: http
namespace: github-sec
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: alerts
path: "/repos/{{repo}}/code-scanning/alerts"
inputParameters:
- name: repo
in: path
operations:
- name: list-alerts
method: GET
- type: http
namespace: servicenow-sec
baseUri: "https://vwgroup.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
Pulls sprint velocity metrics from Jira for Volkswagen's software development teams (CARIAD, VW.OS) and delivers a digest to the product engineering Teams channel.
naftiko: "0.5"
info:
label: "Jira Agile Sprint Velocity Digest"
description: "Pulls sprint velocity metrics from Jira for Volkswagen's software development teams (CARIAD, VW.OS) and delivers a digest to the product engineering Teams channel."
tags:
- devops
- jira
- microsoft-teams
- reporting
- agile
- cariad
capability:
exposes:
- type: mcp
namespace: agile-reporting
port: 8080
tools:
- name: digest-sprint-velocity
description: "Given a Jira board ID and sprint ID, fetch sprint completion metrics and post a velocity digest to the product engineering Teams channel. Use at sprint close."
inputParameters:
- name: board_id
in: body
type: string
description: "Jira board ID."
- name: sprint_id
in: body
type: string
description: "Jira sprint ID to report on."
- name: teams_channel_id
in: body
type: string
description: "Microsoft Teams channel ID for the sprint digest."
steps:
- name: get-sprint
type: call
call: "jira.get-sprint"
with:
board_id: "{{board_id}}"
sprint_id: "{{sprint_id}}"
- name: post-digest
type: call
call: "msteams-product.post-message"
with:
channel_id: "{{teams_channel_id}}"
text: "Sprint Digest: {{get-sprint.name}}. Done: {{get-sprint.issues_done}}, Incomplete: {{get-sprint.issues_not_done}}, Velocity: {{get-sprint.story_points_completed}} pts."
consumes:
- type: http
namespace: jira
baseUri: "https://vwgroup.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_token"
resources:
- name: sprints
path: "/board/{{board_id}}/sprint/{{sprint_id}}"
inputParameters:
- name: board_id
in: path
- name: sprint_id
in: path
operations:
- name: get-sprint
method: GET
- type: http
namespace: msteams-product
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-message
method: POST
Fetches LinkedIn engagement analytics for Volkswagen Group brand pages and delivers a weekly social media performance digest to the corporate communications Teams channel.
naftiko: "0.5"
info:
label: "LinkedIn Automotive Brand Engagement Digest"
description: "Fetches LinkedIn engagement analytics for Volkswagen Group brand pages and delivers a weekly social media performance digest to the corporate communications Teams channel."
tags:
- marketing
- linkedin
- microsoft-teams
- social-media
- reporting
- brand
capability:
exposes:
- type: mcp
namespace: brand-social-reporting
port: 8080
tools:
- name: digest-brand-engagement
description: "Fetch LinkedIn organization follower and engagement statistics for a given VW Group brand page and post a weekly digest to the corporate communications Teams channel."
inputParameters:
- name: organization_id
in: body
type: string
description: "LinkedIn organization URN for the VW Group brand page."
- name: brand_name
in: body
type: string
description: "Brand name for the report header (e.g., Volkswagen, Audi, Porsche)."
- name: teams_channel_id
in: body
type: string
description: "Teams channel ID for the corporate communications team."
steps:
- name: get-analytics
type: call
call: "linkedin.get-follower-stats"
with:
organization_id: "{{organization_id}}"
- name: post-digest
type: call
call: "msteams-comms.post-message"
with:
channel_id: "{{teams_channel_id}}"
text: "LinkedIn Weekly: {{brand_name}} — Followers: {{get-analytics.followerCount}}, Impressions: {{get-analytics.impressionCount}}, Engagement: {{get-analytics.engagementRate}}%."
consumes:
- type: http
namespace: linkedin
baseUri: "https://api.linkedin.com/v2"
authentication:
type: bearer
token: "$secrets.linkedin_token"
resources:
- name: follower-stats
path: "/organizationalEntityFollowerStatistics"
operations:
- name: get-follower-stats
method: GET
- type: http
namespace: msteams-comms
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-message
method: POST
When a Datadog monitor fires for a Volkswagen manufacturing plant IT system, creates a P1 ServiceNow incident and pages the plant IT manager via Microsoft Teams.
naftiko: "0.5"
info:
label: "Manufacturing Plant IT Alert Escalation"
description: "When a Datadog monitor fires for a Volkswagen manufacturing plant IT system, creates a P1 ServiceNow incident and pages the plant IT manager via Microsoft Teams."
tags:
- itsm
- incident-response
- datadog
- servicenow
- microsoft-teams
- manufacturing
capability:
exposes:
- type: mcp
namespace: plant-it-ops
port: 8080
tools:
- name: handle-plant-it-alert
description: "Given a Datadog alert ID and plant identifier, create a P1 ServiceNow incident and notify the plant IT manager via Teams. Use for critical manufacturing IT system failures."
inputParameters:
- name: alert_id
in: body
type: string
description: "The Datadog alert or event ID."
- name: monitor_name
in: body
type: string
description: "Name of the Datadog monitor that fired."
- name: plant_code
in: body
type: string
description: "Volkswagen plant code (e.g., WOB for Wolfsburg, ERL for Erlangen)."
- name: severity
in: body
type: string
description: "Alert severity: critical, high, medium, or low."
- name: plant_manager_upn
in: body
type: string
description: "UPN of the plant IT manager to notify."
steps:
- name: get-alert
type: call
call: "datadog.get-event"
with:
event_id: "{{alert_id}}"
- name: create-incident
type: call
call: "servicenow-plant.create-incident"
with:
short_description: "[{{severity}}] {{monitor_name}} — Plant {{plant_code}}"
description: "Datadog alert {{alert_id}}: {{get-alert.text}}. Plant: {{plant_code}}."
urgency: "1"
impact: "1"
- name: notify-plant-manager
type: call
call: "msteams-plant.send-message"
with:
recipient_upn: "{{plant_manager_upn}}"
text: "P1 IT Incident at Plant {{plant_code}}: {{monitor_name}} ({{severity}}). ServiceNow: {{create-incident.number}}. Immediate attention required."
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: events
path: "/events/{{event_id}}"
inputParameters:
- name: event_id
in: path
operations:
- name: get-event
method: GET
- type: http
namespace: servicenow-plant
baseUri: "https://vwgroup.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-plant
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
Fetches Microsoft 365 license utilization data via Microsoft Graph and delivers an underutilization report to the IT management Teams channel for cost optimization.
naftiko: "0.5"
info:
label: "Microsoft 365 License Optimization Report"
description: "Fetches Microsoft 365 license utilization data via Microsoft Graph and delivers an underutilization report to the IT management Teams channel for cost optimization."
tags:
- it-operations
- microsoft-365
- cost-optimization
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: m365-reporting
port: 8080
tools:
- name: report-m365-license-utilization
description: "Fetch Microsoft 365 license activation and usage data from Microsoft Graph and post an underutilization report to the IT management Teams channel."
inputParameters:
- name: report_period
in: body
type: string
description: "Reporting period: D7, D30, D90, or D180."
- name: it_channel_id
in: body
type: string
description: "Microsoft Teams channel ID for the IT management team."
steps:
- name: get-license-data
type: call
call: "msgraph-m365.get-activations-report"
with:
period: "{{report_period}}"
- name: post-report
type: call
call: "msteams-itops.post-message"
with:
channel_id: "{{it_channel_id}}"
text: "M365 License Report ({{report_period}}): {{get-license-data.assigned_count}} licenses assigned, {{get-license-data.active_count}} active. Review inactive licenses to optimize costs across VW Group."
consumes:
- type: http
namespace: msgraph-m365
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: activations-report
path: "/reports/getOffice365ActivationsUserDetail(period='{{period}}')"
inputParameters:
- name: period
in: path
operations:
- name: get-activations-report
method: GET
- type: http
namespace: msteams-itops
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-message
method: POST
Enriches Salesforce dealer or fleet account records with sales performance and service quality scores derived from Snowflake to support account management decisions.
naftiko: "0.5"
info:
label: "Salesforce Account Health Score Enrichment"
description: "Enriches Salesforce dealer or fleet account records with sales performance and service quality scores derived from Snowflake to support account management decisions."
tags:
- crm
- salesforce
- snowflake
- customer-success
- data-enrichment
- dealer-management
capability:
exposes:
- type: mcp
namespace: account-enrichment
port: 8080
tools:
- name: enrich-dealer-health-score
description: "Given a Salesforce account ID and dealer ID, query Snowflake for dealer performance KPIs and update the Salesforce account with health score fields."
inputParameters:
- name: account_id
in: body
type: string
description: "Salesforce account ID (18-character)."
- name: dealer_id
in: body
type: string
description: "VW internal dealer identifier used as Snowflake lookup key."
steps:
- name: get-dealer-kpis
type: call
call: "snowflake-dealer.execute-query"
with:
statement: "SELECT avg_csat_score, units_sold_ytd, service_revenue, complaint_rate FROM sales.dealer_performance WHERE dealer_id = '{{dealer_id}}' AND report_date = CURRENT_DATE"
- name: update-sf-account
type: call
call: "salesforce-dealers.update-account"
with:
account_id: "{{account_id}}"
csat_score__c: "{{get-dealer-kpis.avg_csat_score}}"
units_ytd__c: "{{get-dealer-kpis.units_sold_ytd}}"
complaint_rate__c: "{{get-dealer-kpis.complaint_rate}}"
consumes:
- type: http
namespace: snowflake-dealer
baseUri: "https://vwgroup.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-query
method: POST
- type: http
namespace: salesforce-dealers
baseUri: "https://vwgroup.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{account_id}}"
inputParameters:
- name: account_id
in: path
operations:
- name: update-account
method: PATCH
Returns dealer account details from Salesforce including tier and performance.
naftiko: "0.5"
info:
label: "Salesforce Dealer Account Lookup"
description: "Returns dealer account details from Salesforce including tier and performance."
tags:
- automotive
- salesforce
- dealers
capability:
exposes:
- type: mcp
namespace: salesforce_dealer_ac
port: 8080
tools:
- name: query-data
description: "Returns dealer account details from Salesforce including tier and performance."
inputParameters:
- name: query_param
in: body
type: string
description: "The query parameter."
call: "snowflake-api.run-query"
with:
query_param: "{{query_param}}"
outputParameters:
- name: results
type: object
mapping: "$.data"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
When a Salesforce dealer opportunity reaches Closed Won for fleet or corporate vehicle sales, creates an order record in SAP S/4HANA and notifies the dealer team via Teams.
naftiko: "0.5"
info:
label: "Salesforce Dealer Opportunity Management"
description: "When a Salesforce dealer opportunity reaches Closed Won for fleet or corporate vehicle sales, creates an order record in SAP S/4HANA and notifies the dealer team via Teams."
tags:
- crm
- sales
- salesforce
- sap-s4hana
- microsoft-teams
- dealer-management
capability:
exposes:
- type: mcp
namespace: dealer-sales
port: 8080
tools:
- name: sync-dealer-opportunity
description: "Given a Salesforce opportunity ID for a won fleet or dealer deal, fetch details, create a sales order in SAP S/4HANA, and notify the dealer channel in Teams."
inputParameters:
- name: opportunity_id
in: body
type: string
description: "The Salesforce opportunity record ID (18-character)."
- name: dealer_channel_id
in: body
type: string
description: "Microsoft Teams channel ID for the dealer management team."
steps:
- name: get-opportunity
type: call
call: "salesforce.get-opportunity"
with:
opportunity_id: "{{opportunity_id}}"
- name: create-sales-order
type: call
call: "sap-sales.create-sales-order"
with:
customer_id: "{{get-opportunity.AccountId}}"
description: "{{get-opportunity.Name}}"
value: "{{get-opportunity.Amount}}"
currency: "{{get-opportunity.CurrencyIsoCode}}"
- name: notify-dealer-team
type: call
call: "msteams-dealer.post-message"
with:
channel_id: "{{dealer_channel_id}}"
text: "Dealer deal won: {{get-opportunity.Name}} ({{get-opportunity.Amount}} {{get-opportunity.CurrencyIsoCode}}). SAP Sales Order: {{create-sales-order.order_number}}."
consumes:
- type: http
namespace: salesforce
baseUri: "https://vwgroup.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: opportunities
path: "/sobjects/Opportunity/{{opportunity_id}}"
inputParameters:
- name: opportunity_id
in: path
operations:
- name: get-opportunity
method: GET
- type: http
namespace: sap-sales
baseUri: "https://vwgroup-s4.sap.com/sap/opu/odata/sap/API_SALES_ORDER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: sales-orders
path: "/A_SalesOrder"
operations:
- name: create-sales-order
method: POST
- type: http
namespace: msteams-dealer
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-message
method: POST
Queries SAP Ariba for supplier contracts expiring within 90 days, creates renewal tasks in ServiceNow, and notifies the procurement team via Microsoft Teams.
naftiko: "0.5"
info:
label: "SAP Ariba Contract Expiry Alert"
description: "Queries SAP Ariba for supplier contracts expiring within 90 days, creates renewal tasks in ServiceNow, and notifies the procurement team via Microsoft Teams."
tags:
- procurement
- sap-ariba
- servicenow
- microsoft-teams
- contract-management
capability:
exposes:
- type: mcp
namespace: procurement-contracts
port: 8080
tools:
- name: alert-expiring-contracts
description: "Fetch contracts expiring within a given number of days from SAP Ariba, create renewal tasks in ServiceNow, and notify the procurement Teams channel."
inputParameters:
- name: days_ahead
in: body
type: integer
description: "Days ahead to check for expiring contracts (e.g., 90)."
- name: procurement_channel_id
in: body
type: string
description: "Microsoft Teams channel ID for the procurement team."
steps:
- name: get-expiring
type: call
call: "ariba-contracts.list-contracts"
with:
days_to_expiry: "{{days_ahead}}"
- name: create-renewal-task
type: call
call: "servicenow-procurement.create-task"
with:
short_description: "{{get-expiring.count}} supplier contracts expiring within {{days_ahead}} days"
description: "Contracts due for renewal. Review and initiate renewal process in SAP Ariba."
assignment_group: "Procurement_Team"
- name: notify-procurement
type: call
call: "msteams-procurement.post-message"
with:
channel_id: "{{procurement_channel_id}}"
text: "Contract Expiry Alert: {{get-expiring.count}} contracts expire within {{days_ahead}} days. ServiceNow task: {{create-renewal-task.number}}."
consumes:
- type: http
namespace: ariba-contracts
baseUri: "https://openapi.ariba.com/api/contract-management/v1"
authentication:
type: bearer
token: "$secrets.ariba_token"
resources:
- name: contracts
path: "/contracts"
operations:
- name: list-contracts
method: GET
- type: http
namespace: servicenow-procurement
baseUri: "https://vwgroup.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/sc_task"
operations:
- name: create-task
method: POST
- type: http
namespace: msteams-procurement
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-message
method: POST
When supplier contracts approach renewal, queries performance from Snowflake, creates Jira tasks, and notifies procurement.
naftiko: "0.5"
info:
label: "SAP Ariba Contract Renewal Reminder"
description: "When supplier contracts approach renewal, queries performance from Snowflake, creates Jira tasks, and notifies procurement."
tags:
- procurement
- snowflake
- sap-ariba
- jira
- slack
capability:
exposes:
- type: mcp
namespace: sap_ariba_contract_r
port: 8080
tools:
- name: handle-event
description: "When supplier contracts approach renewal, queries performance from Snowflake, creates Jira tasks, and notifies procurement."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[procurement] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "procurement-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Returns supplier contract status and renewal dates from SAP Ariba.
naftiko: "0.5"
info:
label: "SAP Ariba Contract Status Lookup"
description: "Returns supplier contract status and renewal dates from SAP Ariba."
tags:
- procurement
- sap-ariba
- contracts
capability:
exposes:
- type: mcp
namespace: sap_ariba_contract_s
port: 8080
tools:
- name: query-data
description: "Returns supplier contract status and renewal dates from SAP Ariba."
inputParameters:
- name: query_param
in: body
type: string
description: "The query parameter."
call: "snowflake-api.run-query"
with:
query_param: "{{query_param}}"
outputParameters:
- name: results
type: object
mapping: "$.data"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
When a supplier invoice is submitted in SAP Ariba, validates it against the corresponding SAP S/4HANA purchase order and creates a ServiceNow approval task for the finance team.
naftiko: "0.5"
info:
label: "SAP Ariba Supplier Invoice Processing"
description: "When a supplier invoice is submitted in SAP Ariba, validates it against the corresponding SAP S/4HANA purchase order and creates a ServiceNow approval task for the finance team."
tags:
- finance
- procurement
- sap-ariba
- sap-s4hana
- servicenow
- invoice
- approval
capability:
exposes:
- type: mcp
namespace: finance-invoicing
port: 8080
tools:
- name: process-supplier-invoice
description: "Given an SAP Ariba invoice ID and PO number, fetch invoice details, validate against the SAP PO, and create a ServiceNow approval task for the finance team."
inputParameters:
- name: invoice_id
in: body
type: string
description: "The SAP Ariba invoice document ID."
- name: po_number
in: body
type: string
description: "The associated SAP purchase order number."
- name: approver_group
in: body
type: string
description: "ServiceNow assignment group for the approval task."
steps:
- name: get-invoice
type: call
call: "sap-ariba.get-invoice"
with:
invoice_id: "{{invoice_id}}"
- name: get-po-details
type: call
call: "sap-erp.get-po"
with:
po_number: "{{po_number}}"
- name: create-approval
type: call
call: "servicenow-ap.create-task"
with:
short_description: "Invoice approval: {{get-invoice.invoice_number}} vs PO {{po_number}}"
description: "Invoice amount: {{get-invoice.total_amount}} {{get-invoice.currency}}. PO total: {{get-po-details.total_value}}. Vendor: {{get-po-details.vendor}}."
assignment_group: "{{approver_group}}"
consumes:
- type: http
namespace: sap-ariba
baseUri: "https://openapi.ariba.com/api/invoice-management/v1"
authentication:
type: bearer
token: "$secrets.ariba_token"
resources:
- name: invoices
path: "/invoices/{{invoice_id}}"
inputParameters:
- name: invoice_id
in: path
operations:
- name: get-invoice
method: GET
- type: http
namespace: sap-erp
baseUri: "https://vwgroup-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: purchase-orders
path: "/A_PurchaseOrder('{{po_number}}')"
inputParameters:
- name: po_number
in: path
operations:
- name: get-po
method: GET
- type: http
namespace: servicenow-ap
baseUri: "https://vwgroup.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/sc_task"
operations:
- name: create-task
method: POST
Queries supplier risk scores from Snowflake, updates SAP Ariba risk profiles, creates Jira review tasks, and notifies procurement.
naftiko: "0.5"
info:
label: "SAP Ariba Supplier Risk Assessment"
description: "Queries supplier risk scores from Snowflake, updates SAP Ariba risk profiles, creates Jira review tasks, and notifies procurement."
tags:
- procurement
- snowflake
- sap-ariba
- jira
- slack
capability:
exposes:
- type: mcp
namespace: sap_ariba_supplier_r
port: 8080
tools:
- name: handle-event
description: "Queries supplier risk scores from Snowflake, updates SAP Ariba risk profiles, creates Jira review tasks, and notifies procurement."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[procurement] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "procurement-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When expense anomalies are detected in SAP Concur, queries patterns from Snowflake, creates a Jira audit task, and alerts finance.
naftiko: "0.5"
info:
label: "SAP Concur Expense Anomaly Handler"
description: "When expense anomalies are detected in SAP Concur, queries patterns from Snowflake, creates a Jira audit task, and alerts finance."
tags:
- finance
- snowflake
- sap-concur
- jira
- slack
capability:
exposes:
- type: mcp
namespace: sap_concur_expense_a
port: 8080
tools:
- name: handle-event
description: "When expense anomalies are detected in SAP Concur, queries patterns from Snowflake, creates a Jira audit task, and alerts finance."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[finance] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "finance-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When an employee submits an expense report in SAP Concur, validates the total against policy limits and routes a ServiceNow approval task to the line manager.
naftiko: "0.5"
info:
label: "SAP Concur Expense Report Approval"
description: "When an employee submits an expense report in SAP Concur, validates the total against policy limits and routes a ServiceNow approval task to the line manager."
tags:
- finance
- expense-management
- sap-concur
- servicenow
- approval
capability:
exposes:
- type: mcp
namespace: expense-approval
port: 8080
tools:
- name: process-expense-report
description: "Given a Concur expense report ID and policy limit, fetch report details and create a ServiceNow approval task for reports exceeding the limit."
inputParameters:
- name: report_id
in: body
type: string
description: "The SAP Concur expense report ID."
- name: policy_limit_eur
in: body
type: number
description: "The expense policy limit in EUR above which manager approval is required."
steps:
- name: get-report
type: call
call: "concur.get-expense-report"
with:
report_id: "{{report_id}}"
- name: create-approval-task
type: call
call: "servicenow-expense.create-task"
with:
short_description: "Expense approval: {{get-report.ReportName}} — {{get-report.Total}} {{get-report.CurrencyCode}}"
description: "Employee {{get-report.OwnerName}} submitted expense report {{report_id}} for {{get-report.Total}} {{get-report.CurrencyCode}}. Exceeds policy limit of {{policy_limit_eur}} EUR."
assignment_group: "Finance_Approvals"
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
- type: http
namespace: servicenow-expense
baseUri: "https://vwgroup.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/sc_task"
operations:
- name: create-task
method: POST
Returns travel expense report details from SAP Concur.
naftiko: "0.5"
info:
label: "SAP Concur Travel Expense Lookup"
description: "Returns travel expense report details from SAP Concur."
tags:
- finance
- sap-concur
- travel
capability:
exposes:
- type: mcp
namespace: sap_concur_travel_ex
port: 8080
tools:
- name: query-data
description: "Returns travel expense report details from SAP Concur."
inputParameters:
- name: query_param
in: body
type: string
description: "The query parameter."
call: "snowflake-api.run-query"
with:
query_param: "{{query_param}}"
outputParameters:
- name: results
type: object
mapping: "$.data"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
Returns budget vs actual spending for a SAP cost center.
naftiko: "0.5"
info:
label: "SAP Cost Center Budget Lookup"
description: "Returns budget vs actual spending for a SAP cost center."
tags:
- finance
- sap-s4hana
- budgets
capability:
exposes:
- type: mcp
namespace: sap_cost_center_budg
port: 8080
tools:
- name: query-data
description: "Returns budget vs actual spending for a SAP cost center."
inputParameters:
- name: query_param
in: body
type: string
description: "The query parameter."
call: "snowflake-api.run-query"
with:
query_param: "{{query_param}}"
outputParameters:
- name: results
type: object
mapping: "$.data"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
Checks material availability and lead times from SAP MM.
naftiko: "0.5"
info:
label: "SAP Material Availability Check"
description: "Checks material availability and lead times from SAP MM."
tags:
- manufacturing
- sap-s4hana
- supply-chain
capability:
exposes:
- type: mcp
namespace: sap_material_availab
port: 8080
tools:
- name: query-data
description: "Checks material availability and lead times from SAP MM."
inputParameters:
- name: query_param
in: body
type: string
description: "The query parameter."
call: "snowflake-api.run-query"
with:
query_param: "{{query_param}}"
outputParameters:
- name: results
type: object
mapping: "$.data"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
At month end, queries SAP S/4HANA for open AP items and uncleared postings, creates a period-close task in ServiceNow, and notifies the controlling team via Teams.
naftiko: "0.5"
info:
label: "SAP Period-Close Financial Checklist"
description: "At month end, queries SAP S/4HANA for open AP items and uncleared postings, creates a period-close task in ServiceNow, and notifies the controlling team via Teams."
tags:
- finance
- period-close
- sap-s4hana
- servicenow
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: finance-period-close
port: 8080
tools:
- name: run-period-close-checklist
description: "Given a fiscal period and SAP company code, fetch open items from SAP S/4HANA FI module, create a period-close ServiceNow task, and notify the controller via Teams."
inputParameters:
- name: fiscal_period
in: body
type: string
description: "Fiscal period in YYYYMM format."
- name: company_code
in: body
type: string
description: "SAP company code (4-character string, e.g., VW01)."
- name: controller_upn
in: body
type: string
description: "UPN of the finance controller to notify."
steps:
- name: get-open-items
type: call
call: "sap-fi.get-open-items"
with:
fiscal_period: "{{fiscal_period}}"
company_code: "{{company_code}}"
- name: create-close-task
type: call
call: "servicenow-fi.create-task"
with:
short_description: "Period close: {{company_code}} — {{fiscal_period}}"
description: "Open items: {{get-open-items.count}}, Total amount: {{get-open-items.total_amount}} {{get-open-items.currency}}."
assignment_group: "Finance_Controllers"
- name: notify-controller
type: call
call: "msteams-finance.send-message"
with:
recipient_upn: "{{controller_upn}}"
text: "Period close checklist created for {{company_code}} / {{fiscal_period}}. Open items: {{get-open-items.count}}. ServiceNow task: {{create-close-task.number}}."
consumes:
- type: http
namespace: sap-fi
baseUri: "https://vwgroup-s4.sap.com/sap/opu/odata/sap/API_JOURNALENTRYITEM_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: open-items
path: "/A_JournalEntryItem"
operations:
- name: get-open-items
method: GET
- type: http
namespace: servicenow-fi
baseUri: "https://vwgroup.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/sc_task"
operations:
- name: create-task
method: POST
- type: http
namespace: msteams-finance
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
During financial period close, runs reconciliation checks from Snowflake, creates Jira tasks for discrepancies, and notifies finance.
naftiko: "0.5"
info:
label: "SAP Period Close Reconciliation Workflow"
description: "During financial period close, runs reconciliation checks from Snowflake, creates Jira tasks for discrepancies, and notifies finance."
tags:
- finance
- snowflake
- sap-s4hana
- jira
- slack
capability:
exposes:
- type: mcp
namespace: sap_period_close_rec
port: 8080
tools:
- name: handle-event
description: "During financial period close, runs reconciliation checks from Snowflake, creates Jira tasks for discrepancies, and notifies finance."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[finance] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "finance-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Returns maintenance order details and status from SAP Plant Maintenance.
naftiko: "0.5"
info:
label: "SAP Plant Maintenance Order Lookup"
description: "Returns maintenance order details and status from SAP Plant Maintenance."
tags:
- manufacturing
- sap-s4hana
- maintenance
capability:
exposes:
- type: mcp
namespace: sap_plant_maintenanc
port: 8080
tools:
- name: query-data
description: "Returns maintenance order details and status from SAP Plant Maintenance."
inputParameters:
- name: query_param
in: body
type: string
description: "The query parameter."
call: "snowflake-api.run-query"
with:
query_param: "{{query_param}}"
outputParameters:
- name: results
type: object
mapping: "$.data"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
Creates a SAP Plant Maintenance work order for a reported equipment failure at a Volkswagen plant and links it to the ServiceNow incident for end-to-end tracking.
naftiko: "0.5"
info:
label: "SAP Plant Maintenance Work Order Creation"
description: "Creates a SAP Plant Maintenance work order for a reported equipment failure at a Volkswagen plant and links it to the ServiceNow incident for end-to-end tracking."
tags:
- asset-management
- maintenance
- sap-s4hana
- servicenow
- manufacturing
capability:
exposes:
- type: mcp
namespace: plant-maintenance
port: 8080
tools:
- name: create-maintenance-work-order
description: "Given a ServiceNow incident number and SAP equipment ID, create a Plant Maintenance work order in SAP S/4HANA and link it back to the ServiceNow incident."
inputParameters:
- name: snow_incident_number
in: body
type: string
description: "ServiceNow incident number that triggered the maintenance request."
- name: equipment_id
in: body
type: string
description: "SAP equipment ID for the asset requiring maintenance."
- name: maintenance_type
in: body
type: string
description: "Maintenance type: breakdown, preventive, or predictive."
- name: plant_code
in: body
type: string
description: "SAP plant code where the equipment is located."
steps:
- name: create-work-order
type: call
call: "sap-pm.create-work-order"
with:
equipment_id: "{{equipment_id}}"
maintenance_type: "{{maintenance_type}}"
plant: "{{plant_code}}"
description: "Maintenance triggered by ServiceNow incident {{snow_incident_number}}"
- name: update-incident
type: call
call: "servicenow-maint.update-incident"
with:
number: "{{snow_incident_number}}"
work_notes: "SAP PM work order {{create-work-order.order_number}} created for equipment {{equipment_id}} at plant {{plant_code}}."
consumes:
- type: http
namespace: sap-pm
baseUri: "https://vwgroup-s4.sap.com/sap/opu/odata/sap/API_MAINTENANCEORDER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: maintenance-orders
path: "/MaintenanceOrder"
operations:
- name: create-work-order
method: POST
- type: http
namespace: servicenow-maint
baseUri: "https://vwgroup.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: update-incident
method: PATCH
Returns quality notification details and corrective actions from SAP QM.
naftiko: "0.5"
info:
label: "SAP Quality Notification Lookup"
description: "Returns quality notification details and corrective actions from SAP QM."
tags:
- manufacturing
- sap-s4hana
- quality
capability:
exposes:
- type: mcp
namespace: sap_quality_notifica
port: 8080
tools:
- name: query-data
description: "Returns quality notification details and corrective actions from SAP QM."
inputParameters:
- name: query_param
in: body
type: string
description: "The query parameter."
call: "snowflake-api.run-query"
with:
query_param: "{{query_param}}"
outputParameters:
- name: results
type: object
mapping: "$.data"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
Looks up a SAP S/4HANA purchase order by number and returns header status, vendor details, and total value for procurement and finance teams.
naftiko: "0.5"
info:
label: "SAP S/4HANA Purchase Order Lookup"
description: "Looks up a SAP S/4HANA purchase order by number and returns header status, vendor details, and total value for procurement and finance teams."
tags:
- finance
- procurement
- sap-s4hana
- purchase-order
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 status, vendor name, total value, and currency. Use for procurement status checks and three-way matching."
inputParameters:
- name: po_number
in: body
type: string
description: "The SAP purchase order number (10-digit numeric string)."
call: "sap-po.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-po
baseUri: "https://vwgroup-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
Assigns mandatory compliance and safety training courses in SAP SuccessFactors Learning for Volkswagen plant workers and office employees, tracking completion via ServiceNow.
naftiko: "0.5"
info:
label: "SAP SuccessFactors Compliance Training Assignment"
description: "Assigns mandatory compliance and safety training courses in SAP SuccessFactors Learning for Volkswagen plant workers and office employees, tracking completion via ServiceNow."
tags:
- hr
- learning
- compliance
- sap-successfactors
- servicenow
- safety
capability:
exposes:
- type: mcp
namespace: hr-learning
port: 8080
tools:
- name: assign-compliance-training
description: "Given a SuccessFactors employee ID and course ID, assign the compliance or safety training course and create a ServiceNow tracking task for the HR team."
inputParameters:
- name: employee_id
in: body
type: string
description: "SAP SuccessFactors employee ID."
- name: course_id
in: body
type: string
description: "SuccessFactors Learning course ID to assign."
- name: due_date
in: body
type: string
description: "Training completion due date in YYYY-MM-DD format."
- name: training_category
in: body
type: string
description: "Training category (e.g., WorkplaceSafety, DataPrivacy, AntiCorruption)."
steps:
- name: assign-course
type: call
call: "successfactors-lms.assign-learning"
with:
userId: "{{employee_id}}"
itemID: "{{course_id}}"
dueDate: "{{due_date}}"
- name: create-tracking-task
type: call
call: "servicenow-hr.create-task"
with:
short_description: "{{training_category}} training assigned: {{course_id}} for {{employee_id}}"
description: "Course {{course_id}} assigned to employee {{employee_id}}. Category: {{training_category}}. Due: {{due_date}}."
due_date: "{{due_date}}"
consumes:
- type: http
namespace: successfactors-lms
baseUri: "https://api4.successfactors.com/learning/odatav4"
authentication:
type: basic
username: "$secrets.sf_user"
password: "$secrets.sf_password"
resources:
- name: learning-assignments
path: "/LearningItemAssignment"
operations:
- name: assign-learning
method: POST
- type: http
namespace: servicenow-hr
baseUri: "https://vwgroup.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/sc_task"
operations:
- name: create-task
method: POST
Returns employee details from SAP SuccessFactors by employee ID.
naftiko: "0.5"
info:
label: "SAP SuccessFactors Employee Lookup"
description: "Returns employee details from SAP SuccessFactors by employee ID."
tags:
- hr
- sap-successfactors
- employee-data
capability:
exposes:
- type: mcp
namespace: sap_successfactors_e
port: 8080
tools:
- name: query-data
description: "Returns employee details from SAP SuccessFactors by employee ID."
inputParameters:
- name: query_param
in: body
type: string
description: "The query parameter."
call: "snowflake-api.run-query"
with:
query_param: "{{query_param}}"
outputParameters:
- name: results
type: object
mapping: "$.data"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
Returns current headcount by plant, brand, and cost center from SAP SuccessFactors for workforce planning and finance reporting across Volkswagen Group brands.
naftiko: "0.5"
info:
label: "SAP SuccessFactors Headcount Snapshot"
description: "Returns current headcount by plant, brand, and cost center from SAP SuccessFactors for workforce planning and finance reporting across Volkswagen Group brands."
tags:
- hr
- finance
- reporting
- sap-successfactors
- headcount
capability:
exposes:
- type: mcp
namespace: hr-reporting
port: 8080
tools:
- name: get-headcount-snapshot
description: "Returns active employees grouped by brand, plant, and cost center from SuccessFactors. Use for headcount planning and period-end finance reporting across VW Group brands."
call: "successfactors-hc.list-employees"
outputParameters:
- name: employees
type: array
mapping: "$.d.results"
items:
- name: employee_id
type: string
mapping: "$.userId"
- name: full_name
type: string
mapping: "$.displayName"
- name: brand
type: string
mapping: "$.custom01"
- name: plant
type: string
mapping: "$.location"
- name: cost_center
type: string
mapping: "$.costCenter"
consumes:
- type: http
namespace: successfactors-hc
baseUri: "https://api4.successfactors.com/odata/v2"
authentication:
type: basic
username: "$secrets.sf_user"
password: "$secrets.sf_password"
resources:
- name: employees
path: "/User"
operations:
- name: list-employees
method: GET
When a new hire starts, provisions SAP access, creates Jira onboarding tasks, and sends welcome message via Slack.
naftiko: "0.5"
info:
label: "SAP SuccessFactors Onboarding Workflow"
description: "When a new hire starts, provisions SAP access, creates Jira onboarding tasks, and sends welcome message via Slack."
tags:
- hr
- sap-successfactors
- jira
- slack
- onboarding
capability:
exposes:
- type: mcp
namespace: sap_successfactors_o
port: 8080
tools:
- name: handle-event
description: "When a new hire starts, provisions SAP access, creates Jira onboarding tasks, and sends welcome message via Slack."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[hr] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "hr-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Returns the status and payment date of a supplier invoice from SAP.
naftiko: "0.5"
info:
label: "SAP Supplier Invoice Status"
description: "Returns the status and payment date of a supplier invoice from SAP."
tags:
- finance
- sap-s4hana
- procurement
capability:
exposes:
- type: mcp
namespace: sap_supplier_invoice
port: 8080
tools:
- name: query-data
description: "Returns the status and payment date of a supplier invoice from SAP."
inputParameters:
- name: query_param
in: body
type: string
description: "The query parameter."
call: "snowflake-api.run-query"
with:
query_param: "{{query_param}}"
outputParameters:
- name: results
type: object
mapping: "$.data"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
Returns production order status, vehicle model, and delivery date from SAP S/4HANA.
naftiko: "0.5"
info:
label: "SAP Vehicle Production Order Lookup"
description: "Returns production order status, vehicle model, and delivery date from SAP S/4HANA."
tags:
- automotive
- sap-s4hana
- production
capability:
exposes:
- type: mcp
namespace: sap_vehicle_producti
port: 8080
tools:
- name: query-data
description: "Returns production order status, vehicle model, and delivery date from SAP S/4HANA."
inputParameters:
- name: query_param
in: body
type: string
description: "The query parameter."
call: "snowflake-api.run-query"
with:
query_param: "{{query_param}}"
outputParameters:
- name: results
type: object
mapping: "$.data"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
Creates and routes ServiceNow change requests for planned software releases and platform changes at Volkswagen Group through the standard CAB approval workflow.
naftiko: "0.5"
info:
label: "ServiceNow Change Management for Software Releases"
description: "Creates and routes ServiceNow change requests for planned software releases and platform changes at Volkswagen Group through the standard CAB approval workflow."
tags:
- itsm
- change-management
- servicenow
- release-management
- approval
capability:
exposes:
- type: mcp
namespace: change-mgmt
port: 8080
tools:
- name: submit-software-change-request
description: "Given a change description, risk level, and maintenance window, create a ServiceNow change request for a software release and assign it to the appropriate CAB group."
inputParameters:
- name: change_description
in: body
type: string
description: "Description of the proposed software change or release."
- name: risk_level
in: body
type: string
description: "Change risk level: low, medium, high, or critical."
- name: scheduled_start
in: body
type: string
description: "Planned start datetime in ISO 8601 format."
- name: scheduled_end
in: body
type: string
description: "Planned end datetime in ISO 8601 format."
- name: affected_system
in: body
type: string
description: "Name of the affected software system or platform."
call: "servicenow-change.create-change-request"
with:
short_description: "{{change_description}}"
risk: "{{risk_level}}"
start_date: "{{scheduled_start}}"
end_date: "{{scheduled_end}}"
cmdb_ci: "{{affected_system}}"
outputParameters:
- name: change_number
type: string
mapping: "$.result.number"
consumes:
- type: http
namespace: servicenow-change
baseUri: "https://vwgroup.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: change-requests
path: "/table/change_request"
operations:
- name: create-change-request
method: POST
Queries Snowflake for autonomous driving feature usage and safety metrics.
naftiko: "0.5"
info:
label: "Snowflake Autonomous Driving Metrics"
description: "Queries Snowflake for autonomous driving feature usage and safety metrics."
tags:
- automotive
- snowflake
- autonomous
capability:
exposes:
- type: mcp
namespace: snowflake_autonomous
port: 8080
tools:
- name: query-data
description: "Queries Snowflake for autonomous driving feature usage and safety metrics."
inputParameters:
- name: query_param
in: body
type: string
description: "The query parameter."
call: "snowflake-api.run-query"
with:
query_param: "{{query_param}}"
outputParameters:
- name: results
type: object
mapping: "$.data"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
Queries Snowflake for EV charging station utilization and availability.
naftiko: "0.5"
info:
label: "Snowflake Charging Infrastructure Query"
description: "Queries Snowflake for EV charging station utilization and availability."
tags:
- automotive
- snowflake
- charging
capability:
exposes:
- type: mcp
namespace: snowflake_charging_i
port: 8080
tools:
- name: query-data
description: "Queries Snowflake for EV charging station utilization and availability."
inputParameters:
- name: query_param
in: body
type: string
description: "The query parameter."
call: "snowflake-api.run-query"
with:
query_param: "{{query_param}}"
outputParameters:
- name: results
type: object
mapping: "$.data"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
Queries Snowflake for vehicle telemetry data aggregates by fleet.
naftiko: "0.5"
info:
label: "Snowflake Connected Car Telemetry Query"
description: "Queries Snowflake for vehicle telemetry data aggregates by fleet."
tags:
- automotive
- snowflake
- telemetry
capability:
exposes:
- type: mcp
namespace: snowflake_connected_
port: 8080
tools:
- name: query-data
description: "Queries Snowflake for vehicle telemetry data aggregates by fleet."
inputParameters:
- name: query_param
in: body
type: string
description: "The query parameter."
call: "snowflake-api.run-query"
with:
query_param: "{{query_param}}"
outputParameters:
- name: results
type: object
mapping: "$.data"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
Queries Snowflake for dealer inventory levels by model and region.
naftiko: "0.5"
info:
label: "Snowflake Dealer Inventory Query"
description: "Queries Snowflake for dealer inventory levels by model and region."
tags:
- automotive
- snowflake
- inventory
capability:
exposes:
- type: mcp
namespace: snowflake_dealer_inv
port: 8080
tools:
- name: query-data
description: "Queries Snowflake for dealer inventory levels by model and region."
inputParameters:
- name: query_param
in: body
type: string
description: "The query parameter."
call: "snowflake-api.run-query"
with:
query_param: "{{query_param}}"
outputParameters:
- name: results
type: object
mapping: "$.data"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
Queries Snowflake for vehicle emissions compliance data by model and region.
naftiko: "0.5"
info:
label: "Snowflake Emissions Compliance Query"
description: "Queries Snowflake for vehicle emissions compliance data by model and region."
tags:
- automotive
- snowflake
- emissions
capability:
exposes:
- type: mcp
namespace: snowflake_emissions_
port: 8080
tools:
- name: query-data
description: "Queries Snowflake for vehicle emissions compliance data by model and region."
inputParameters:
- name: query_param
in: body
type: string
description: "The query parameter."
call: "snowflake-api.run-query"
with:
query_param: "{{query_param}}"
outputParameters:
- name: results
type: object
mapping: "$.data"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
Queries Snowflake for electric vehicle battery performance and degradation metrics.
naftiko: "0.5"
info:
label: "Snowflake EV Battery Metrics Query"
description: "Queries Snowflake for electric vehicle battery performance and degradation metrics."
tags:
- automotive
- snowflake
- ev
capability:
exposes:
- type: mcp
namespace: snowflake_ev_battery
port: 8080
tools:
- name: query-data
description: "Queries Snowflake for electric vehicle battery performance and degradation metrics."
inputParameters:
- name: query_param
in: body
type: string
description: "The query parameter."
call: "snowflake-api.run-query"
with:
query_param: "{{query_param}}"
outputParameters:
- name: results
type: object
mapping: "$.data"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
Queries Snowflake for over-the-air software update success rates by model.
naftiko: "0.5"
info:
label: "Snowflake OTA Update Metrics"
description: "Queries Snowflake for over-the-air software update success rates by model."
tags:
- automotive
- snowflake
- ota
capability:
exposes:
- type: mcp
namespace: snowflake_ota_update
port: 8080
tools:
- name: query-data
description: "Queries Snowflake for over-the-air software update success rates by model."
inputParameters:
- name: query_param
in: body
type: string
description: "The query parameter."
call: "snowflake-api.run-query"
with:
query_param: "{{query_param}}"
outputParameters:
- name: results
type: object
mapping: "$.data"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
Queries Snowflake for production yield rates by plant and assembly line.
naftiko: "0.5"
info:
label: "Snowflake Production Yield Query"
description: "Queries Snowflake for production yield rates by plant and assembly line."
tags:
- manufacturing
- snowflake
- production
capability:
exposes:
- type: mcp
namespace: snowflake_production
port: 8080
tools:
- name: query-data
description: "Queries Snowflake for production yield rates by plant and assembly line."
inputParameters:
- name: query_param
in: body
type: string
description: "The query parameter."
call: "snowflake-api.run-query"
with:
query_param: "{{query_param}}"
outputParameters:
- name: results
type: object
mapping: "$.data"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
Runs Snowflake queries on Volkswagen's production data warehouse and delivers a weekly vehicle production output report to the manufacturing leadership Teams channel.
naftiko: "0.5"
info:
label: "Snowflake Vehicle Production Analytics Report"
description: "Runs Snowflake queries on Volkswagen's production data warehouse and delivers a weekly vehicle production output report to the manufacturing leadership Teams channel."
tags:
- analytics
- snowflake
- microsoft-teams
- reporting
- manufacturing
- production
capability:
exposes:
- type: mcp
namespace: production-analytics
port: 8080
tools:
- name: digest-production-output
description: "Run a Snowflake production output query and post a weekly vehicle production digest to the manufacturing leadership Teams channel."
inputParameters:
- name: reporting_week
in: body
type: string
description: "ISO week in YYYY-Www format (e.g., 2026-W12)."
- name: plant_code
in: body
type: string
description: "VW plant code to filter production data (e.g., WOB, ERL, ZWI)."
- name: teams_channel_id
in: body
type: string
description: "Teams channel ID for the manufacturing leadership team."
steps:
- name: run-production-query
type: call
call: "snowflake.execute-query"
with:
statement: "SELECT plant_code, brand, SUM(units_produced) as total_units, AVG(quality_rate) as quality_rate, AVG(oee) as oee FROM manufacturing.weekly_production WHERE iso_week = '{{reporting_week}}' AND plant_code = '{{plant_code}}' GROUP BY plant_code, brand"
- name: post-report
type: call
call: "msteams-mfg.post-message"
with:
channel_id: "{{teams_channel_id}}"
text: "Production Report ({{reporting_week}}, Plant {{plant_code}}): Units produced {{run-production-query.total_units}}, Quality rate {{run-production-query.quality_rate}}%, OEE {{run-production-query.oee}}%."
consumes:
- type: http
namespace: snowflake
baseUri: "https://vwgroup.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-query
method: POST
- type: http
namespace: msteams-mfg
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-message
method: POST
Queries Snowflake for vehicle sales metrics by model, region, and time period.
naftiko: "0.5"
info:
label: "Snowflake Vehicle Sales Query"
description: "Queries Snowflake for vehicle sales metrics by model, region, and time period."
tags:
- analytics
- snowflake
- sales
capability:
exposes:
- type: mcp
namespace: snowflake_vehicle_sa
port: 8080
tools:
- name: query-data
description: "Queries Snowflake for vehicle sales metrics by model, region, and time period."
inputParameters:
- name: query_param
in: body
type: string
description: "The query parameter."
call: "snowflake-api.run-query"
with:
query_param: "{{query_param}}"
outputParameters:
- name: results
type: object
mapping: "$.data"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
Queries Snowflake for warranty claim rates by model and component.
naftiko: "0.5"
info:
label: "Snowflake Warranty Claims Query"
description: "Queries Snowflake for warranty claim rates by model and component."
tags:
- automotive
- snowflake
- warranty
capability:
exposes:
- type: mcp
namespace: snowflake_warranty_c
port: 8080
tools:
- name: query-data
description: "Queries Snowflake for warranty claim rates by model and component."
inputParameters:
- name: query_param
in: body
type: string
description: "The query parameter."
call: "snowflake-api.run-query"
with:
query_param: "{{query_param}}"
outputParameters:
- name: results
type: object
mapping: "$.data"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
When a Snowflake supply chain analytics query detects a supplier delivery disruption risk, creates a ServiceNow task and notifies the supply chain management team via Teams.
naftiko: "0.5"
info:
label: "Supply Chain Disruption Alert and Response"
description: "When a Snowflake supply chain analytics query detects a supplier delivery disruption risk, creates a ServiceNow task and notifies the supply chain management team via Teams."
tags:
- supply-chain
- snowflake
- servicenow
- microsoft-teams
- manufacturing
- risk-management
capability:
exposes:
- type: mcp
namespace: supply-chain-risk
port: 8080
tools:
- name: handle-supply-chain-disruption
description: "Given a supplier ID and part number, query Snowflake for delivery risk indicators and create a ServiceNow task with Teams notification for the supply chain team when risk exceeds threshold."
inputParameters:
- name: supplier_id
in: body
type: string
description: "VW Group supplier identifier."
- name: part_number
in: body
type: string
description: "Vehicle part number at risk of supply disruption."
- name: risk_threshold
in: body
type: number
description: "Risk score threshold above which a task is created (0-100)."
- name: sc_channel_id
in: body
type: string
description: "Microsoft Teams channel ID for the supply chain management team."
steps:
- name: get-supply-risk
type: call
call: "snowflake-sc.execute-query"
with:
statement: "SELECT supplier_name, risk_score, days_of_stock, lead_time_deviation FROM supply_chain.supplier_risk WHERE supplier_id = '{{supplier_id}}' AND part_number = '{{part_number}}'"
- name: create-sc-task
type: call
call: "servicenow-sc.create-task"
with:
short_description: "Supply chain risk: part {{part_number}} from supplier {{supplier_id}}"
description: "Risk score: {{get-supply-risk.risk_score}}, Days of stock: {{get-supply-risk.days_of_stock}}, Lead time deviation: {{get-supply-risk.lead_time_deviation}} days. Supplier: {{get-supply-risk.supplier_name}}."
assignment_group: "Supply_Chain_Management"
- name: notify-sc-team
type: call
call: "msteams-sc.post-message"
with:
channel_id: "{{sc_channel_id}}"
text: "Supply Chain Alert: Part {{part_number}} from {{get-supply-risk.supplier_name}} has risk score {{get-supply-risk.risk_score}} ({{get-supply-risk.days_of_stock}} days of stock). ServiceNow task: {{create-sc-task.number}}."
consumes:
- type: http
namespace: snowflake-sc
baseUri: "https://vwgroup.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-query
method: POST
- type: http
namespace: servicenow-sc
baseUri: "https://vwgroup.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/sc_task"
operations:
- name: create-task
method: POST
- type: http
namespace: msteams-sc
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-message
method: POST
Returns the refresh status for manufacturing KPI dashboards.
naftiko: "0.5"
info:
label: "Tableau Manufacturing Dashboard Status"
description: "Returns the refresh status for manufacturing KPI dashboards."
tags:
- analytics
- tableau
- manufacturing
capability:
exposes:
- type: mcp
namespace: tableau_manufacturin
port: 8080
tools:
- name: query-data
description: "Returns the refresh status for manufacturing KPI dashboards."
inputParameters:
- name: query_param
in: body
type: string
description: "The query parameter."
call: "snowflake-api.run-query"
with:
query_param: "{{query_param}}"
outputParameters:
- name: results
type: object
mapping: "$.data"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
Triggers a Tableau workbook refresh for Volkswagen Group's global sales and revenue dashboards and notifies the finance leadership team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Tableau Sales and Revenue Dashboard Refresh"
description: "Triggers a Tableau workbook refresh for Volkswagen Group's global sales and revenue dashboards and notifies the finance leadership team via Microsoft Teams."
tags:
- analytics
- tableau
- microsoft-teams
- reporting
- sales
- dashboards
capability:
exposes:
- type: mcp
namespace: sales-dashboards
port: 8080
tools:
- name: refresh-sales-dashboard
description: "Trigger a Tableau workbook refresh for a global sales dashboard and notify the finance leadership Teams channel upon completion."
inputParameters:
- name: workbook_id
in: body
type: string
description: "Tableau workbook LUID to refresh."
- name: site_id
in: body
type: string
description: "Tableau server site ID."
- name: notify_channel_id
in: body
type: string
description: "Teams channel ID for finance leadership notification."
steps:
- name: trigger-refresh
type: call
call: "tableau.refresh-workbook"
with:
site_id: "{{site_id}}"
workbook_id: "{{workbook_id}}"
- name: notify-leaders
type: call
call: "msteams-sales.post-message"
with:
channel_id: "{{notify_channel_id}}"
text: "Sales dashboard refresh complete: workbook {{workbook_id}}. Job {{trigger-refresh.job_id}} — Status: {{trigger-refresh.status}}."
consumes:
- type: http
namespace: tableau
baseUri: "https://tableau.vwgroup.com/api/2.8"
authentication:
type: apikey
key: "X-Tableau-Auth"
value: "$secrets.tableau_token"
placement: header
resources:
- name: workbook-refresh
path: "/sites/{{site_id}}/workbooks/{{workbook_id}}/refresh"
inputParameters:
- name: site_id
in: path
- name: workbook_id
in: path
operations:
- name: refresh-workbook
method: POST
- type: http
namespace: msteams-sales
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: post-message
method: POST
Generates parts demand forecasts from Snowflake, creates SAP purchase requisitions, and notifies the parts logistics team.
naftiko: "0.5"
info:
label: "VW Aftermarket Parts Demand Forecast"
description: "Generates parts demand forecasts from Snowflake, creates SAP purchase requisitions, and notifies the parts logistics team."
tags:
- automotive
- snowflake
- sap-s4hana
- slack
- parts
capability:
exposes:
- type: mcp
namespace: vw_aftermarket_parts
port: 8080
tools:
- name: handle-event
description: "Generates parts demand forecasts from Snowflake, creates SAP purchase requisitions, and notifies the parts logistics team."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[automotive] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "automotive-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When robot maintenance is due, creates SAP maintenance orders, Jira tracking tasks, and notifies the automation team.
naftiko: "0.5"
info:
label: "VW Assembly Robot Maintenance Scheduler"
description: "When robot maintenance is due, creates SAP maintenance orders, Jira tracking tasks, and notifies the automation team."
tags:
- manufacturing
- sap-s4hana
- jira
- slack
- automation
capability:
exposes:
- type: mcp
namespace: vw_assembly_robot_ma
port: 8080
tools:
- name: handle-event
description: "When robot maintenance is due, creates SAP maintenance orders, Jira tracking tasks, and notifies the automation team."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[manufacturing] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "manufacturing-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When an autonomous driving incident is reported, creates a Jira investigation, queries telemetry from Snowflake, and alerts safety.
naftiko: "0.5"
info:
label: "VW Autonomous Driving Incident Handler"
description: "When an autonomous driving incident is reported, creates a Jira investigation, queries telemetry from Snowflake, and alerts safety."
tags:
- automotive
- snowflake
- jira
- slack
- autonomous
capability:
exposes:
- type: mcp
namespace: vw_autonomous_drivin
port: 8080
tools:
- name: handle-event
description: "When an autonomous driving incident is reported, creates a Jira investigation, queries telemetry from Snowflake, and alerts safety."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[automotive] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "automotive-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Tracks battery recycling metrics from Snowflake, creates Jira tasks for compliance, and notifies the sustainability team.
naftiko: "0.5"
info:
label: "VW Battery Recycling Tracking Workflow"
description: "Tracks battery recycling metrics from Snowflake, creates Jira tasks for compliance, and notifies the sustainability team."
tags:
- automotive
- snowflake
- jira
- slack
- recycling
capability:
exposes:
- type: mcp
namespace: vw_battery_recycling
port: 8080
tools:
- name: handle-event
description: "Tracks battery recycling metrics from Snowflake, creates Jira tasks for compliance, and notifies the sustainability team."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[automotive] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "automotive-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Generates carbon footprint reports from Snowflake, creates Jira tasks for reduction targets, and notifies sustainability.
naftiko: "0.5"
info:
label: "VW Carbon Footprint Reporting Workflow"
description: "Generates carbon footprint reports from Snowflake, creates Jira tasks for reduction targets, and notifies sustainability."
tags:
- manufacturing
- snowflake
- jira
- slack
- sustainability
capability:
exposes:
- type: mcp
namespace: vw_carbon_footprint_
port: 8080
tools:
- name: handle-event
description: "Generates carbon footprint reports from Snowflake, creates Jira tasks for reduction targets, and notifies sustainability."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[manufacturing] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "manufacturing-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Monitors EV charging network health from Snowflake, creates Jira tickets for outages, and alerts the infrastructure team.
naftiko: "0.5"
info:
label: "VW Charging Network Health Monitor"
description: "Monitors EV charging network health from Snowflake, creates Jira tickets for outages, and alerts the infrastructure team."
tags:
- automotive
- snowflake
- jira
- slack
- charging
capability:
exposes:
- type: mcp
namespace: vw_charging_network_
port: 8080
tools:
- name: handle-event
description: "Monitors EV charging network health from Snowflake, creates Jira tickets for outages, and alerts the infrastructure team."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[automotive] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "automotive-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Monitors connected car cybersecurity events from Snowflake, creates Jira incidents for threats, and pages the vehicle CERT.
naftiko: "0.5"
info:
label: "VW Connected Car Cybersecurity Monitor"
description: "Monitors connected car cybersecurity events from Snowflake, creates Jira incidents for threats, and pages the vehicle CERT."
tags:
- security
- snowflake
- jira
- slack
- cybersecurity
capability:
exposes:
- type: mcp
namespace: vw_connected_car_cyb
port: 8080
tools:
- name: handle-event
description: "Monitors connected car cybersecurity events from Snowflake, creates Jira incidents for threats, and pages the vehicle CERT."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[security] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "security-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When an OTA update is approved, triggers deployment, monitors from Datadog, logs in ServiceNow, and notifies the software team.
naftiko: "0.5"
info:
label: "VW Connected Car OTA Deployment"
description: "When an OTA update is approved, triggers deployment, monitors from Datadog, logs in ServiceNow, and notifies the software team."
tags:
- automotive
- datadog
- servicenow
- slack
- ota
capability:
exposes:
- type: mcp
namespace: vw_connected_car_ota
port: 8080
tools:
- name: handle-event
description: "When an OTA update is approved, triggers deployment, monitors from Datadog, logs in ServiceNow, and notifies the software team."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[automotive] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "automotive-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When crash test results are submitted, queries historical data from Snowflake, creates Jira engineering tasks, and notifies safety.
naftiko: "0.5"
info:
label: "VW Crash Test Data Analysis Workflow"
description: "When crash test results are submitted, queries historical data from Snowflake, creates Jira engineering tasks, and notifies safety."
tags:
- automotive
- snowflake
- jira
- slack
- safety
capability:
exposes:
- type: mcp
namespace: vw_crash_test_data_a
port: 8080
tools:
- name: handle-event
description: "When crash test results are submitted, queries historical data from Snowflake, creates Jira engineering tasks, and notifies safety."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[automotive] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "automotive-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When a customer complaint is filed, creates a Salesforce case, Jira investigation task, and notifies the customer relations team.
naftiko: "0.5"
info:
label: "VW Customer Complaint Escalation"
description: "When a customer complaint is filed, creates a Salesforce case, Jira investigation task, and notifies the customer relations team."
tags:
- automotive
- salesforce
- jira
- slack
- customer-service
capability:
exposes:
- type: mcp
namespace: vw_customer_complain
port: 8080
tools:
- name: handle-event
description: "When a customer complaint is filed, creates a Salesforce case, Jira investigation task, and notifies the customer relations team."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[automotive] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "automotive-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When a vehicle enters delivery phase, updates Salesforce, sends customer notification, and tracks via logistics platform.
naftiko: "0.5"
info:
label: "VW Customer Delivery Tracking Workflow"
description: "When a vehicle enters delivery phase, updates Salesforce, sends customer notification, and tracks via logistics platform."
tags:
- automotive
- salesforce
- slack
- delivery
capability:
exposes:
- type: mcp
namespace: vw_customer_delivery
port: 8080
tools:
- name: handle-event
description: "When a vehicle enters delivery phase, updates Salesforce, sends customer notification, and tracks via logistics platform."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[automotive] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "automotive-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Analyzes dealer inventory from Snowflake, creates SAP transfer orders, creates Jira logistics tasks, and notifies distribution.
naftiko: "0.5"
info:
label: "VW Dealer Inventory Rebalance"
description: "Analyzes dealer inventory from Snowflake, creates SAP transfer orders, creates Jira logistics tasks, and notifies distribution."
tags:
- automotive
- snowflake
- sap-s4hana
- jira
- slack
capability:
exposes:
- type: mcp
namespace: vw_dealer_inventory_
port: 8080
tools:
- name: handle-event
description: "Analyzes dealer inventory from Snowflake, creates SAP transfer orders, creates Jira logistics tasks, and notifies distribution."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[automotive] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "automotive-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Generates dealer performance reports from Snowflake, updates Salesforce records, creates Jira review tasks, and posts to Slack.
naftiko: "0.5"
info:
label: "VW Dealer Performance Review"
description: "Generates dealer performance reports from Snowflake, updates Salesforce records, creates Jira review tasks, and posts to Slack."
tags:
- automotive
- snowflake
- salesforce
- jira
- slack
capability:
exposes:
- type: mcp
namespace: vw_dealer_performanc
port: 8080
tools:
- name: handle-event
description: "Generates dealer performance reports from Snowflake, updates Salesforce records, creates Jira review tasks, and posts to Slack."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[automotive] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "automotive-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Queries customer satisfaction data from Snowflake, updates Salesforce dealer records, and posts alerts for low scores.
naftiko: "0.5"
info:
label: "VW Dealer Service Satisfaction Tracker"
description: "Queries customer satisfaction data from Snowflake, updates Salesforce dealer records, and posts alerts for low scores."
tags:
- automotive
- snowflake
- salesforce
- slack
- customer-satisfaction
capability:
exposes:
- type: mcp
namespace: vw_dealer_service_sa
port: 8080
tools:
- name: handle-event
description: "Queries customer satisfaction data from Snowflake, updates Salesforce dealer records, and posts alerts for low scores."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[automotive] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "automotive-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Tracks dealership staff training compliance from Snowflake, creates Jira tasks for non-compliant dealers, and notifies the training team.
naftiko: "0.5"
info:
label: "VW Dealership Training Compliance"
description: "Tracks dealership staff training compliance from Snowflake, creates Jira tasks for non-compliant dealers, and notifies the training team."
tags:
- automotive
- snowflake
- jira
- slack
- training
capability:
exposes:
- type: mcp
namespace: vw_dealership_traini
port: 8080
tools:
- name: handle-event
description: "Tracks dealership staff training compliance from Snowflake, creates Jira tasks for non-compliant dealers, and notifies the training team."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[automotive] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "automotive-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Monitors emissions compliance from Snowflake, creates Jira tasks for out-of-spec vehicles, and notifies the regulatory team.
naftiko: "0.5"
info:
label: "VW Emissions Compliance Monitor"
description: "Monitors emissions compliance from Snowflake, creates Jira tasks for out-of-spec vehicles, and notifies the regulatory team."
tags:
- automotive
- snowflake
- jira
- slack
- emissions
capability:
exposes:
- type: mcp
namespace: vw_emissions_complia
port: 8080
tools:
- name: handle-event
description: "Monitors emissions compliance from Snowflake, creates Jira tasks for out-of-spec vehicles, and notifies the regulatory team."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[automotive] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "automotive-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When battery degradation exceeds threshold, queries Snowflake for affected vehicles, creates a Jira engineering ticket, and alerts R&D.
naftiko: "0.5"
info:
label: "VW EV Battery Degradation Alert"
description: "When battery degradation exceeds threshold, queries Snowflake for affected vehicles, creates a Jira engineering ticket, and alerts R&D."
tags:
- automotive
- snowflake
- jira
- slack
- ev
capability:
exposes:
- type: mcp
namespace: vw_ev_battery_degrad
port: 8080
tools:
- name: handle-event
description: "When battery degradation exceeds threshold, queries Snowflake for affected vehicles, creates a Jira engineering ticket, and alerts R&D."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[automotive] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "automotive-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When charging session anomalies are detected, queries Snowflake for patterns, creates a Jira ticket, and alerts the EV team.
naftiko: "0.5"
info:
label: "VW EV Charging Session Anomaly Handler"
description: "When charging session anomalies are detected, queries Snowflake for patterns, creates a Jira ticket, and alerts the EV team."
tags:
- automotive
- snowflake
- jira
- slack
- charging
capability:
exposes:
- type: mcp
namespace: vw_ev_charging_sessi
port: 8080
tools:
- name: handle-event
description: "When charging session anomalies are detected, queries Snowflake for patterns, creates a Jira ticket, and alerts the EV team."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[automotive] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "automotive-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When range estimation accuracy drops, queries telemetry from Snowflake, creates a Jira calibration ticket, and alerts the EV team.
naftiko: "0.5"
info:
label: "VW EV Range Estimation Calibration"
description: "When range estimation accuracy drops, queries telemetry from Snowflake, creates a Jira calibration ticket, and alerts the EV team."
tags:
- automotive
- snowflake
- jira
- slack
- ev
capability:
exposes:
- type: mcp
namespace: vw_ev_range_estimati
port: 8080
tools:
- name: handle-event
description: "When range estimation accuracy drops, queries telemetry from Snowflake, creates a Jira calibration ticket, and alerts the EV team."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[automotive] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "automotive-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Generates fleet health digests from Snowflake telemetry, updates Salesforce fleet records, and posts summaries to Slack.
naftiko: "0.5"
info:
label: "VW Fleet Management Health Digest"
description: "Generates fleet health digests from Snowflake telemetry, updates Salesforce fleet records, and posts summaries to Slack."
tags:
- automotive
- snowflake
- salesforce
- slack
- fleet
capability:
exposes:
- type: mcp
namespace: vw_fleet_management_
port: 8080
tools:
- name: handle-event
description: "Generates fleet health digests from Snowflake telemetry, updates Salesforce fleet records, and posts summaries to Slack."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[automotive] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "automotive-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Analyzes production capacity utilization from Snowflake, creates Jira planning tasks for high-utilization plants, and posts to Slack.
naftiko: "0.5"
info:
label: "VW Global Production Capacity Planner"
description: "Analyzes production capacity utilization from Snowflake, creates Jira planning tasks for high-utilization plants, and posts to Slack."
tags:
- manufacturing
- snowflake
- jira
- slack
- capacity
capability:
exposes:
- type: mcp
namespace: vw_global_production
port: 8080
tools:
- name: handle-event
description: "Analyzes production capacity utilization from Snowflake, creates Jira planning tasks for high-utilization plants, and posts to Slack."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[manufacturing] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "manufacturing-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Reviews carrier performance from Snowflake, updates SAP vendor ratings, creates Jira tasks, and notifies logistics.
naftiko: "0.5"
info:
label: "VW Logistics Carrier Performance Review"
description: "Reviews carrier performance from Snowflake, updates SAP vendor ratings, creates Jira tasks, and notifies logistics."
tags:
- manufacturing
- snowflake
- sap-s4hana
- jira
- slack
capability:
exposes:
- type: mcp
namespace: vw_logistics_carrier
port: 8080
tools:
- name: handle-event
description: "Reviews carrier performance from Snowflake, updates SAP vendor ratings, creates Jira tasks, and notifies logistics."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[manufacturing] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "manufacturing-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Analyzes manufacturing defect trends from Snowflake, creates Jira quality improvement tasks, and alerts the quality team.
naftiko: "0.5"
info:
label: "VW Manufacturing Defect Trend Analyzer"
description: "Analyzes manufacturing defect trends from Snowflake, creates Jira quality improvement tasks, and alerts the quality team."
tags:
- manufacturing
- snowflake
- jira
- slack
- quality
capability:
exposes:
- type: mcp
namespace: vw_manufacturing_def
port: 8080
tools:
- name: handle-event
description: "Analyzes manufacturing defect trends from Snowflake, creates Jira quality improvement tasks, and alerts the quality team."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[manufacturing] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "manufacturing-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Assesses new model launch readiness by querying production, supply chain, and dealer data from Snowflake, creating a Jira scorecard.
naftiko: "0.5"
info:
label: "VW New Model Launch Readiness"
description: "Assesses new model launch readiness by querying production, supply chain, and dealer data from Snowflake, creating a Jira scorecard."
tags:
- automotive
- snowflake
- jira
- slack
- launch
capability:
exposes:
- type: mcp
namespace: vw_new_model_launch_
port: 8080
tools:
- name: handle-event
description: "Assesses new model launch readiness by querying production, supply chain, and dealer data from Snowflake, creating a Jira scorecard."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[automotive] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "automotive-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When paint shop defect rates spike, queries Snowflake for root causes, creates a Jira corrective action, and alerts manufacturing.
naftiko: "0.5"
info:
label: "VW Paint Shop Defect Rate Handler"
description: "When paint shop defect rates spike, queries Snowflake for root causes, creates a Jira corrective action, and alerts manufacturing."
tags:
- manufacturing
- snowflake
- jira
- slack
- quality
capability:
exposes:
- type: mcp
namespace: vw_paint_shop_defect
port: 8080
tools:
- name: handle-event
description: "When paint shop defect rates spike, queries Snowflake for root causes, creates a Jira corrective action, and alerts manufacturing."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[manufacturing] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "manufacturing-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When plant energy consumption exceeds targets, queries Snowflake for details, creates a Jira optimization task, and alerts operations.
naftiko: "0.5"
info:
label: "VW Plant Energy Consumption Alert"
description: "When plant energy consumption exceeds targets, queries Snowflake for details, creates a Jira optimization task, and alerts operations."
tags:
- manufacturing
- snowflake
- jira
- slack
- sustainability
capability:
exposes:
- type: mcp
namespace: vw_plant_energy_cons
port: 8080
tools:
- name: handle-event
description: "When plant energy consumption exceeds targets, queries Snowflake for details, creates a Jira optimization task, and alerts operations."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[manufacturing] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "manufacturing-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When a plant safety incident occurs, creates a ServiceNow record, Jira investigation task, and pages the safety manager.
naftiko: "0.5"
info:
label: "VW Plant Safety Incident Handler"
description: "When a plant safety incident occurs, creates a ServiceNow record, Jira investigation task, and pages the safety manager."
tags:
- manufacturing
- servicenow
- jira
- slack
- safety
capability:
exposes:
- type: mcp
namespace: vw_plant_safety_inci
port: 8080
tools:
- name: handle-event
description: "When a plant safety incident occurs, creates a ServiceNow record, Jira investigation task, and pages the safety manager."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[manufacturing] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "manufacturing-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Monitors powertrain performance metrics from Snowflake, creates Jira tickets for anomalies, and alerts the powertrain team.
naftiko: "0.5"
info:
label: "VW Powertrain Performance Monitor"
description: "Monitors powertrain performance metrics from Snowflake, creates Jira tickets for anomalies, and alerts the powertrain team."
tags:
- automotive
- snowflake
- jira
- slack
- powertrain
capability:
exposes:
- type: mcp
namespace: vw_powertrain_perfor
port: 8080
tools:
- name: handle-event
description: "Monitors powertrain performance metrics from Snowflake, creates Jira tickets for anomalies, and alerts the powertrain team."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[automotive] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "automotive-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When a production line stops, creates a SAP maintenance order, opens a Jira ticket, and pages the plant manager via Slack.
naftiko: "0.5"
info:
label: "VW Production Line Stoppage Handler"
description: "When a production line stops, creates a SAP maintenance order, opens a Jira ticket, and pages the plant manager via Slack."
tags:
- manufacturing
- sap-s4hana
- jira
- slack
- production
capability:
exposes:
- type: mcp
namespace: vw_production_line_s
port: 8080
tools:
- name: handle-event
description: "When a production line stops, creates a SAP maintenance order, opens a Jira ticket, and pages the plant manager via Slack."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[manufacturing] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "manufacturing-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When a quality gate check fails, blocks the batch in SAP, creates a Jira ticket, and notifies the quality manager.
naftiko: "0.5"
info:
label: "VW Production Quality Gate Workflow"
description: "When a quality gate check fails, blocks the batch in SAP, creates a Jira ticket, and notifies the quality manager."
tags:
- manufacturing
- sap-s4hana
- jira
- slack
- quality
capability:
exposes:
- type: mcp
namespace: vw_production_qualit
port: 8080
tools:
- name: handle-event
description: "When a quality gate check fails, blocks the batch in SAP, creates a Jira ticket, and notifies the quality manager."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[manufacturing] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "manufacturing-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Analyzes production schedule efficiency from Snowflake, creates Jira optimization tasks, and notifies the planning team.
naftiko: "0.5"
info:
label: "VW Production Schedule Optimization"
description: "Analyzes production schedule efficiency from Snowflake, creates Jira optimization tasks, and notifies the planning team."
tags:
- manufacturing
- snowflake
- jira
- slack
- planning
capability:
exposes:
- type: mcp
namespace: vw_production_schedu
port: 8080
tools:
- name: handle-event
description: "Analyzes production schedule efficiency from Snowflake, creates Jira optimization tasks, and notifies the planning team."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[manufacturing] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "manufacturing-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When a prototype test phase begins, creates Jira test plan tasks, queries baseline data from Snowflake, and notifies the R&D team.
naftiko: "0.5"
info:
label: "VW Prototype Testing Workflow"
description: "When a prototype test phase begins, creates Jira test plan tasks, queries baseline data from Snowflake, and notifies the R&D team."
tags:
- automotive
- snowflake
- jira
- slack
- testing
capability:
exposes:
- type: mcp
namespace: vw_prototype_testing
port: 8080
tools:
- name: handle-event
description: "When a prototype test phase begins, creates Jira test plan tasks, queries baseline data from Snowflake, and notifies the R&D team."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[automotive] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "automotive-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When a supplier delivery is delayed, queries impact from SAP, creates Jira mitigation tasks, and alerts the production team.
naftiko: "0.5"
info:
label: "VW Supplier Delivery Delay Handler"
description: "When a supplier delivery is delayed, queries impact from SAP, creates Jira mitigation tasks, and alerts the production team."
tags:
- manufacturing
- sap-s4hana
- jira
- slack
- supply-chain
capability:
exposes:
- type: mcp
namespace: vw_supplier_delivery
port: 8080
tools:
- name: handle-event
description: "When a supplier delivery is delayed, queries impact from SAP, creates Jira mitigation tasks, and alerts the production team."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[manufacturing] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "manufacturing-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When supplier quality scores drop, queries Snowflake for defect patterns, creates a Jira corrective action, and notifies procurement via Slack.
naftiko: "0.5"
info:
label: "VW Supplier Quality Alert"
description: "When supplier quality scores drop, queries Snowflake for defect patterns, creates a Jira corrective action, and notifies procurement via Slack."
tags:
- manufacturing
- snowflake
- jira
- slack
- quality
capability:
exposes:
- type: mcp
namespace: vw_supplier_quality_
port: 8080
tools:
- name: handle-event
description: "When supplier quality scores drop, queries Snowflake for defect patterns, creates a Jira corrective action, and notifies procurement via Slack."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[manufacturing] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "manufacturing-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Queries supplier sustainability scores from Snowflake, creates Jira audit tasks, and notifies the sustainability team.
naftiko: "0.5"
info:
label: "VW Supplier Sustainability Audit"
description: "Queries supplier sustainability scores from Snowflake, creates Jira audit tasks, and notifies the sustainability team."
tags:
- procurement
- snowflake
- jira
- slack
- sustainability
capability:
exposes:
- type: mcp
namespace: vw_supplier_sustaina
port: 8080
tools:
- name: handle-event
description: "Queries supplier sustainability scores from Snowflake, creates Jira audit tasks, and notifies the sustainability team."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[procurement] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "procurement-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When a supply chain disruption is detected, queries SAP for affected orders, creates Jira mitigation tasks, and alerts procurement.
naftiko: "0.5"
info:
label: "VW Supply Chain Disruption Handler"
description: "When a supply chain disruption is detected, queries SAP for affected orders, creates Jira mitigation tasks, and alerts procurement."
tags:
- manufacturing
- sap-s4hana
- jira
- slack
- supply-chain
capability:
exposes:
- type: mcp
namespace: vw_supply_chain_disr
port: 8080
tools:
- name: handle-event
description: "When a supply chain disruption is detected, queries SAP for affected orders, creates Jira mitigation tasks, and alerts procurement."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[manufacturing] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "manufacturing-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Runs telematics data privacy checks from Snowflake, creates Jira compliance tasks for violations, and notifies the DPO.
naftiko: "0.5"
info:
label: "VW Telematics Data Privacy Audit"
description: "Runs telematics data privacy checks from Snowflake, creates Jira compliance tasks for violations, and notifies the DPO."
tags:
- automotive
- snowflake
- jira
- slack
- privacy
capability:
exposes:
- type: mcp
namespace: vw_telematics_data_p
port: 8080
tools:
- name: handle-event
description: "Runs telematics data privacy checks from Snowflake, creates Jira compliance tasks for violations, and notifies the DPO."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[automotive] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "automotive-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Validates vehicle configurations against SAP BOM, creates Jira tickets for invalid configs, and notifies the engineering team.
naftiko: "0.5"
info:
label: "VW Vehicle Configuration Validation"
description: "Validates vehicle configurations against SAP BOM, creates Jira tickets for invalid configs, and notifies the engineering team."
tags:
- automotive
- sap-s4hana
- jira
- slack
- configuration
capability:
exposes:
- type: mcp
namespace: vw_vehicle_configura
port: 8080
tools:
- name: handle-event
description: "Validates vehicle configurations against SAP BOM, creates Jira tickets for invalid configs, and notifies the engineering team."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[automotive] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "automotive-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Syncs vehicle digital twin data from Snowflake telemetry, creates Jira tasks for calibration issues, and notifies engineering.
naftiko: "0.5"
info:
label: "VW Vehicle Digital Twin Sync"
description: "Syncs vehicle digital twin data from Snowflake telemetry, creates Jira tasks for calibration issues, and notifies engineering."
tags:
- automotive
- snowflake
- jira
- slack
- digital-twin
capability:
exposes:
- type: mcp
namespace: vw_vehicle_digital_t
port: 8080
tools:
- name: handle-event
description: "Syncs vehicle digital twin data from Snowflake telemetry, creates Jira tasks for calibration issues, and notifies engineering."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[automotive] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "automotive-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Tracks vehicle homologation status from Snowflake, creates Jira tasks for pending approvals, and notifies the regulatory team.
naftiko: "0.5"
info:
label: "VW Vehicle Homologation Tracker"
description: "Tracks vehicle homologation status from Snowflake, creates Jira tasks for pending approvals, and notifies the regulatory team."
tags:
- automotive
- snowflake
- jira
- slack
- regulatory
capability:
exposes:
- type: mcp
namespace: vw_vehicle_homologat
port: 8080
tools:
- name: handle-event
description: "Tracks vehicle homologation status from Snowflake, creates Jira tasks for pending approvals, and notifies the regulatory team."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[automotive] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "automotive-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When infotainment system errors spike, queries telemetry from Snowflake, creates a Jira bug, and alerts the UX team.
naftiko: "0.5"
info:
label: "VW Vehicle Infotainment Error Handler"
description: "When infotainment system errors spike, queries telemetry from Snowflake, creates a Jira bug, and alerts the UX team."
tags:
- automotive
- snowflake
- jira
- slack
- infotainment
capability:
exposes:
- type: mcp
namespace: vw_vehicle_infotainm
port: 8080
tools:
- name: handle-event
description: "When infotainment system errors spike, queries telemetry from Snowflake, creates a Jira bug, and alerts the UX team."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[automotive] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "automotive-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When a recall is issued, queries affected VINs from Snowflake, creates Jira tasks for each plant, and notifies the quality team via Slack.
naftiko: "0.5"
info:
label: "VW Vehicle Recall Notification Workflow"
description: "When a recall is issued, queries affected VINs from Snowflake, creates Jira tasks for each plant, and notifies the quality team via Slack."
tags:
- automotive
- snowflake
- jira
- slack
- recall
capability:
exposes:
- type: mcp
namespace: vw_vehicle_recall_no
port: 8080
tools:
- name: handle-event
description: "When a recall is issued, queries affected VINs from Snowflake, creates Jira tasks for each plant, and notifies the quality team via Slack."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[automotive] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "automotive-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When a vehicle software release is approved, deploys OTA update, monitors from Datadog, and notifies the software team.
naftiko: "0.5"
info:
label: "VW Vehicle Software Release Workflow"
description: "When a vehicle software release is approved, deploys OTA update, monitors from Datadog, and notifies the software team."
tags:
- automotive
- datadog
- jira
- slack
- vehicle-software
capability:
exposes:
- type: mcp
namespace: vw_vehicle_software_
port: 8080
tools:
- name: handle-event
description: "When a vehicle software release is approved, deploys OTA update, monitors from Datadog, and notifies the software team."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[automotive] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "automotive-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When a vehicle software vulnerability is found, creates a Jira security ticket, queries affected VINs, and alerts the CERT team.
naftiko: "0.5"
info:
label: "VW Vehicle Software Vulnerability Handler"
description: "When a vehicle software vulnerability is found, creates a Jira security ticket, queries affected VINs, and alerts the CERT team."
tags:
- security
- snowflake
- jira
- slack
- vehicle-software
capability:
exposes:
- type: mcp
namespace: vw_vehicle_software_
port: 8080
tools:
- name: handle-event
description: "When a vehicle software vulnerability is found, creates a Jira security ticket, queries affected VINs, and alerts the CERT team."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[security] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "security-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When warranty claims spike for a component, queries Snowflake for patterns, creates a Jira engineering ticket, and alerts quality.
naftiko: "0.5"
info:
label: "VW Warranty Claim Investigation"
description: "When warranty claims spike for a component, queries Snowflake for patterns, creates a Jira engineering ticket, and alerts quality."
tags:
- automotive
- snowflake
- jira
- slack
- warranty
capability:
exposes:
- type: mcp
namespace: vw_warranty_claim_in
port: 8080
tools:
- name: handle-event
description: "When warranty claims spike for a component, queries Snowflake for patterns, creates a Jira engineering ticket, and alerts quality."
inputParameters:
- name: event_id
in: body
type: string
description: "The triggering event identifier."
- name: context
in: body
type: string
description: "Additional context for the event."
steps:
- name: gather-data
type: call
call: "snowflake-api.run-query"
with:
event_id: "{{event_id}}"
- name: create-ticket
type: call
call: "jira-api.create-issue"
with:
project: "OPS"
issuetype: "Task"
summary: "[automotive] {{event_id}} — {{context}}"
- name: notify-team
type: call
call: "slack-api.post-message"
with:
channel: "automotive-ops"
text: "Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}"
consumes:
- type: http
namespace: snowflake-api
baseUri: "https://vwgroup.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-api
baseUri: "https://volkswagen.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: slack-api
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST