Volkswagen Capabilities

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

Sort
Expand

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