Hyundai Capabilities

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

Sort
Expand

When assembly line downtime exceeds a threshold, retrieves Splunk error logs, creates a ServiceNow priority incident, and escalates to the plant manager and engineering lead via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Assembly Line Downtime Escalation"
  description: "When assembly line downtime exceeds a threshold, retrieves Splunk error logs, creates a ServiceNow priority incident, and escalates to the plant manager and engineering lead via Microsoft Teams."
  tags:
    - manufacturing
    - quality
    - splunk
    - servicenow
    - microsoft-teams
    - production
capability:
  exposes:
    - type: mcp
      namespace: mfg-escalation
      port: 8080
      tools:
        - name: escalate-line-downtime
          description: "Given a plant code, assembly line ID, and downtime duration, pull error logs from Splunk, create a priority ServiceNow incident, and escalate via Microsoft Teams."
          inputParameters:
            - name: plant_code
              in: body
              type: string
              description: "The manufacturing plant code."
            - name: line_id
              in: body
              type: string
              description: "The assembly line identifier."
            - name: downtime_minutes
              in: body
              type: number
              description: "The duration of downtime in minutes."
          steps:
            - name: get-error-logs
              type: call
              call: "splunk.search-line-errors"
              with:
                plant_code: "{{plant_code}}"
                line_id: "{{line_id}}"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Assembly line downtime: {{plant_code}} Line {{line_id}} — {{downtime_minutes}} min"
                priority: "1"
                category: "manufacturing_downtime"
                assigned_group: "Plant_Engineering"
                description: "Line {{line_id}} at {{plant_code}} has been down for {{downtime_minutes}} minutes. Error count: {{get-error-logs.total_count}}. Latest error: {{get-error-logs.latest_error}}."
            - name: escalate-teams
              type: call
              call: "msteams.post-channel"
              with:
                channel_id: "plant-ops-critical"
                text: "CRITICAL: Line {{line_id}} at {{plant_code}} down {{downtime_minutes}} min. INC: {{create-incident.number}}. {{get-error-logs.total_count}} errors detected. Immediate attention required."
  consumes:
    - type: http
      namespace: splunk
      baseUri: "https://splunk.hyundai.com:8089/services"
      authentication:
        type: bearer
        token: "$secrets.splunk_token"
      resources:
        - name: search-jobs
          path: "/search/jobs/export?search=search+index%3Dassembly+plant%3D{{plant_code}}+line%3D{{line_id}}+severity%3DERROR+earliest%3D-4h&output_mode=json"
          inputParameters:
            - name: plant_code
              in: query
            - name: line_id
              in: query
          operations:
            - name: search-line-errors
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://hyundai.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/hyundai-plant-ops/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Retrieves the latest version of an AutoCAD design file from SharePoint, logs the version in Confluence as an engineering change record, and notifies the design review team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "AutoCAD Design File Version Tracker"
  description: "Retrieves the latest version of an AutoCAD design file from SharePoint, logs the version in Confluence as an engineering change record, and notifies the design review team in Microsoft Teams."
  tags:
    - engineering
    - design
    - autocad
    - sharepoint
    - confluence
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: design-versioning
      port: 8080
      tools:
        - name: track-design-version
          description: "Given a design file path and change description, retrieve the file metadata from SharePoint, log the change in Confluence, and notify the review team."
          inputParameters:
            - name: file_path
              in: body
              type: string
              description: "The SharePoint path to the AutoCAD design file."
            - name: change_description
              in: body
              type: string
              description: "A description of the design change."
            - name: engineer_email
              in: body
              type: string
              description: "The email of the engineer who made the change."
          steps:
            - name: get-file-metadata
              type: call
              call: "sharepoint.get-file-info"
              with:
                site_id: "engineering_designs"
                file_path: "{{file_path}}"
            - name: log-change
              type: call
              call: "confluence.create-page"
              with:
                space_key: "ENG"
                title: "Design change: {{file_path}} — v{{get-file-metadata.version}}"
                body: "File: {{file_path}}. Version: {{get-file-metadata.version}}. Modified by: {{engineer_email}}. Change: {{change_description}}. Size: {{get-file-metadata.size_bytes}} bytes."
            - name: notify-reviewers
              type: call
              call: "msteams.post-channel"
              with:
                channel_id: "design-review"
                text: "Design updated: {{file_path}} (v{{get-file-metadata.version}}) by {{engineer_email}}. Change: {{change_description}}. Confluence: {{log-change.url}}"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{file_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: get-file-info
              method: GET
    - type: http
      namespace: confluence
      baseUri: "https://hyundai-motor.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/hyundai-engineering/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Retrieves real-time vehicle telemetry data from AWS IoT Core by VIN, returning location, speed, battery level, and engine status.

naftiko: "0.5"
info:
  label: "AWS IoT Vehicle Telemetry Lookup"
  description: "Retrieves real-time vehicle telemetry data from AWS IoT Core by VIN, returning location, speed, battery level, and engine status."
  tags:
    - connected-car
    - telemetry
    - amazon-web-services
capability:
  exposes:
    - type: mcp
      namespace: vehicle-telemetry
      port: 8080
      tools:
        - name: get-telemetry
          description: "Get real-time vehicle telemetry by VIN."
          inputParameters:
            - name: vin
              in: body
              type: string
              description: "The vehicle identification number."
          call: "aws-iot.get-thing-shadow"
          with:
            thing_name: "vehicle_{{vin}}"
          outputParameters:
            - name: location
              type: object
              mapping: "$.state.reported.location"
            - name: speed
              type: number
              mapping: "$.state.reported.speed"
            - name: battery_level
              type: number
              mapping: "$.state.reported.batteryLevel"
  consumes:
    - type: http
      namespace: aws-iot
      baseUri: "https://iot.us-east-1.amazonaws.com"
      authentication:
        type: bearer
        token: "$secrets.aws_iot_token"
      resources:
        - name: shadows
          path: "/things/{{thing_name}}/shadow"
          inputParameters:
            - name: thing_name
              in: path
          operations:
            - name: get-thing-shadow
              method: GET

Retrieves the latest build status for an Azure DevOps pipeline used by Hyundai connected car software teams. Returns build result, duration, and triggered branch.

naftiko: "0.5"
info:
  label: "Azure DevOps Build Pipeline Status"
  description: "Retrieves the latest build status for an Azure DevOps pipeline used by Hyundai connected car software teams. Returns build result, duration, and triggered branch."
  tags:
    - engineering
    - ci-cd
    - azure-devops
    - connected-car
capability:
  exposes:
    - type: mcp
      namespace: devops-builds
      port: 8080
      tools:
        - name: get-latest-build
          description: "Get the latest build result for an Azure DevOps pipeline by definition ID. Returns build status, result, duration, and source branch."
          inputParameters:
            - name: pipeline_id
              in: body
              type: string
              description: "The Azure DevOps build definition ID."
          call: "azdevops.get-builds"
          with:
            pipeline_id: "{{pipeline_id}}"
          outputParameters:
            - name: build_number
              type: string
              mapping: "$.value[0].buildNumber"
            - name: result
              type: string
              mapping: "$.value[0].result"
            - name: source_branch
              type: string
              mapping: "$.value[0].sourceBranch"
  consumes:
    - type: http
      namespace: azdevops
      baseUri: "https://dev.azure.com/hyundai-motor/ConnectedCar/_apis/build"
      authentication:
        type: basic
        username: "$secrets.azdevops_user"
        password: "$secrets.azdevops_pat"
      resources:
        - name: builds
          path: "/builds?definitions={{pipeline_id}}&$top=1&api-version=7.0"
          inputParameters:
            - name: pipeline_id
              in: query
          operations:
            - name: get-builds
              method: GET

Handles remote vehicle commands through the Hyundai Bluelink connected car platform, supporting remote start, lock/unlock, climate control, and horn/light activation.

naftiko: "0.5"
info:
  label: "Bluelink Remote Vehicle Command Handler"
  description: "Handles remote vehicle commands through the Hyundai Bluelink connected car platform, supporting remote start, lock/unlock, climate control, and horn/light activation."
  tags:
    - connected-car
    - bluelink
    - remote-commands
capability:
  exposes:
    - type: mcp
      namespace: bluelink-commands
      port: 8080
      tools:
        - name: send-remote-command
          description: "Send a remote command to a Hyundai vehicle via Bluelink."
          inputParameters:
            - name: vehicle_vin
              in: body
              type: string
              description: "The vehicle identification number."
            - name: command_type
              in: body
              type: string
              description: "Command type such as remote-start, lock, unlock, or climate-control."
            - name: owner_id
              in: body
              type: string
              description: "The Bluelink account owner identifier."
          call: "bluelink-api.send-command"
          with:
            vin: "{{vehicle_vin}}"
            command: "{{command_type}}"
            owner: "{{owner_id}}"
          outputParameters:
            - name: command_status
              type: string
              mapping: "$.command.status"
            - name: execution_time
              type: string
              mapping: "$.command.executedAt"
            - name: vehicle_response
              type: string
              mapping: "$.command.vehicleResponse"
  consumes:
    - type: http
      namespace: bluelink-api
      baseUri: "https://api.hyundai.com/bluelink/v1"
      authentication:
        type: bearer
        token: "$secrets.hyundai_bluelink_api_token"
      resources:
        - name: commands
          path: "/vehicles/{{vin}}/commands"
          inputParameters:
            - name: vin
              in: path
          operations:
            - name: send-command
              method: POST

Manages the Hyundai Certified Pre-Owned 173-point inspection checklist, tracking completion status, pass/fail results, and required reconditioning work for CPO certification.

naftiko: "0.5"
info:
  label: "Certified Pre-Owned Inspection Checklist"
  description: "Manages the Hyundai Certified Pre-Owned 173-point inspection checklist, tracking completion status, pass/fail results, and required reconditioning work for CPO certification."
  tags:
    - certified-pre-owned
    - inspection
    - quality-assurance
capability:
  exposes:
    - type: mcp
      namespace: cpo-inspection
      port: 8080
      tools:
        - name: get-inspection-status
          description: "Retrieve CPO inspection checklist status for a vehicle."
          inputParameters:
            - name: vehicle_vin
              in: body
              type: string
              description: "The vehicle identification number."
            - name: dealer_id
              in: body
              type: string
              description: "The certifying dealer identifier."
          call: "cpo-api.get-inspection"
          with:
            vin: "{{vehicle_vin}}"
            dealer: "{{dealer_id}}"
          outputParameters:
            - name: points_completed
              type: integer
              mapping: "$.inspection.pointsCompleted"
            - name: points_failed
              type: integer
              mapping: "$.inspection.pointsFailed"
            - name: certification_eligible
              type: boolean
              mapping: "$.inspection.certificationEligible"
  consumes:
    - type: http
      namespace: cpo-api
      baseUri: "https://api.hyundai.com/cpo/v1"
      authentication:
        type: bearer
        token: "$secrets.hyundai_cpo_api_token"
      resources:
        - name: inspections
          path: "/vehicles/{{vin}}/inspections"
          inputParameters:
            - name: vin
              in: path
          operations:
            - name: get-inspection
              method: GET

Searches Hyundai engineering knowledge base in Confluence by keyword query. Returns matching pages with titles, space keys, and excerpt snippets.

naftiko: "0.5"
info:
  label: "Confluence Engineering Knowledge Search"
  description: "Searches Hyundai engineering knowledge base in Confluence by keyword query. Returns matching pages with titles, space keys, and excerpt snippets."
  tags:
    - engineering
    - knowledge-management
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: engineering-kb
      port: 8080
      tools:
        - name: search-engineering-docs
          description: "Search the Confluence engineering knowledge base by keyword query. Returns page titles, space keys, and content excerpts."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "The search query string."
          call: "confluence.search"
          with:
            query: "{{query}}"
          outputParameters:
            - name: results
              type: array
              mapping: "$.results"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://hyundai-motor.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: search
          path: "/content/search?cql=text~'{{query}}'+and+space=ENG"
          inputParameters:
            - name: query
              in: query
          operations:
            - name: search
              method: GET

Orchestrates an over-the-air software update for connected vehicles by validating the update package in Azure DevOps, scheduling deployment via Bluelink, and logging the rollout in ServiceNow.

naftiko: "0.5"
info:
  label: "Connected Car OTA Update Deployment"
  description: "Orchestrates an over-the-air software update for connected vehicles by validating the update package in Azure DevOps, scheduling deployment via Bluelink, and logging the rollout in ServiceNow."
  tags:
    - connected-car
    - ota-updates
    - azure-devops
    - bluelink
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: ota-deployment
      port: 8080
      tools:
        - name: deploy-ota-update
          description: "Given a software version, target vehicle model, and model year, validate the build in Azure DevOps, schedule deployment via Bluelink, and log in ServiceNow."
          inputParameters:
            - name: software_version
              in: body
              type: string
              description: "The software version to deploy (e.g. 2.4.1-rc3)."
            - name: target_model
              in: body
              type: string
              description: "The target vehicle model (e.g. Ioniq 5)."
            - name: model_year
              in: body
              type: number
              description: "The target model year."
          steps:
            - name: validate-build
              type: call
              call: "azdevops.get-build-artifact"
              with:
                version: "{{software_version}}"
            - name: schedule-deployment
              type: call
              call: "bluelink.schedule-ota"
              with:
                model: "{{target_model}}"
                model_year: "{{model_year}}"
                package_url: "{{validate-build.artifact_url}}"
                version: "{{software_version}}"
            - name: log-rollout
              type: call
              call: "servicenow.create-change"
              with:
                short_description: "OTA deployment: {{target_model}} MY{{model_year}} — v{{software_version}}"
                description: "Scheduled OTA update for {{target_model}} MY{{model_year}}. Version: {{software_version}}. Deployment ID: {{schedule-deployment.deployment_id}}. Target vehicles: {{schedule-deployment.target_count}}."
                category: "ota_deployment"
                assigned_group: "Connected_Car_Ops"
  consumes:
    - type: http
      namespace: azdevops
      baseUri: "https://dev.azure.com/hyundai-motor/ConnectedCar/_apis/build"
      authentication:
        type: basic
        username: "$secrets.azdevops_user"
        password: "$secrets.azdevops_pat"
      resources:
        - name: artifacts
          path: "/builds?buildNumber={{version}}&api-version=7.0"
          inputParameters:
            - name: version
              in: query
          operations:
            - name: get-build-artifact
              method: GET
    - type: http
      namespace: bluelink
      baseUri: "https://api.bluelink.hyundai.com/v2"
      authentication:
        type: bearer
        token: "$secrets.bluelink_api_token"
      resources:
        - name: ota-deployments
          path: "/ota/deployments"
          operations:
            - name: schedule-ota
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://hyundai.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: change-requests
          path: "/table/change_request"
          operations:
            - name: create-change
              method: POST

Runs remote diagnostics on a connected vehicle by pulling DTC codes from AWS IoT, matching against the repair knowledge base, and creating a dealer service appointment.

naftiko: "0.5"
info:
  label: "Connected Car Remote Diagnostics Pipeline"
  description: "Runs remote diagnostics on a connected vehicle by pulling DTC codes from AWS IoT, matching against the repair knowledge base, and creating a dealer service appointment."
  tags:
    - connected-car
    - diagnostics
    - amazon-web-services
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: remote-diagnostics
      port: 8080
      tools:
        - name: run-remote-diagnostics
          description: "Run remote diagnostics and schedule service if needed."
          inputParameters:
            - name: vin
              in: body
              type: string
              description: "The vehicle VIN."
          steps:
            - name: get-dtc-codes
              type: call
              call: "aws-iot.get-thing-shadow"
              with:
                thing_name: "vehicle_{{vin}}"
            - name: lookup-repair
              type: call
              call: "knowledge-base.search-dtc"
              with:
                dtc_codes: "{{get-dtc-codes.state.reported.activeDTCs}}"
            - name: create-service-appointment
              type: call
              call: "salesforce.create-case"
              with:
                vin: "{{vin}}"
                type: "remote_diagnostics"
                description: "DTCs: {{get-dtc-codes.state.reported.activeDTCs}}. Recommended: {{lookup-repair.recommended_action}}."
  consumes:
    - type: http
      namespace: aws-iot
      baseUri: "https://iot.us-east-1.amazonaws.com"
      authentication:
        type: bearer
        token: "$secrets.aws_iot_token"
      resources:
        - name: shadows
          path: "/things/{{thing_name}}/shadow"
          inputParameters:
            - name: thing_name
              in: path
          operations:
            - name: get-thing-shadow
              method: GET
    - type: http
      namespace: knowledge-base
      baseUri: "https://kb.hyundai.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.kb_token"
      resources:
        - name: dtc
          path: "/dtc/search"
          operations:
            - name: search-dtc
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://hyundai.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case"
          operations:
            - name: create-case
              method: POST

Activates connected car subscriptions by provisioning in the telematics platform, creating a billing record in SAP, and sending activation confirmation via push notification.

naftiko: "0.5"
info:
  label: "Connected Car Subscription Activation Pipeline"
  description: "Activates connected car subscriptions by provisioning in the telematics platform, creating a billing record in SAP, and sending activation confirmation via push notification."
  tags:
    - connected-car
    - subscription
    - sap
capability:
  exposes:
    - type: mcp
      namespace: subscription-activation
      port: 8080
      tools:
        - name: activate-subscription
          description: "Activate a connected car subscription."
          inputParameters:
            - name: vin
              in: body
              type: string
              description: "The vehicle VIN."
            - name: plan
              in: body
              type: string
              description: "Subscription plan (basic, premium, ultimate)."
          steps:
            - name: provision-telematics
              type: call
              call: "telematics.activate-plan"
              with:
                vin: "{{vin}}"
                plan: "{{plan}}"
            - name: create-billing
              type: call
              call: "sap.create-subscription-billing"
              with:
                vin: "{{vin}}"
                plan: "{{plan}}"
                activation_date: "{{provision-telematics.activation_date}}"
            - name: send-confirmation
              type: call
              call: "push-service.send-notification"
              with:
                vin: "{{vin}}"
                title: "Bluelink Subscription Activated"
                body: "Your {{plan}} plan is now active. Enjoy connected car features."
  consumes:
    - type: http
      namespace: telematics
      baseUri: "https://telematics.hyundai.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.telematics_token"
      resources:
        - name: plans
          path: "/vehicles/{{vin}}/plans"
          inputParameters:
            - name: vin
              in: path
          operations:
            - name: activate-plan
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://hyundai-s4.sap.com/sap/opu/odata/sap/ZSD_SUBSCRIPTION_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: subscriptions
          path: "/SubscriptionBillingSet"
          operations:
            - name: create-subscription-billing
              method: POST
    - type: http
      namespace: push-service
      baseUri: "https://push.hyundai.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.push_service_token"
      resources:
        - name: notifications
          path: "/notifications"
          operations:
            - name: send-notification
              method: POST

Retrieves real-time telematics data for a connected Hyundai vehicle from the Bluelink IoT platform. Returns battery/fuel level, odometer, tire pressure, and GPS location.

naftiko: "0.5"
info:
  label: "Connected Car Telematics Snapshot"
  description: "Retrieves real-time telematics data for a connected Hyundai vehicle from the Bluelink IoT platform. Returns battery/fuel level, odometer, tire pressure, and GPS location."
  tags:
    - connected-car
    - telematics
    - iot
    - bluelink
capability:
  exposes:
    - type: mcp
      namespace: connected-vehicle
      port: 8080
      tools:
        - name: get-vehicle-telematics
          description: "Fetch real-time telematics snapshot for a connected vehicle by VIN. Returns battery or fuel level, odometer reading, tire pressures, and last known GPS coordinates."
          inputParameters:
            - name: vin
              in: body
              type: string
              description: "The 17-character Vehicle Identification Number."
          call: "bluelink.get-vehicle-status"
          with:
            vin: "{{vin}}"
          outputParameters:
            - name: battery_level
              type: number
              mapping: "$.vehicleStatus.batteryStatus.stateOfCharge"
            - name: odometer_km
              type: number
              mapping: "$.vehicleStatus.odometer"
            - name: tire_pressure
              type: object
              mapping: "$.vehicleStatus.tirePressure"
            - name: gps_latitude
              type: number
              mapping: "$.vehicleStatus.location.latitude"
            - name: gps_longitude
              type: number
              mapping: "$.vehicleStatus.location.longitude"
  consumes:
    - type: http
      namespace: bluelink
      baseUri: "https://api.bluelink.hyundai.com/v2"
      authentication:
        type: bearer
        token: "$secrets.bluelink_api_token"
      resources:
        - name: vehicle-status
          path: "/vehicles/{{vin}}/status"
          inputParameters:
            - name: vin
              in: path
          operations:
            - name: get-vehicle-status
              method: GET

When a connected vehicle reports a critical DTC via Bluelink, looks up the vehicle owner in Salesforce, creates a ServiceNow case, and notifies the nearest dealer service center via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Connected Vehicle Diagnostic Alert Handler"
  description: "When a connected vehicle reports a critical DTC via Bluelink, looks up the vehicle owner in Salesforce, creates a ServiceNow case, and notifies the nearest dealer service center via Microsoft Teams."
  tags:
    - connected-car
    - diagnostics
    - bluelink
    - salesforce
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: vehicle-diagnostics
      port: 8080
      tools:
        - name: handle-diagnostic-alert
          description: "Given a VIN and DTC code, look up the vehicle owner, create a service case, and notify the dealer."
          inputParameters:
            - name: vin
              in: body
              type: string
              description: "The 17-character VIN."
            - name: dtc_code
              in: body
              type: string
              description: "The diagnostic trouble code (e.g. P0300)."
            - name: severity
              in: body
              type: string
              description: "The severity level (CRITICAL, WARNING, INFO)."
          steps:
            - name: get-vehicle-data
              type: call
              call: "bluelink.get-vehicle-info"
              with:
                vin: "{{vin}}"
            - name: get-owner
              type: call
              call: "salesforce.get-owner"
              with:
                vin: "{{vin}}"
            - name: create-service-case
              type: call
              call: "servicenow.create-case"
              with:
                short_description: "DTC {{dtc_code}} — VIN {{vin}} — {{severity}}"
                description: "Vehicle {{get-vehicle-data.model}} {{get-vehicle-data.year}} (VIN: {{vin}}) reported DTC {{dtc_code}} at severity {{severity}}. Owner: {{get-owner.name}} ({{get-owner.email}}). Odometer: {{get-vehicle-data.odometer_km}} km."
                category: "vehicle_diagnostic"
                priority: "1"
            - name: notify-dealer
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-owner.dealer_service_email}}"
                text: "Diagnostic alert: {{get-vehicle-data.model}} {{get-vehicle-data.year}} VIN {{vin}} — DTC {{dtc_code}} ({{severity}}). Owner: {{get-owner.name}}. Case: {{create-service-case.number}}. Proactive outreach recommended."
  consumes:
    - type: http
      namespace: bluelink
      baseUri: "https://api.bluelink.hyundai.com/v2"
      authentication:
        type: bearer
        token: "$secrets.bluelink_api_token"
      resources:
        - name: vehicles
          path: "/vehicles/{{vin}}"
          inputParameters:
            - name: vin
              in: path
          operations:
            - name: get-vehicle-info
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://hyundai.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: owners
          path: "/query?q=SELECT+Name,Email,Dealer_Service_Email__c+FROM+Vehicle_Owner__c+WHERE+VIN__c='{{vin}}'"
          inputParameters:
            - name: vin
              in: query
          operations:
            - name: get-owner
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://hyundai.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: cases
          path: "/table/sn_customerservice_case"
          operations:
            - name: create-case
              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 vehicle service is completed, sends a satisfaction survey via Google Forms, logs the response in Salesforce, and escalates low scores to the dealer operations team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Customer Satisfaction Survey Pipeline"
  description: "When a vehicle service is completed, sends a satisfaction survey via Google Forms, logs the response in Salesforce, and escalates low scores to the dealer operations team in Microsoft Teams."
  tags:
    - customer-service
    - dealer-management
    - google-forms
    - salesforce
    - microsoft-teams
    - feedback
capability:
  exposes:
    - type: mcp
      namespace: customer-satisfaction
      port: 8080
      tools:
        - name: process-service-survey
          description: "Given a service case number and customer email, send a survey, log the response in Salesforce, and escalate low scores to the dealer team."
          inputParameters:
            - name: case_number
              in: body
              type: string
              description: "The ServiceNow service case number."
            - name: customer_email
              in: body
              type: string
              description: "The customer email address."
            - name: dealer_code
              in: body
              type: string
              description: "The dealer code where service was performed."
            - name: satisfaction_score
              in: body
              type: number
              description: "The customer satisfaction score (1-10)."
          steps:
            - name: log-survey-result
              type: call
              call: "salesforce.create-survey-record"
              with:
                case_number: "{{case_number}}"
                customer_email: "{{customer_email}}"
                dealer_code: "{{dealer_code}}"
                score: "{{satisfaction_score}}"
            - name: escalate-low-score
              type: call
              call: "msteams.post-channel"
              with:
                channel_id: "dealer-ops-escalations"
                text: "Low CSAT alert: Score {{satisfaction_score}}/10 for case {{case_number}} at dealer {{dealer_code}}. Customer: {{customer_email}}. Survey record: {{log-survey-result.id}}. Follow-up required."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://hyundai.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: survey-records
          path: "/sobjects/Service_Survey__c"
          operations:
            - name: create-survey-record
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/hyundai-dealer-ops/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Processes customer test drive bookings by creating a lead in Salesforce, checking vehicle availability at the dealer, and sending confirmation via SendGrid.

naftiko: "0.5"
info:
  label: "Customer Test Drive Booking Orchestrator"
  description: "Processes customer test drive bookings by creating a lead in Salesforce, checking vehicle availability at the dealer, and sending confirmation via SendGrid."
  tags:
    - sales
    - customer-experience
    - salesforce
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: test-drive
      port: 8080
      tools:
        - name: book-test-drive
          description: "Book a customer test drive at a dealer."
          inputParameters:
            - name: customer_name
              in: body
              type: string
              description: "Customer name."
            - name: customer_email
              in: body
              type: string
              description: "Customer email."
            - name: model
              in: body
              type: string
              description: "Vehicle model."
            - name: dealer_id
              in: body
              type: string
              description: "Dealer ID."
          steps:
            - name: create-lead
              type: call
              call: "salesforce.create-lead"
              with:
                name: "{{customer_name}}"
                email: "{{customer_email}}"
                model_interest: "{{model}}"
                dealer: "{{dealer_id}}"
            - name: check-vehicle
              type: call
              call: "dealer-portal.check-demo-availability"
              with:
                dealer: "{{dealer_id}}"
                model: "{{model}}"
            - name: send-confirmation
              type: call
              call: "sendgrid.send-email"
              with:
                to: "{{customer_email}}"
                template_id: "test_drive_confirmation"
                dynamic_data:
                  name: "{{customer_name}}"
                  model: "{{model}}"
                  dealer_name: "{{check-vehicle.dealer_name}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://hyundai.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: leads
          path: "/sobjects/Lead"
          operations:
            - name: create-lead
              method: POST
    - type: http
      namespace: dealer-portal
      baseUri: "https://dealer-portal.hyundai.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.dealer_portal_token"
      resources:
        - name: demos
          path: "/dealers/{{dealer}}/demo-vehicles?model={{model}}"
          inputParameters:
            - name: dealer
              in: path
            - name: model
              in: query
          operations:
            - name: check-demo-availability
              method: GET
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: mail
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST

Queries Datadog for infrastructure health metrics of a specific manufacturing plant. Returns host count, average CPU utilization, memory usage, and active alerts.

naftiko: "0.5"
info:
  label: "Datadog Plant Infrastructure Health"
  description: "Queries Datadog for infrastructure health metrics of a specific manufacturing plant. Returns host count, average CPU utilization, memory usage, and active alerts."
  tags:
    - manufacturing
    - monitoring
    - datadog
    - infrastructure
capability:
  exposes:
    - type: mcp
      namespace: plant-monitoring
      port: 8080
      tools:
        - name: get-plant-health
          description: "Fetch infrastructure health metrics for a manufacturing plant by plant tag in Datadog. Returns host count, average CPU, memory usage, and alert count."
          inputParameters:
            - name: plant_tag
              in: body
              type: string
              description: "The Datadog tag for the plant (e.g. plant:ulsan-1)."
          call: "datadog.query-metrics"
          with:
            plant_tag: "{{plant_tag}}"
          outputParameters:
            - name: host_count
              type: number
              mapping: "$.series[0].pointlist[-1][1]"
            - name: avg_cpu
              type: number
              mapping: "$.series[1].pointlist[-1][1]"
            - name: avg_memory
              type: number
              mapping: "$.series[2].pointlist[-1][1]"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      inputParameters:
        - name: DD-APPLICATION-KEY
          in: header
          value: "$secrets.datadog_app_key"
      resources:
        - name: metrics
          path: "/query?query=avg:system.cpu.user{{{plant_tag}}}&from=-1h"
          inputParameters:
            - name: plant_tag
              in: query
          operations:
            - name: query-metrics
              method: GET

When a batch of vehicles completes production, allocates units to dealers in Salesforce based on demand, creates shipping orders in SAP, and notifies dealers of incoming allocations via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Dealer Allocation and Logistics Coordinator"
  description: "When a batch of vehicles completes production, allocates units to dealers in Salesforce based on demand, creates shipping orders in SAP, and notifies dealers of incoming allocations via Microsoft Teams."
  tags:
    - dealer-management
    - logistics
    - salesforce
    - sap
    - microsoft-teams
    - production
capability:
  exposes:
    - type: mcp
      namespace: dealer-allocation
      port: 8080
      tools:
        - name: allocate-and-ship
          description: "Given a production batch ID and model, allocate vehicles to dealers in Salesforce, create SAP shipping orders, and notify dealers via Teams."
          inputParameters:
            - name: batch_id
              in: body
              type: string
              description: "The production batch identifier."
            - name: model
              in: body
              type: string
              description: "The vehicle model produced."
            - name: unit_count
              in: body
              type: number
              description: "The number of units in the batch."
          steps:
            - name: get-dealer-demand
              type: call
              call: "salesforce.get-demand"
              with:
                model: "{{model}}"
            - name: create-allocations
              type: call
              call: "salesforce.create-allocation"
              with:
                batch_id: "{{batch_id}}"
                model: "{{model}}"
                unit_count: "{{unit_count}}"
                demand_data: "{{get-dealer-demand.records}}"
            - name: create-shipping-order
              type: call
              call: "sap.create-delivery"
              with:
                batch_id: "{{batch_id}}"
                allocation_count: "{{create-allocations.dealer_count}}"
            - name: notify-dealers
              type: call
              call: "msteams.post-channel"
              with:
                channel_id: "dealer-logistics"
                text: "Vehicle allocation complete: {{unit_count}} units of {{model}} from batch {{batch_id}} allocated to {{create-allocations.dealer_count}} dealers. Shipping order: {{create-shipping-order.delivery_number}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://hyundai.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: demand
          path: "/query?q=SELECT+Dealer_Code__c,Demand_Units__c+FROM+Dealer_Demand__c+WHERE+Model__c='{{model}}'"
          inputParameters:
            - name: model
              in: query
          operations:
            - name: get-demand
              method: GET
        - name: allocations
          path: "/sobjects/Vehicle_Allocation__c"
          operations:
            - name: create-allocation
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://hyundai-s4.sap.com/sap/opu/odata/sap/SD_DELIVERY_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: deliveries
          path: "/A_OutboundDelivery"
          operations:
            - name: create-delivery
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/hyundai-logistics/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Improves dealer customer satisfaction by pulling CSI scores from Snowflake, identifying low-performing areas, and creating improvement action plans in Jira.

naftiko: "0.5"
info:
  label: "Dealer Customer Satisfaction Improvement Pipeline"
  description: "Improves dealer customer satisfaction by pulling CSI scores from Snowflake, identifying low-performing areas, and creating improvement action plans in Jira."
  tags:
    - dealer
    - customer-satisfaction
    - snowflake
    - jira
capability:
  exposes:
    - type: mcp
      namespace: dealer-csi
      port: 8080
      tools:
        - name: improve-dealer-csi
          description: "Analyze and create CSI improvement plans for a dealer."
          inputParameters:
            - name: dealer_id
              in: body
              type: string
              description: "The dealer ID."
          steps:
            - name: get-csi-scores
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "SELECT category, score, benchmark FROM dealer_csi_scores WHERE dealer_id = '{{dealer_id}}' ORDER BY score ASC LIMIT 5"
            - name: get-dealer-info
              type: call
              call: "salesforce.get-account"
              with:
                id: "{{dealer_id}}"
            - name: create-improvement-plan
              type: call
              call: "jira.create-issue"
              with:
                project: "DEALER"
                issue_type: "Task"
                summary: "CSI improvement: {{get-dealer-info.Name}} ({{dealer_id}})"
                description: "Lowest scoring areas: {{get-csi-scores.data}}. Action plan required."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://hyundai.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
      baseUri: "https://hyundai.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account/{{id}}"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://hyundai.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

Aggregates dealer digital marketing performance by pulling Google Ads metrics, website traffic from Google Analytics, and publishing a consolidated report to Power BI.

naftiko: "0.5"
info:
  label: "Dealer Digital Marketing Performance Aggregator"
  description: "Aggregates dealer digital marketing performance by pulling Google Ads metrics, website traffic from Google Analytics, and publishing a consolidated report to Power BI."
  tags:
    - marketing
    - dealer
    - google-analytics
    - google-ads
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: dealer-marketing
      port: 8080
      tools:
        - name: aggregate-dealer-marketing
          description: "Aggregate dealer digital marketing performance."
          inputParameters:
            - name: dealer_id
              in: body
              type: string
              description: "The dealer ID."
            - name: month
              in: body
              type: string
              description: "Month in YYYY-MM."
          steps:
            - name: get-ads-performance
              type: call
              call: "google-ads.get-dealer-report"
              with:
                dealer: "{{dealer_id}}"
                month: "{{month}}"
            - name: get-website-traffic
              type: call
              call: "google-analytics.get-dealer-traffic"
              with:
                dealer: "{{dealer_id}}"
                month: "{{month}}"
            - name: refresh-dashboard
              type: call
              call: "powerbi.refresh-dataset"
              with:
                dataset_id: "dealer-marketing-performance"
  consumes:
    - type: http
      namespace: google-ads
      baseUri: "https://googleads.googleapis.com/v15"
      authentication:
        type: bearer
        token: "$secrets.google_ads_token"
      resources:
        - name: reports
          path: "/customers/hyundai/campaigns/dealer_{{dealer}}/metrics"
          inputParameters:
            - name: dealer
              in: path
          operations:
            - name: get-dealer-report
              method: GET
    - type: http
      namespace: google-analytics
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: reports
          path: "/properties/dealer_{{dealer}}:runReport"
          inputParameters:
            - name: dealer
              in: path
          operations:
            - name: get-dealer-traffic
              method: POST
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: refresh-dataset
              method: POST

Calculates dealer incentive payouts by pulling sales data from SAP, verifying program eligibility in Salesforce, and posting payments in Oracle Cloud Financials.

naftiko: "0.5"
info:
  label: "Dealer Incentive Program Calculator"
  description: "Calculates dealer incentive payouts by pulling sales data from SAP, verifying program eligibility in Salesforce, and posting payments in Oracle Cloud Financials."
  tags:
    - sales
    - dealer
    - sap
    - salesforce
    - oracle-cloud
capability:
  exposes:
    - type: mcp
      namespace: dealer-incentives
      port: 8080
      tools:
        - name: calculate-incentives
          description: "Calculate and process dealer incentive payouts."
          inputParameters:
            - name: dealer_id
              in: body
              type: string
              description: "The dealer ID."
            - name: period
              in: body
              type: string
              description: "Incentive period in YYYY-MM."
          steps:
            - name: get-sales-data
              type: call
              call: "sap.get-dealer-sales"
              with:
                dealer: "{{dealer_id}}"
                period: "{{period}}"
            - name: check-eligibility
              type: call
              call: "salesforce.get-incentive-program"
              with:
                dealer_id: "{{dealer_id}}"
                units_sold: "{{get-sales-data.total_units}}"
            - name: post-payment
              type: call
              call: "oracle-financials.create-payment"
              with:
                vendor: "{{dealer_id}}"
                amount: "{{check-eligibility.payout_amount}}"
                reference: "incentive_{{period}}_{{dealer_id}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://hyundai-s4.sap.com/sap/opu/odata/sap/ZSD_DEALER_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: sales
          path: "/DealerSalesSet(Dealer='{{dealer}}',Period='{{period}}')"
          inputParameters:
            - name: dealer
              in: path
            - name: period
              in: path
          operations:
            - name: get-dealer-sales
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://hyundai.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: incentives
          path: "/sobjects/Incentive_Program__c"
          operations:
            - name: get-incentive-program
              method: POST
    - type: http
      namespace: oracle-financials
      baseUri: "https://hyundai-erp.oraclecloud.com/fscmRestApi/resources/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_cloud_token"
      resources:
        - name: payments
          path: "/payablesPayments"
          operations:
            - name: create-payment
              method: POST

Queries current dealer inventory from Salesforce, identifies vehicles exceeding a days-on-lot threshold, and sends an aging alert to the regional sales manager in Microsoft Teams with recommended price actions.

naftiko: "0.5"
info:
  label: "Dealer Inventory Aging Alert"
  description: "Queries current dealer inventory from Salesforce, identifies vehicles exceeding a days-on-lot threshold, and sends an aging alert to the regional sales manager in Microsoft Teams with recommended price actions."
  tags:
    - dealer-management
    - inventory
    - salesforce
    - microsoft-teams
    - sales
capability:
  exposes:
    - type: mcp
      namespace: dealer-inventory
      port: 8080
      tools:
        - name: alert-aging-inventory
          description: "Given a dealer code and days-on-lot threshold, query inventory in Salesforce and alert the regional manager in Teams about aging units."
          inputParameters:
            - name: dealer_code
              in: body
              type: string
              description: "The Hyundai dealer code (6-character)."
            - name: aging_threshold_days
              in: body
              type: number
              description: "The days-on-lot threshold to flag vehicles."
          steps:
            - name: query-inventory
              type: call
              call: "salesforce.query-aging-inventory"
              with:
                dealer_code: "{{dealer_code}}"
                threshold: "{{aging_threshold_days}}"
            - name: notify-regional-manager
              type: call
              call: "msteams.post-channel"
              with:
                channel_id: "regional-sales"
                text: "Inventory aging alert for dealer {{dealer_code}}: {{query-inventory.aging_count}} vehicles exceed {{aging_threshold_days}} days on lot. Oldest: {{query-inventory.oldest_model}} at {{query-inventory.max_days}} days. Action recommended."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://hyundai.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: inventory
          path: "/query?q=SELECT+VIN__c,Model__c,Trim__c,DaysOnLot__c+FROM+Vehicle_Inventory__c+WHERE+Dealer_Code__c='{{dealer_code}}'+AND+DaysOnLot__c>{{threshold}}+ORDER+BY+DaysOnLot__c+DESC"
          inputParameters:
            - name: dealer_code
              in: query
            - name: threshold
              in: query
          operations:
            - name: query-aging-inventory
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/hyundai-sales/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Fulfills dealer parts orders by validating stock in SAP, creating shipment in the logistics system, and sending tracking to the dealer via SendGrid.

naftiko: "0.5"
info:
  label: "Dealer Parts Order Fulfillment Pipeline"
  description: "Fulfills dealer parts orders by validating stock in SAP, creating shipment in the logistics system, and sending tracking to the dealer via SendGrid."
  tags:
    - parts
    - dealer
    - sap
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: parts-fulfillment
      port: 8080
      tools:
        - name: fulfill-parts-order
          description: "Fulfill a dealer parts order."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The parts order ID."
            - name: dealer_email
              in: body
              type: string
              description: "Dealer email."
          steps:
            - name: validate-stock
              type: call
              call: "sap.check-parts-availability"
              with:
                order: "{{order_id}}"
            - name: create-shipment
              type: call
              call: "logistics.create-shipment"
              with:
                order_id: "{{order_id}}"
                items: "{{validate-stock.available_items}}"
            - name: send-tracking
              type: call
              call: "sendgrid.send-email"
              with:
                to: "{{dealer_email}}"
                template_id: "parts_shipment_tracking"
                dynamic_data:
                  order_id: "{{order_id}}"
                  tracking_number: "{{create-shipment.tracking_number}}"
                  eta: "{{create-shipment.estimated_delivery}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://hyundai-s4.sap.com/sap/opu/odata/sap/ZMM_PARTS_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: availability
          path: "/OrderAvailabilitySet('{{order}}')"
          inputParameters:
            - name: order
              in: path
          operations:
            - name: check-parts-availability
              method: GET
    - type: http
      namespace: logistics
      baseUri: "https://logistics.hyundai.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.logistics_token"
      resources:
        - name: shipments
          path: "/shipments"
          operations:
            - name: create-shipment
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: mail
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST

Aggregates dealer sales data from Salesforce, service metrics from ServiceNow, customer satisfaction from Google Forms, and generates a quarterly performance review report posted to SharePoint and Microsoft Teams.

naftiko: "0.5"
info:
  label: "Dealer Performance Review Generator"
  description: "Aggregates dealer sales data from Salesforce, service metrics from ServiceNow, customer satisfaction from Google Forms, and generates a quarterly performance review report posted to SharePoint and Microsoft Teams."
  tags:
    - dealer-management
    - sales
    - salesforce
    - servicenow
    - sharepoint
    - microsoft-teams
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: dealer-performance
      port: 8080
      tools:
        - name: generate-dealer-review
          description: "Given a dealer code and quarter, aggregate performance data from multiple sources and publish a review report."
          inputParameters:
            - name: dealer_code
              in: body
              type: string
              description: "The Hyundai dealer code."
            - name: quarter
              in: body
              type: string
              description: "The quarter to review (e.g. Q1-2026)."
          steps:
            - name: get-sales-data
              type: call
              call: "salesforce.get-dealer-sales"
              with:
                dealer_code: "{{dealer_code}}"
                quarter: "{{quarter}}"
            - name: get-service-metrics
              type: call
              call: "servicenow.get-dealer-service-metrics"
              with:
                dealer_code: "{{dealer_code}}"
                quarter: "{{quarter}}"
            - name: upload-report
              type: call
              call: "sharepoint.upload-file"
              with:
                site_id: "dealer_performance"
                file_path: "Reviews/{{dealer_code}}/{{quarter}}_performance.json"
                content: "Sales units: {{get-sales-data.units_sold}}. Revenue: {{get-sales-data.revenue}}. Avg service time: {{get-service-metrics.avg_service_hours}}h. CSAT: {{get-service-metrics.avg_csat}}."
            - name: notify-regional-manager
              type: call
              call: "msteams.post-channel"
              with:
                channel_id: "dealer-performance"
                text: "Dealer {{dealer_code}} {{quarter}} review ready. Sales: {{get-sales-data.units_sold}} units (${{get-sales-data.revenue}}). Service CSAT: {{get-service-metrics.avg_csat}}/10. Report: {{upload-report.url}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://hyundai.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: dealer-sales
          path: "/query?q=SELECT+SUM(Units_Sold__c),SUM(Revenue__c)+FROM+Dealer_Sales__c+WHERE+Dealer_Code__c='{{dealer_code}}'+AND+Quarter__c='{{quarter}}'"
          inputParameters:
            - name: dealer_code
              in: query
            - name: quarter
              in: query
          operations:
            - name: get-dealer-sales
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://hyundai.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: service-metrics
          path: "/table/u_dealer_service_metrics?sysparm_query=u_dealer_code={{dealer_code}}^u_quarter={{quarter}}"
          inputParameters:
            - name: dealer_code
              in: query
            - name: quarter
              in: query
          operations:
            - name: get-dealer-service-metrics
              method: GET
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{file_path}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: upload-file
              method: PUT
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/hyundai-dealer-ops/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

When a new lead arrives in Salesforce, enriches the contact with LinkedIn profile data via HubSpot, assigns to the nearest dealer in Google Maps, and alerts the dealer sales manager in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Dealer Sales Lead Enrichment Pipeline"
  description: "When a new lead arrives in Salesforce, enriches the contact with LinkedIn profile data via HubSpot, assigns to the nearest dealer in Google Maps, and alerts the dealer sales manager in Microsoft Teams."
  tags:
    - sales
    - dealer-management
    - salesforce
    - hubspot
    - google-maps
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: dealer-leads
      port: 8080
      tools:
        - name: enrich-and-assign-lead
          description: "Given a Salesforce lead ID and customer zip code, enrich the lead with HubSpot data, find the nearest dealer via Google Maps, and notify the dealer manager in Teams."
          inputParameters:
            - name: lead_id
              in: body
              type: string
              description: "The Salesforce lead record ID."
            - name: customer_zip
              in: body
              type: string
              description: "The customer postal/zip code for dealer proximity matching."
          steps:
            - name: get-lead
              type: call
              call: "salesforce.get-lead"
              with:
                lead_id: "{{lead_id}}"
            - name: enrich-contact
              type: call
              call: "hubspot.enrich-contact"
              with:
                email: "{{get-lead.email}}"
            - name: find-nearest-dealer
              type: call
              call: "gmaps.find-nearest"
              with:
                zip_code: "{{customer_zip}}"
                type: "hyundai_dealer"
            - name: notify-dealer-manager
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{find-nearest-dealer.manager_email}}"
                text: "New lead assigned: {{get-lead.first_name}} {{get-lead.last_name}} ({{get-lead.email}}). Interested in: {{get-lead.vehicle_interest}}. Enrichment: {{enrich-contact.company}}, {{enrich-contact.job_title}}. Dealer: {{find-nearest-dealer.dealer_name}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://hyundai.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: leads
          path: "/sobjects/Lead/{{lead_id}}"
          inputParameters:
            - name: lead_id
              in: path
          operations:
            - name: get-lead
              method: GET
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com/contacts/v1"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: contacts
          path: "/contact/email/{{email}}/profile"
          inputParameters:
            - name: email
              in: path
          operations:
            - name: enrich-contact
              method: GET
    - type: http
      namespace: gmaps
      baseUri: "https://maps.googleapis.com/maps/api"
      authentication:
        type: bearer
        token: "$secrets.google_maps_key"
      resources:
        - name: places
          path: "/place/nearbysearch/json?location={{zip_code}}&keyword={{type}}&rankby=distance"
          inputParameters:
            - name: zip_code
              in: query
            - name: type
              in: query
          operations:
            - name: find-nearest
              method: GET
    - 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 customer requests a service appointment via the Hyundai portal, looks up the dealer in Salesforce, checks technician availability in ServiceNow, and confirms the appointment via Microsoft Teams notification to both dealer and customer.

naftiko: "0.5"
info:
  label: "Dealer Service Appointment Scheduler"
  description: "When a customer requests a service appointment via the Hyundai portal, looks up the dealer in Salesforce, checks technician availability in ServiceNow, and confirms the appointment via Microsoft Teams notification to both dealer and customer."
  tags:
    - dealer-management
    - customer-service
    - salesforce
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: dealer-service
      port: 8080
      tools:
        - name: schedule-service-appointment
          description: "Given a dealer code, VIN, customer email, and requested date, check availability and schedule a service appointment."
          inputParameters:
            - name: dealer_code
              in: body
              type: string
              description: "The Hyundai dealer code."
            - name: vin
              in: body
              type: string
              description: "The vehicle VIN."
            - name: customer_email
              in: body
              type: string
              description: "The customer email address."
            - name: requested_date
              in: body
              type: string
              description: "The requested appointment date in YYYY-MM-DD format."
            - name: service_type
              in: body
              type: string
              description: "The type of service requested (e.g. oil change, battery check, recall)."
          steps:
            - name: get-dealer
              type: call
              call: "salesforce.get-dealer"
              with:
                dealer_code: "{{dealer_code}}"
            - name: check-availability
              type: call
              call: "servicenow.check-schedule"
              with:
                dealer_code: "{{dealer_code}}"
                date: "{{requested_date}}"
                service_type: "{{service_type}}"
            - name: create-appointment
              type: call
              call: "servicenow.create-appointment"
              with:
                dealer_code: "{{dealer_code}}"
                vin: "{{vin}}"
                customer_email: "{{customer_email}}"
                date: "{{check-availability.next_available_slot}}"
                service_type: "{{service_type}}"
            - name: notify-dealer
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-dealer.service_manager_email}}"
                text: "New service appointment: VIN {{vin}} for {{service_type}} on {{check-availability.next_available_slot}} at {{get-dealer.dealer_name}}. Appointment: {{create-appointment.number}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://hyundai.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: dealers
          path: "/query?q=SELECT+Name,Service_Manager_Email__c+FROM+Dealer__c+WHERE+Dealer_Code__c='{{dealer_code}}'"
          inputParameters:
            - name: dealer_code
              in: query
          operations:
            - name: get-dealer
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://hyundai.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: schedules
          path: "/table/u_service_schedule?sysparm_query=u_dealer_code={{dealer_code}}^u_date={{date}}"
          inputParameters:
            - name: dealer_code
              in: query
            - name: date
              in: query
          operations:
            - name: check-schedule
              method: GET
        - name: appointments
          path: "/table/u_service_appointment"
          operations:
            - name: create-appointment
              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

Processes dealer vehicle allocation requests, matching dealer inventory needs with available factory production slots and regional distribution priorities.

naftiko: "0.5"
info:
  label: "Dealer Vehicle Allocation Request Processor"
  description: "Processes dealer vehicle allocation requests, matching dealer inventory needs with available factory production slots and regional distribution priorities."
  tags:
    - dealer-management
    - vehicle-allocation
    - distribution
capability:
  exposes:
    - type: mcp
      namespace: dealer-allocation
      port: 8080
      tools:
        - name: process-allocation-request
          description: "Process a dealer vehicle allocation request."
          inputParameters:
            - name: dealer_id
              in: body
              type: string
              description: "The dealer identifier."
            - name: model_code
              in: body
              type: string
              description: "The vehicle model code."
            - name: quantity_requested
              in: body
              type: integer
              description: "Number of units requested."
            - name: trim_level
              in: body
              type: string
              description: "Trim level such as SE, SEL, or Limited."
          call: "allocation-api.submit-request"
          with:
            dealer: "{{dealer_id}}"
            model: "{{model_code}}"
            quantity: "{{quantity_requested}}"
            trim: "{{trim_level}}"
          outputParameters:
            - name: allocation_id
              type: string
              mapping: "$.allocation.id"
            - name: units_allocated
              type: integer
              mapping: "$.allocation.unitsAllocated"
            - name: estimated_delivery_date
              type: string
              mapping: "$.allocation.estimatedDeliveryDate"
  consumes:
    - type: http
      namespace: allocation-api
      baseUri: "https://api.hyundai.com/dealer-ops/v1"
      authentication:
        type: bearer
        token: "$secrets.hyundai_dealer_ops_token"
      resources:
        - name: allocations
          path: "/dealers/{{dealer}}/allocation-requests"
          inputParameters:
            - name: dealer
              in: path
          operations:
            - name: submit-request
              method: POST

Retrieves website traffic metrics from Google Analytics for a Hyundai dealer, syncs the data to HubSpot for marketing attribution, and posts a weekly summary to the marketing team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Dealer Website Traffic and Marketing Sync"
  description: "Retrieves website traffic metrics from Google Analytics for a Hyundai dealer, syncs the data to HubSpot for marketing attribution, and posts a weekly summary to the marketing team in Microsoft Teams."
  tags:
    - dealer-management
    - analytics
    - google-analytics
    - hubspot
    - microsoft-teams
    - marketing
capability:
  exposes:
    - type: mcp
      namespace: dealer-analytics
      port: 8080
      tools:
        - name: sync-dealer-traffic-metrics
          description: "Fetch website traffic from Google Analytics, sync to HubSpot for attribution, and post a summary to the marketing Teams channel."
          inputParameters:
            - name: property_id
              in: body
              type: string
              description: "The Google Analytics 4 property ID for the dealer website."
            - name: dealer_code
              in: body
              type: string
              description: "The Hyundai dealer code for marketing attribution."
          steps:
            - name: get-traffic
              type: call
              call: "ga4.run-report"
              with:
                property_id: "{{property_id}}"
            - name: sync-to-hubspot
              type: call
              call: "hubspot.update-company-analytics"
              with:
                dealer_code: "{{dealer_code}}"
                sessions: "{{get-traffic.sessions}}"
                page_views: "{{get-traffic.page_views}}"
                bounce_rate: "{{get-traffic.bounce_rate}}"
            - name: post-summary
              type: call
              call: "msteams.post-channel"
              with:
                channel_id: "dealer-marketing"
                text: "Dealer {{dealer_code}} website report: {{get-traffic.sessions}} sessions, {{get-traffic.page_views}} page views, {{get-traffic.bounce_rate}}% bounce rate. HubSpot synced."
  consumes:
    - type: http
      namespace: ga4
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: reports
          path: "/properties/{{property_id}}:runReport"
          inputParameters:
            - name: property_id
              in: path
          operations:
            - name: run-report
              method: POST
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com/crm/v3"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: companies
          path: "/objects/companies/{{dealer_code}}"
          inputParameters:
            - name: dealer_code
              in: path
          operations:
            - name: update-company-analytics
              method: PATCH
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/hyundai-marketing/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Searches Elasticsearch for vehicle event logs by VIN and event type. Returns matching events with timestamps, event codes, and payloads for connected car diagnostics.

naftiko: "0.5"
info:
  label: "Elasticsearch Vehicle Event Log Search"
  description: "Searches Elasticsearch for vehicle event logs by VIN and event type. Returns matching events with timestamps, event codes, and payloads for connected car diagnostics."
  tags:
    - connected-car
    - diagnostics
    - elasticsearch
    - logging
capability:
  exposes:
    - type: mcp
      namespace: vehicle-event-logs
      port: 8080
      tools:
        - name: search-vehicle-events
          description: "Search Elasticsearch for vehicle event logs by VIN and event type. Returns events with timestamps, codes, and diagnostic payloads."
          inputParameters:
            - name: vin
              in: body
              type: string
              description: "The 17-character VIN."
            - name: event_type
              in: body
              type: string
              description: "The event type to filter (e.g. dtc, ota, geofence, battery)."
          call: "elasticsearch.search-events"
          with:
            vin: "{{vin}}"
            event_type: "{{event_type}}"
          outputParameters:
            - name: total_hits
              type: number
              mapping: "$.hits.total.value"
            - name: events
              type: array
              mapping: "$.hits.hits"
  consumes:
    - type: http
      namespace: elasticsearch
      baseUri: "https://es-cluster.hyundai.com"
      authentication:
        type: basic
        username: "$secrets.es_user"
        password: "$secrets.es_password"
      resources:
        - name: vehicle-events
          path: "/vehicle-events-*/_search?q=vin:{{vin}}+AND+event_type:{{event_type}}&sort=timestamp:desc&size=100"
          inputParameters:
            - name: vin
              in: query
            - name: event_type
              in: query
          operations:
            - name: search-events
              method: GET

Coordinates engineering design reviews by pulling CAD files from SharePoint, scheduling the review meeting via Outlook, and creating action items in Jira.

naftiko: "0.5"
info:
  label: "Engineering Design Review Coordinator"
  description: "Coordinates engineering design reviews by pulling CAD files from SharePoint, scheduling the review meeting via Outlook, and creating action items in Jira."
  tags:
    - engineering
    - design-review
    - sharepoint
    - microsoft-outlook
    - jira
capability:
  exposes:
    - type: mcp
      namespace: design-review
      port: 8080
      tools:
        - name: coordinate-design-review
          description: "Coordinate an engineering design review."
          inputParameters:
            - name: part_number
              in: body
              type: string
              description: "The part number under review."
            - name: reviewers
              in: body
              type: string
              description: "Comma-separated reviewer emails."
          steps:
            - name: get-cad-files
              type: call
              call: "sharepoint.search-documents"
              with:
                query: "part:{{part_number}} filetype:step"
                site: "engineering_cad"
            - name: schedule-review
              type: call
              call: "outlook.create-event"
              with:
                subject: "Design Review: Part {{part_number}}"
                attendees: "{{reviewers}}"
                body: "CAD files: {{get-cad-files.value[0].webUrl}}"
            - name: create-action-items
              type: call
              call: "jira.create-issue"
              with:
                project: "ENG"
                issue_type: "Task"
                summary: "Design review actions: Part {{part_number}}"
                labels: "design-review"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: search
          path: "/search/query"
          operations:
            - name: search-documents
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: events
          path: "/me/events"
          operations:
            - name: create-event
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://hyundai.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

Queries the battery management system for a specific EV battery pack and returns state of health, cycle count, capacity degradation, and thermal history.

naftiko: "0.5"
info:
  label: "EV Battery Health Report"
  description: "Queries the battery management system for a specific EV battery pack and returns state of health, cycle count, capacity degradation, and thermal history."
  tags:
    - ev-battery
    - quality
    - battery-management
capability:
  exposes:
    - type: mcp
      namespace: ev-battery
      port: 8080
      tools:
        - name: get-battery-health
          description: "Retrieve battery health report for an EV battery pack by serial number. Returns state of health percentage, charge cycle count, capacity degradation rate, and max temperature recorded."
          inputParameters:
            - name: battery_serial
              in: body
              type: string
              description: "The battery pack serial number."
          call: "battery-mgmt.get-health"
          with:
            battery_serial: "{{battery_serial}}"
          outputParameters:
            - name: state_of_health
              type: number
              mapping: "$.batteryHealth.sohPercent"
            - name: cycle_count
              type: number
              mapping: "$.batteryHealth.cycleCount"
            - name: degradation_rate
              type: number
              mapping: "$.batteryHealth.degradationRate"
            - name: max_temp_celsius
              type: number
              mapping: "$.batteryHealth.maxTempCelsius"
  consumes:
    - type: http
      namespace: battery-mgmt
      baseUri: "https://bms-api.hyundai.com/v1"
      authentication:
        type: bearer
        token: "$secrets.bms_api_token"
      resources:
        - name: battery-health
          path: "/packs/{{battery_serial}}/health"
          inputParameters:
            - name: battery_serial
              in: path
          operations:
            - name: get-health
              method: GET

When a battery warranty claim is submitted, validates battery health data from the BMS API, checks warranty coverage in SAP, creates the claim in ServiceNow, and notifies the dealer and customer via Microsoft Teams.

naftiko: "0.5"
info:
  label: "EV Battery Warranty Claim Processor"
  description: "When a battery warranty claim is submitted, validates battery health data from the BMS API, checks warranty coverage in SAP, creates the claim in ServiceNow, and notifies the dealer and customer via Microsoft Teams."
  tags:
    - ev-battery
    - warranty
    - servicenow
    - sap
    - microsoft-teams
    - dealer-management
capability:
  exposes:
    - type: mcp
      namespace: warranty-claims
      port: 8080
      tools:
        - name: process-battery-warranty-claim
          description: "Given a VIN, battery serial, and dealer code, validate battery health, check SAP warranty, create a ServiceNow claim, and notify stakeholders."
          inputParameters:
            - name: vin
              in: body
              type: string
              description: "The 17-character VIN of the vehicle."
            - name: battery_serial
              in: body
              type: string
              description: "The battery pack serial number."
            - name: dealer_code
              in: body
              type: string
              description: "The submitting dealer code."
            - name: complaint_description
              in: body
              type: string
              description: "The customer complaint description."
          steps:
            - name: get-battery-health
              type: call
              call: "battery-mgmt.get-health"
              with:
                battery_serial: "{{battery_serial}}"
            - name: check-warranty
              type: call
              call: "sap.get-warranty"
              with:
                vin: "{{vin}}"
            - name: create-claim
              type: call
              call: "servicenow.create-case"
              with:
                short_description: "Battery warranty claim — VIN {{vin}} — Dealer {{dealer_code}}"
                description: "Complaint: {{complaint_description}}. Battery SOH: {{get-battery-health.soh_percent}}%. Cycles: {{get-battery-health.cycle_count}}. Warranty status: {{check-warranty.status}}. Expiry: {{check-warranty.expiry_date}}."
                category: "warranty_battery"
                priority: "2"
            - name: notify-dealer
              type: call
              call: "msteams.post-channel"
              with:
                channel_id: "dealer-warranty-ops"
                text: "Battery warranty claim filed for VIN {{vin}} at dealer {{dealer_code}}. Case: {{create-claim.number}}. Battery SOH: {{get-battery-health.soh_percent}}%. Warranty: {{check-warranty.status}}."
  consumes:
    - type: http
      namespace: battery-mgmt
      baseUri: "https://bms-api.hyundai.com/v1"
      authentication:
        type: bearer
        token: "$secrets.bms_api_token"
      resources:
        - name: battery-health
          path: "/packs/{{battery_serial}}/health"
          inputParameters:
            - name: battery_serial
              in: path
          operations:
            - name: get-health
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://hyundai-s4.sap.com/sap/opu/odata/sap/ZCS_WARRANTY_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: warranties
          path: "/A_Warranty('{{vin}}')"
          inputParameters:
            - name: vin
              in: path
          operations:
            - name: get-warranty
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://hyundai.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: cases
          path: "/table/sn_customerservice_case"
          operations:
            - name: create-case
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/hyundai-warranty/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Tracks EV charging infrastructure expansion by pulling station deployment data from the charging network, comparing against targets in Jira, and updating Snowflake analytics.

naftiko: "0.5"
info:
  label: "EV Charging Infrastructure Expansion Tracker"
  description: "Tracks EV charging infrastructure expansion by pulling station deployment data from the charging network, comparing against targets in Jira, and updating Snowflake analytics."
  tags:
    - ev
    - infrastructure
    - jira
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: charging-expansion
      port: 8080
      tools:
        - name: track-expansion
          description: "Track EV charging infrastructure expansion progress."
          inputParameters:
            - name: region
              in: body
              type: string
              description: "Deployment region."
          steps:
            - name: get-deployed-stations
              type: call
              call: "charging-network.get-stations"
              with:
                region: "{{region}}"
                status: "active"
            - name: get-deployment-targets
              type: call
              call: "jira.get-issues"
              with:
                jql: "project = EVINFRA AND region = '{{region}}' AND type = Milestone"
            - name: update-analytics
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "INSERT INTO ev_charging_expansion (region, stations_deployed, target, utilization_avg, updated_at) VALUES ('{{region}}', {{get-deployed-stations.count}}, {{get-deployment-targets.target}}, {{get-deployed-stations.avg_utilization}}, CURRENT_TIMESTAMP())"
  consumes:
    - type: http
      namespace: charging-network
      baseUri: "https://charging.hyundai.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.charging_network_token"
      resources:
        - name: stations
          path: "/stations?region={{region}}&status={{status}}"
          inputParameters:
            - name: region
              in: query
            - name: status
              in: query
          operations:
            - name: get-stations
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://hyundai.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: search
          path: "/search?jql={{jql}}"
          inputParameters:
            - name: jql
              in: query
          operations:
            - name: get-issues
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://hyundai.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST

Aggregates charging station utilization data from the Bluelink platform, generates a report in Power BI, and shares it to the EV infrastructure team via SharePoint and Microsoft Teams.

naftiko: "0.5"
info:
  label: "EV Charging Network Utilization Report"
  description: "Aggregates charging station utilization data from the Bluelink platform, generates a report in Power BI, and shares it to the EV infrastructure team via SharePoint and Microsoft Teams."
  tags:
    - ev-battery
    - charging-infrastructure
    - bluelink
    - power-bi
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: charging-analytics
      port: 8080
      tools:
        - name: generate-utilization-report
          description: "Given a region code and date range, aggregate charging data, refresh the Power BI report, upload to SharePoint, and notify the team."
          inputParameters:
            - name: region_code
              in: body
              type: string
              description: "The geographic region code for charging stations."
            - name: start_date
              in: body
              type: string
              description: "The report start date in YYYY-MM-DD format."
            - name: end_date
              in: body
              type: string
              description: "The report end date in YYYY-MM-DD format."
          steps:
            - name: get-utilization-data
              type: call
              call: "bluelink.get-charging-stats"
              with:
                region: "{{region_code}}"
                start_date: "{{start_date}}"
                end_date: "{{end_date}}"
            - name: refresh-report
              type: call
              call: "powerbi.refresh-dataset"
              with:
                dataset_id: "ev-charging-utilization"
            - name: notify-team
              type: call
              call: "msteams.post-channel"
              with:
                channel_id: "ev-infrastructure"
                text: "Charging utilization report ready for {{region_code}} ({{start_date}} to {{end_date}}). Total sessions: {{get-utilization-data.total_sessions}}. Avg utilization: {{get-utilization-data.avg_utilization_pct}}%. Peak hour: {{get-utilization-data.peak_hour}}."
  consumes:
    - type: http
      namespace: bluelink
      baseUri: "https://api.bluelink.hyundai.com/v2"
      authentication:
        type: bearer
        token: "$secrets.bluelink_api_token"
      resources:
        - name: charging-stats
          path: "/charging/stats?region={{region}}&start={{start_date}}&end={{end_date}}"
          inputParameters:
            - name: region
              in: query
            - name: start_date
              in: query
            - name: end_date
              in: query
          operations:
            - name: get-charging-stats
              method: GET
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: refresh-dataset
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/hyundai-ev/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

When an EV charging station reports a fault, logs an incident in ServiceNow, dispatches a technician via SAP Field Service, and notifies the facility manager in Microsoft Teams.

naftiko: "0.5"
info:
  label: "EV Charging Station Fault Orchestrator"
  description: "When an EV charging station reports a fault, logs an incident in ServiceNow, dispatches a technician via SAP Field Service, and notifies the facility manager in Microsoft Teams."
  tags:
    - ev-battery
    - charging-infrastructure
    - servicenow
    - sap
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: charging-ops
      port: 8080
      tools:
        - name: handle-charger-fault
          description: "Given a charging station ID and fault code, create a ServiceNow incident, dispatch a field technician via SAP, and notify the facility manager in Teams."
          inputParameters:
            - name: station_id
              in: body
              type: string
              description: "The charging station identifier."
            - name: fault_code
              in: body
              type: string
              description: "The diagnostic fault code reported by the station."
            - name: location
              in: body
              type: string
              description: "The physical location or site name of the charger."
          steps:
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Charger fault {{fault_code}} at {{location}} — Station {{station_id}}"
                category: "ev_charging"
                priority: "2"
                assigned_group: "EV_Infrastructure"
            - name: dispatch-technician
              type: call
              call: "sap-fsm.create-service-order"
              with:
                equipment_id: "{{station_id}}"
                problem_description: "Fault code {{fault_code}} at {{location}}. ServiceNow INC: {{create-incident.number}}"
                priority: "HIGH"
            - name: notify-manager
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "ev-facilities-mgr@hyundai.com"
                text: "Charger fault at {{location}} (Station {{station_id}}). Fault: {{fault_code}}. INC: {{create-incident.number}}. Field service order: {{dispatch-technician.order_id}}."
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://hyundai.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: sap-fsm
      baseUri: "https://hyundai-s4.sap.com/sap/opu/odata/sap/PM_SERVICE_ORDER_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: service-orders
          path: "/A_ServiceOrder"
          operations:
            - name: create-service-order
              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

Investigates EV range complaints by pulling vehicle telemetry from AWS IoT, checking battery diagnostics, and creating a ServiceNow quality case.

naftiko: "0.5"
info:
  label: "EV Range Complaint Investigation Pipeline"
  description: "Investigates EV range complaints by pulling vehicle telemetry from AWS IoT, checking battery diagnostics, and creating a ServiceNow quality case."
  tags:
    - ev
    - quality
    - amazon-web-services
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: ev-range-complaints
      port: 8080
      tools:
        - name: investigate-range-complaint
          description: "Investigate an EV range complaint."
          inputParameters:
            - name: vin
              in: body
              type: string
              description: "The vehicle VIN."
            - name: complaint_description
              in: body
              type: string
              description: "Customer complaint description."
          steps:
            - name: get-telemetry
              type: call
              call: "aws-iot.get-thing-shadow"
              with:
                thing_name: "vehicle_{{vin}}"
            - name: get-battery-diagnostics
              type: call
              call: "battery-mgmt.get-diagnostics"
              with:
                vin: "{{vin}}"
            - name: create-quality-case
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "EV range complaint: {{vin}}"
                category: "quality_ev_range"
                description: "Complaint: {{complaint_description}}. Battery SOH: {{get-battery-diagnostics.state_of_health}}%. Avg range: {{get-telemetry.avg_range_km}}km."
  consumes:
    - type: http
      namespace: aws-iot
      baseUri: "https://iot.us-east-1.amazonaws.com"
      authentication:
        type: bearer
        token: "$secrets.aws_iot_token"
      resources:
        - name: shadows
          path: "/things/{{thing_name}}/shadow"
          inputParameters:
            - name: thing_name
              in: path
          operations:
            - name: get-thing-shadow
              method: GET
    - type: http
      namespace: battery-mgmt
      baseUri: "https://battery.hyundai.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.battery_mgmt_token"
      resources:
        - name: diagnostics
          path: "/vehicles/{{vin}}/diagnostics"
          inputParameters:
            - name: vin
              in: path
          operations:
            - name: get-diagnostics
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://hyundai.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

Reports fleet vehicle utilization metrics for Hyundai commercial fleet customers, tracking mileage, idle time, fuel consumption, and driver assignment efficiency.

naftiko: "0.5"
info:
  label: "Fleet Management Utilization Reporter"
  description: "Reports fleet vehicle utilization metrics for Hyundai commercial fleet customers, tracking mileage, idle time, fuel consumption, and driver assignment efficiency."
  tags:
    - fleet-management
    - utilization
    - commercial
capability:
  exposes:
    - type: mcp
      namespace: fleet-utilization
      port: 8080
      tools:
        - name: get-fleet-utilization-report
          description: "Generate a fleet utilization report for a commercial customer."
          inputParameters:
            - name: fleet_account_id
              in: body
              type: string
              description: "The fleet management account identifier."
            - name: reporting_period
              in: body
              type: string
              description: "Reporting period in YYYY-MM format."
          call: "fleet-api.get-utilization"
          with:
            account: "{{fleet_account_id}}"
            period: "{{reporting_period}}"
          outputParameters:
            - name: total_vehicles
              type: integer
              mapping: "$.report.totalVehicles"
            - name: average_utilization_rate
              type: number
              mapping: "$.report.averageUtilizationRate"
            - name: total_miles_driven
              type: number
              mapping: "$.report.totalMilesDriven"
  consumes:
    - type: http
      namespace: fleet-api
      baseUri: "https://api.hyundai.com/fleet/v1"
      authentication:
        type: bearer
        token: "$secrets.hyundai_fleet_api_token"
      resources:
        - name: utilization
          path: "/accounts/{{account}}/utilization-reports"
          inputParameters:
            - name: account
              in: path
          operations:
            - name: get-utilization
              method: GET

When a fleet vehicle crosses a geofence boundary via Bluelink, logs the violation in Salesforce fleet management, creates a ServiceNow security incident, and alerts the fleet operations manager in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Fleet Telematics Geofence Violation Handler"
  description: "When a fleet vehicle crosses a geofence boundary via Bluelink, logs the violation in Salesforce fleet management, creates a ServiceNow security incident, and alerts the fleet operations manager in Microsoft Teams."
  tags:
    - connected-car
    - fleet-management
    - bluelink
    - salesforce
    - servicenow
    - microsoft-teams
    - security
capability:
  exposes:
    - type: mcp
      namespace: fleet-geofence
      port: 8080
      tools:
        - name: handle-geofence-violation
          description: "Given a VIN, geofence ID, and violation type, log the event in Salesforce, create a ServiceNow security incident, and notify fleet ops in Teams."
          inputParameters:
            - name: vin
              in: body
              type: string
              description: "The 17-character VIN of the fleet vehicle."
            - name: geofence_id
              in: body
              type: string
              description: "The geofence boundary identifier."
            - name: violation_type
              in: body
              type: string
              description: "The violation type (entry or exit)."
            - name: latitude
              in: body
              type: number
              description: "The latitude at time of violation."
            - name: longitude
              in: body
              type: number
              description: "The longitude at time of violation."
          steps:
            - name: get-vehicle-info
              type: call
              call: "bluelink.get-vehicle-info"
              with:
                vin: "{{vin}}"
            - name: log-violation
              type: call
              call: "salesforce.create-fleet-event"
              with:
                vin: "{{vin}}"
                event_type: "geofence_{{violation_type}}"
                geofence_id: "{{geofence_id}}"
                latitude: "{{latitude}}"
                longitude: "{{longitude}}"
            - name: create-security-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Geofence {{violation_type}}: VIN {{vin}} — Zone {{geofence_id}}"
                description: "Fleet vehicle {{get-vehicle-info.model}} (VIN: {{vin}}) triggered geofence {{violation_type}} at zone {{geofence_id}}. Location: {{latitude}}, {{longitude}}."
                category: "fleet_security"
                priority: "2"
                assigned_group: "Fleet_Operations"
            - name: notify-fleet-ops
              type: call
              call: "msteams.post-channel"
              with:
                channel_id: "fleet-ops-alerts"
                text: "Geofence alert: {{get-vehicle-info.model}} (VIN {{vin}}) {{violation_type}} at zone {{geofence_id}}. Location: {{latitude}}, {{longitude}}. INC: {{create-security-incident.number}}."
  consumes:
    - type: http
      namespace: bluelink
      baseUri: "https://api.bluelink.hyundai.com/v2"
      authentication:
        type: bearer
        token: "$secrets.bluelink_api_token"
      resources:
        - name: vehicles
          path: "/vehicles/{{vin}}"
          inputParameters:
            - name: vin
              in: path
          operations:
            - name: get-vehicle-info
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://hyundai.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: fleet-events
          path: "/sobjects/Fleet_Event__c"
          operations:
            - name: create-fleet-event
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://hyundai.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/hyundai-fleet/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Handles Genesis luxury brand concierge service requests including valet maintenance pickup, complimentary car washes, and courtesy vehicle scheduling.

naftiko: "0.5"
info:
  label: "Genesis Concierge Service Request Handler"
  description: "Handles Genesis luxury brand concierge service requests including valet maintenance pickup, complimentary car washes, and courtesy vehicle scheduling."
  tags:
    - genesis
    - concierge
    - luxury-services
capability:
  exposes:
    - type: mcp
      namespace: genesis-concierge
      port: 8080
      tools:
        - name: create-concierge-request
          description: "Create a Genesis concierge service request."
          inputParameters:
            - name: owner_id
              in: body
              type: string
              description: "The Genesis owner account identifier."
            - name: vehicle_vin
              in: body
              type: string
              description: "The vehicle identification number."
            - name: service_type
              in: body
              type: string
              description: "Service type such as valet-maintenance, car-wash, or courtesy-vehicle."
          call: "genesis-api.create-service-request"
          with:
            owner: "{{owner_id}}"
            vin: "{{vehicle_vin}}"
            service: "{{service_type}}"
          outputParameters:
            - name: request_id
              type: string
              mapping: "$.request.id"
            - name: scheduled_date
              type: string
              mapping: "$.request.scheduledDate"
            - name: assigned_concierge
              type: string
              mapping: "$.request.assignedConcierge"
  consumes:
    - type: http
      namespace: genesis-api
      baseUri: "https://api.hyundai.com/genesis/v1"
      authentication:
        type: bearer
        token: "$secrets.hyundai_genesis_api_token"
      resources:
        - name: concierge-requests
          path: "/owners/{{owner}}/concierge-requests"
          inputParameters:
            - name: owner
              in: path
          operations:
            - name: create-service-request
              method: POST

Retrieves open pull requests from a GitHub repository for connected car software and posts a summary to the Microsoft Teams engineering channel for review coordination.

naftiko: "0.5"
info:
  label: "GitHub Connected Car Code Review Notifier"
  description: "Retrieves open pull requests from a GitHub repository for connected car software and posts a summary to the Microsoft Teams engineering channel for review coordination."
  tags:
    - engineering
    - code-review
    - github
    - microsoft-teams
    - connected-car
capability:
  exposes:
    - type: mcp
      namespace: code-review
      port: 8080
      tools:
        - name: notify-pending-reviews
          description: "Given a GitHub repository name, fetch open PRs awaiting review and post a summary to the engineering Teams channel."
          inputParameters:
            - name: repo_name
              in: body
              type: string
              description: "The GitHub repository name (e.g. hyundai-motor/bluelink-firmware)."
          steps:
            - name: get-open-prs
              type: call
              call: "github.list-prs"
              with:
                repo_name: "{{repo_name}}"
            - name: post-summary
              type: call
              call: "msteams.post-channel"
              with:
                channel_id: "connected-car-eng"
                text: "Open PRs awaiting review in {{repo_name}}: {{get-open-prs.total_count}} PRs. Oldest: {{get-open-prs.oldest_title}} ({{get-open-prs.oldest_age_days}} days). Please review."
  consumes:
    - type: http
      namespace: github
      baseUri: "https://api.github.com/repos"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: pull-requests
          path: "/{{repo_name}}/pulls?state=open&sort=created&direction=asc"
          inputParameters:
            - name: repo_name
              in: path
          operations:
            - name: list-prs
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/hyundai-engineering/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Retrieves plant monitoring metrics from Grafana dashboards including line throughput, defect rates, and equipment utilization.

naftiko: "0.5"
info:
  label: "Grafana Plant Monitoring Dashboard"
  description: "Retrieves plant monitoring metrics from Grafana dashboards including line throughput, defect rates, and equipment utilization."
  tags:
    - manufacturing
    - monitoring
    - grafana
capability:
  exposes:
    - type: mcp
      namespace: plant-monitoring
      port: 8080
      tools:
        - name: get-plant-metrics
          description: "Get plant monitoring metrics from Grafana."
          inputParameters:
            - name: plant_code
              in: body
              type: string
              description: "The plant code."
            - name: dashboard_uid
              in: body
              type: string
              description: "The Grafana dashboard UID."
          call: "grafana.get-dashboard"
          with:
            uid: "{{dashboard_uid}}"
          outputParameters:
            - name: panels
              type: array
              mapping: "$.dashboard.panels"
  consumes:
    - type: http
      namespace: grafana
      baseUri: "https://grafana.hyundai.com/api"
      authentication:
        type: bearer
        token: "$secrets.grafana_token"
      resources:
        - name: dashboards
          path: "/dashboards/uid/{{uid}}"
          inputParameters:
            - name: uid
              in: path
          operations:
            - name: get-dashboard
              method: GET

Locates hydrogen fuel cell refueling stations for Hyundai NEXO owners, providing real-time availability, pricing, and estimated wait times at nearby stations.

naftiko: "0.5"
info:
  label: "Hydrogen Fuel Cell Station Locator"
  description: "Locates hydrogen fuel cell refueling stations for Hyundai NEXO owners, providing real-time availability, pricing, and estimated wait times at nearby stations."
  tags:
    - hydrogen
    - nexo
    - fuel-cell
capability:
  exposes:
    - type: mcp
      namespace: hydrogen-stations
      port: 8080
      tools:
        - name: find-hydrogen-stations
          description: "Find nearby hydrogen refueling stations with availability."
          inputParameters:
            - name: latitude
              in: body
              type: number
              description: "Current latitude coordinate."
            - name: longitude
              in: body
              type: number
              description: "Current longitude coordinate."
            - name: radius_miles
              in: body
              type: number
              description: "Search radius in miles."
          call: "fuel-api.find-stations"
          with:
            lat: "{{latitude}}"
            lng: "{{longitude}}"
            radius: "{{radius_miles}}"
          outputParameters:
            - name: stations
              type: array
              mapping: "$.results.stations"
            - name: nearest_station_distance
              type: number
              mapping: "$.results.nearestDistanceMiles"
            - name: nearest_station_available
              type: boolean
              mapping: "$.results.nearestStationAvailable"
  consumes:
    - type: http
      namespace: fuel-api
      baseUri: "https://api.hyundai.com/fuel-infrastructure/v1"
      authentication:
        type: bearer
        token: "$secrets.hyundai_fuel_api_token"
      resources:
        - name: stations
          path: "/hydrogen-stations"
          operations:
            - name: find-stations
              method: GET

Manages EV charging sessions for Hyundai IONIQ electric vehicles, handling charger reservation, session monitoring, payment processing, and charging history retrieval.

naftiko: "0.5"
info:
  label: "IONIQ Charging Session Manager"
  description: "Manages EV charging sessions for Hyundai IONIQ electric vehicles, handling charger reservation, session monitoring, payment processing, and charging history retrieval."
  tags:
    - ev-charging
    - ioniq
    - charging-management
capability:
  exposes:
    - type: mcp
      namespace: ioniq-charging
      port: 8080
      tools:
        - name: manage-charging-session
          description: "Start, monitor, or stop a charging session for an IONIQ vehicle."
          inputParameters:
            - name: vehicle_vin
              in: body
              type: string
              description: "The IONIQ vehicle identification number."
            - name: charger_station_id
              in: body
              type: string
              description: "The charging station identifier."
            - name: action
              in: body
              type: string
              description: "Action such as start, stop, or status."
          call: "ev-charging-api.manage-session"
          with:
            vin: "{{vehicle_vin}}"
            station: "{{charger_station_id}}"
            action: "{{action}}"
          outputParameters:
            - name: session_id
              type: string
              mapping: "$.session.id"
            - name: charge_level_percent
              type: number
              mapping: "$.session.chargeLevelPercent"
            - name: estimated_completion
              type: string
              mapping: "$.session.estimatedCompletion"
  consumes:
    - type: http
      namespace: ev-charging-api
      baseUri: "https://api.hyundai.com/ev-charging/v1"
      authentication:
        type: bearer
        token: "$secrets.hyundai_ev_charging_token"
      resources:
        - name: sessions
          path: "/vehicles/{{vin}}/charging-sessions"
          inputParameters:
            - name: vin
              in: path
          operations:
            - name: manage-session
              method: POST

Retrieves the current sprint status for a Jira board used by vehicle engineering teams. Returns sprint name, story points completed, remaining, and burndown velocity.

naftiko: "0.5"
info:
  label: "Jira Engineering Sprint Status"
  description: "Retrieves the current sprint status for a Jira board used by vehicle engineering teams. Returns sprint name, story points completed, remaining, and burndown velocity."
  tags:
    - engineering
    - project-management
    - jira
capability:
  exposes:
    - type: mcp
      namespace: engineering-sprints
      port: 8080
      tools:
        - name: get-sprint-status
          description: "Fetch the active sprint status for a Jira board by board ID. Returns sprint name, total story points, completed points, remaining points, and velocity."
          inputParameters:
            - name: board_id
              in: body
              type: string
              description: "The Jira board ID for the engineering team."
          call: "jira.get-active-sprint"
          with:
            board_id: "{{board_id}}"
          outputParameters:
            - name: sprint_name
              type: string
              mapping: "$.values[0].name"
            - name: total_points
              type: number
              mapping: "$.values[0].totalPoints"
            - name: completed_points
              type: number
              mapping: "$.values[0].completedPoints"
            - name: velocity
              type: number
              mapping: "$.values[0].velocity"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://hyundai-motor.atlassian.net/rest/agile/1.0"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: sprints
          path: "/board/{{board_id}}/sprint?state=active"
          inputParameters:
            - name: board_id
              in: path
          operations:
            - name: get-active-sprint
              method: GET

Retrieves the current sprint status and velocity for a vehicle platform development project in Jira.

naftiko: "0.5"
info:
  label: "Jira Vehicle Platform Project Status"
  description: "Retrieves the current sprint status and velocity for a vehicle platform development project in Jira."
  tags:
    - engineering
    - project
    - jira
capability:
  exposes:
    - type: mcp
      namespace: platform-projects
      port: 8080
      tools:
        - name: get-project-status
          description: "Get vehicle platform project sprint status."
          inputParameters:
            - name: board_id
              in: body
              type: string
              description: "The Jira board ID."
          call: "jira.get-active-sprint"
          with:
            board: "{{board_id}}"
          outputParameters:
            - name: sprint_name
              type: string
              mapping: "$.values[0].name"
            - name: goal
              type: string
              mapping: "$.values[0].goal"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://hyundai.atlassian.net/rest/agile/1.0"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: sprints
          path: "/board/{{board}}/sprint?state=active"
          inputParameters:
            - name: board
              in: path
          operations:
            - name: get-active-sprint
              method: GET

Queries Kubernetes cluster health for connected car microservices, checks pod status and resource utilization, and creates a ServiceNow incident if degraded services are detected.

naftiko: "0.5"
info:
  label: "Kubernetes Connected Car Microservice Health Check"
  description: "Queries Kubernetes cluster health for connected car microservices, checks pod status and resource utilization, and creates a ServiceNow incident if degraded services are detected."
  tags:
    - connected-car
    - infrastructure
    - kubernetes
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: k8s-health
      port: 8080
      tools:
        - name: check-microservice-health
          description: "Given a Kubernetes namespace, check pod status and resource usage, and escalate degraded services to ServiceNow and Teams."
          inputParameters:
            - name: namespace
              in: body
              type: string
              description: "The Kubernetes namespace (e.g. bluelink-prod)."
            - name: cluster_name
              in: body
              type: string
              description: "The Kubernetes cluster name."
          steps:
            - name: get-pod-status
              type: call
              call: "k8s.list-pods"
              with:
                namespace: "{{namespace}}"
                cluster: "{{cluster_name}}"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "K8s degraded pods in {{namespace}} on {{cluster_name}}"
                description: "Cluster: {{cluster_name}}. Namespace: {{namespace}}. Total pods: {{get-pod-status.total_pods}}. Unhealthy: {{get-pod-status.unhealthy_count}}. Restarting: {{get-pod-status.restarting_count}}."
                category: "infrastructure"
                priority: "2"
                assigned_group: "Connected_Car_SRE"
            - name: notify-sre
              type: call
              call: "msteams.post-channel"
              with:
                channel_id: "connected-car-sre"
                text: "K8s health alert: {{get-pod-status.unhealthy_count}} unhealthy pods in {{namespace}} on {{cluster_name}}. INC: {{create-incident.number}}."
  consumes:
    - type: http
      namespace: k8s
      baseUri: "https://k8s-api.hyundai.com"
      authentication:
        type: bearer
        token: "$secrets.k8s_token"
      resources:
        - name: pods
          path: "/api/v1/namespaces/{{namespace}}/pods"
          inputParameters:
            - name: namespace
              in: path
          operations:
            - name: list-pods
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://hyundai.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/hyundai-sre/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Queries Grafana for manufacturing KPI metrics, compares against target thresholds, and if OEE or first-pass yield drops below target, creates a Jira improvement task and alerts the plant manager in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Manufacturing KPI Threshold Alerter"
  description: "Queries Grafana for manufacturing KPI metrics, compares against target thresholds, and if OEE or first-pass yield drops below target, creates a Jira improvement task and alerts the plant manager in Microsoft Teams."
  tags:
    - manufacturing
    - monitoring
    - grafana
    - kpi
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: mfg-kpi
      port: 8080
      tools:
        - name: alert-kpi-threshold
          description: "Fetch manufacturing KPIs from Grafana and escalate if OEE or yield falls below target thresholds."
          inputParameters:
            - name: plant_code
              in: body
              type: string
              description: "The manufacturing plant code."
            - name: time_range
              in: body
              type: string
              description: "The time range for the query (e.g. 24h, 7d, 30d)."
            - name: oee_target
              in: body
              type: number
              description: "The target OEE percentage."
          steps:
            - name: get-kpis
              type: call
              call: "grafana.query-kpis"
              with:
                plant_code: "{{plant_code}}"
                time_range: "{{time_range}}"
            - name: create-improvement-task
              type: call
              call: "jira.create-issue"
              with:
                project_key: "MFG"
                summary: "KPI alert: {{plant_code}} OEE {{get-kpis.oee}}% — Target {{oee_target}}%"
                description: "Plant {{plant_code}} KPIs over {{time_range}}: OEE {{get-kpis.oee}}% (target {{oee_target}}%). Throughput: {{get-kpis.throughput}}. Scrap rate: {{get-kpis.scrap_rate}}%. First-pass yield: {{get-kpis.first_pass_yield}}%."
                issue_type: "Task"
                priority: "High"
            - name: notify-plant-manager
              type: call
              call: "msteams.post-channel"
              with:
                channel_id: "plant-ops-kpi"
                text: "KPI alert: Plant {{plant_code}} OEE at {{get-kpis.oee}}% (target {{oee_target}}%). Scrap: {{get-kpis.scrap_rate}}%. FPY: {{get-kpis.first_pass_yield}}%. Jira: {{create-improvement-task.key}}"
  consumes:
    - type: http
      namespace: grafana
      baseUri: "https://grafana.hyundai.com/api"
      authentication:
        type: bearer
        token: "$secrets.grafana_token"
      resources:
        - name: dashboard-query
          path: "/ds/query"
          operations:
            - name: query-kpis
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://hyundai-motor.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/hyundai-manufacturing/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Schedules robot predictive maintenance by pulling vibration sensor data from the SCADA system, creating a work order in SAP PM, and alerting maintenance via Slack.

naftiko: "0.5"
info:
  label: "Manufacturing Robot Predictive Maintenance"
  description: "Schedules robot predictive maintenance by pulling vibration sensor data from the SCADA system, creating a work order in SAP PM, and alerting maintenance via Slack."
  tags:
    - manufacturing
    - predictive-maintenance
    - sap
    - slack
capability:
  exposes:
    - type: mcp
      namespace: robot-maintenance
      port: 8080
      tools:
        - name: schedule-robot-maintenance
          description: "Schedule predictive maintenance for a manufacturing robot."
          inputParameters:
            - name: robot_id
              in: body
              type: string
              description: "The robot asset ID."
            - name: plant_code
              in: body
              type: string
              description: "The plant code."
          steps:
            - name: get-sensor-data
              type: call
              call: "scada.get-robot-health"
              with:
                robot: "{{robot_id}}"
            - name: create-work-order
              type: call
              call: "sap-pm.create-order"
              with:
                equipment: "{{robot_id}}"
                plant: "{{plant_code}}"
                type: "predictive"
                description: "Vibration: {{get-sensor-data.vibration_rms}}mm/s. Temp: {{get-sensor-data.motor_temp}}C."
            - name: alert-maintenance
              type: call
              call: "slack.post-message"
              with:
                channel: "plant-{{plant_code}}-maintenance"
                text: "Predictive maintenance: Robot {{robot_id}}. Vibration trending high ({{get-sensor-data.vibration_rms}}mm/s). WO: {{create-work-order.order_number}}."
  consumes:
    - type: http
      namespace: scada
      baseUri: "https://scada.hyundai.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.scada_token"
      resources:
        - name: robots
          path: "/robots/{{robot}}/health"
          inputParameters:
            - name: robot
              in: path
          operations:
            - name: get-robot-health
              method: GET
    - type: http
      namespace: sap-pm
      baseUri: "https://hyundai-s4.sap.com/sap/opu/odata/sap/ZPM_WORKORDER_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: orders
          path: "/WorkOrderSet"
          operations:
            - name: create-order
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves completed simulation results from a MATLAB server, uploads the report to SharePoint, and posts a summary to the vehicle dynamics engineering channel in Microsoft Teams.

naftiko: "0.5"
info:
  label: "MATLAB Simulation Results Publisher"
  description: "Retrieves completed simulation results from a MATLAB server, uploads the report to SharePoint, and posts a summary to the vehicle dynamics engineering channel in Microsoft Teams."
  tags:
    - engineering
    - simulation
    - matlab
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: simulation-results
      port: 8080
      tools:
        - name: publish-simulation-results
          description: "Given a simulation job ID, retrieve results from MATLAB, upload to SharePoint, and notify the engineering team in Teams."
          inputParameters:
            - name: job_id
              in: body
              type: string
              description: "The MATLAB simulation job identifier."
            - name: simulation_type
              in: body
              type: string
              description: "The type of simulation (e.g. crash, aero, thermal, NVH)."
          steps:
            - name: get-results
              type: call
              call: "matlab.get-job-results"
              with:
                job_id: "{{job_id}}"
            - name: upload-report
              type: call
              call: "sharepoint.upload-file"
              with:
                site_id: "engineering_simulations"
                file_path: "Results/{{simulation_type}}/{{job_id}}_report.json"
                content: "{{get-results.report_data}}"
            - name: notify-team
              type: call
              call: "msteams.post-channel"
              with:
                channel_id: "vehicle-dynamics"
                text: "Simulation complete: {{simulation_type}} job {{job_id}}. Status: {{get-results.status}}. Key metric: {{get-results.primary_metric_value}} {{get-results.primary_metric_unit}}. Report: {{upload-report.url}}"
  consumes:
    - type: http
      namespace: matlab
      baseUri: "https://matlab-server.hyundai.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.matlab_token"
      resources:
        - name: jobs
          path: "/jobs/{{job_id}}/results"
          inputParameters:
            - name: job_id
              in: path
          operations:
            - name: get-job-results
              method: GET
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{file_path}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: upload-file
              method: PUT
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/hyundai-engineering/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Calculates Hyundai Motor Finance lease payment options including money factor, residual values, and monthly payments based on vehicle MSRP, term, and mileage allowance.

naftiko: "0.5"
info:
  label: "Motor Finance Lease Calculator"
  description: "Calculates Hyundai Motor Finance lease payment options including money factor, residual values, and monthly payments based on vehicle MSRP, term, and mileage allowance."
  tags:
    - motor-finance
    - leasing
    - payment-calculator
capability:
  exposes:
    - type: mcp
      namespace: lease-calculator
      port: 8080
      tools:
        - name: calculate-lease-payment
          description: "Calculate lease payment options for a Hyundai vehicle."
          inputParameters:
            - name: vehicle_msrp
              in: body
              type: number
              description: "The vehicle MSRP in USD."
            - name: lease_term_months
              in: body
              type: integer
              description: "Lease term in months such as 24, 36, or 48."
            - name: annual_mileage
              in: body
              type: integer
              description: "Annual mileage allowance."
            - name: down_payment
              in: body
              type: number
              description: "Down payment amount in USD."
          call: "finance-api.calculate-lease"
          with:
            msrp: "{{vehicle_msrp}}"
            term: "{{lease_term_months}}"
            mileage: "{{annual_mileage}}"
            down: "{{down_payment}}"
          outputParameters:
            - name: monthly_payment
              type: number
              mapping: "$.lease.monthlyPayment"
            - name: residual_value
              type: number
              mapping: "$.lease.residualValue"
            - name: total_cost
              type: number
              mapping: "$.lease.totalCost"
  consumes:
    - type: http
      namespace: finance-api
      baseUri: "https://api.hyundai.com/motor-finance/v1"
      authentication:
        type: bearer
        token: "$secrets.hyundai_motor_finance_token"
      resources:
        - name: lease-calculations
          path: "/lease-calculations"
          operations:
            - name: calculate-lease
              method: POST

On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder for documents, and sends a Microsoft Teams welcome message.

naftiko: "0.5"
info:
  label: "New Hire Onboarding Orchestrator"
  description: "On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder for documents, and sends a Microsoft Teams welcome message."
  tags:
    - hr
    - onboarding
    - workday
    - servicenow
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: hr-onboarding
      port: 8080
      tools:
        - name: trigger-onboarding
          description: "Given a Workday employee ID and start date, orchestrate onboarding across ServiceNow, SharePoint, and Microsoft Teams."
          inputParameters:
            - name: workday_employee_id
              in: body
              type: string
              description: "The Workday worker ID for the new hire."
            - name: start_date
              in: body
              type: string
              description: "The employee start date in YYYY-MM-DD format."
            - name: department
              in: body
              type: string
              description: "The department the new hire is joining."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{workday_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}} in {{department}}."
            - name: provision-folder
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "hr_onboarding_site"
                folder_path: "OnboardingDocs/{{get-employee.full_name}}_{{start_date}}"
            - name: send-welcome
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-employee.work_email}}"
                text: "Welcome to Hyundai Motor, {{get-employee.first_name}}! Your IT onboarding ticket is {{open-ticket.number}}. Documents are ready at {{provision-folder.url}}."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1/hyundai"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://hyundai.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: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{folder_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: create-folder
              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

Validates new model launch readiness by checking production line setup in SAP, verifying dealer training in the LMS, and alerting marketing via Microsoft Teams.

naftiko: "0.5"
info:
  label: "New Model Launch Readiness Orchestrator"
  description: "Validates new model launch readiness by checking production line setup in SAP, verifying dealer training in the LMS, and alerting marketing via Microsoft Teams."
  tags:
    - product-launch
    - manufacturing
    - sap
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: model-launch
      port: 8080
      tools:
        - name: check-launch-readiness
          description: "Check new vehicle model launch readiness."
          inputParameters:
            - name: model_code
              in: body
              type: string
              description: "The vehicle model code."
            - name: launch_date
              in: body
              type: string
              description: "Planned launch date."
          steps:
            - name: check-production
              type: call
              call: "sap.get-production-readiness"
              with:
                model: "{{model_code}}"
            - name: check-dealer-training
              type: call
              call: "lms.get-completion-report"
              with:
                course: "new_model_{{model_code}}"
            - name: notify-marketing
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "product-launches"
                text: "Launch readiness for {{model_code}} ({{launch_date}}): Production={{check-production.status}}, Dealer training={{check-dealer-training.completion_pct}}% complete."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://hyundai-s4.sap.com/sap/opu/odata/sap/ZPP_LAUNCH_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: readiness
          path: "/LaunchReadinessSet('{{model}}')"
          inputParameters:
            - name: model
              in: path
          operations:
            - name: get-production-readiness
              method: GET
    - type: http
      namespace: lms
      baseUri: "https://lms.hyundai.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.lms_token"
      resources:
        - name: reports
          path: "/courses/{{course}}/completion"
          inputParameters:
            - name: course
              in: path
          operations:
            - name: get-completion-report
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Retrieves material master data from Oracle Cloud ERP by material number. Returns description, unit of measure, material group, and plant-specific data.

naftiko: "0.5"
info:
  label: "Oracle Cloud ERP Material Master Lookup"
  description: "Retrieves material master data from Oracle Cloud ERP by material number. Returns description, unit of measure, material group, and plant-specific data."
  tags:
    - erp
    - supply-chain
    - oracle-cloud
    - materials
capability:
  exposes:
    - type: mcp
      namespace: material-master
      port: 8080
      tools:
        - name: get-material
          description: "Look up material master data in Oracle Cloud ERP by item number. Returns description, UOM, material group, and lead time."
          inputParameters:
            - name: item_number
              in: body
              type: string
              description: "The Oracle item number."
          call: "oracle.get-item"
          with:
            item_number: "{{item_number}}"
          outputParameters:
            - name: description
              type: string
              mapping: "$.Description"
            - name: uom
              type: string
              mapping: "$.PrimaryUOMCode"
            - name: material_group
              type: string
              mapping: "$.ItemCatalogGroupDescription"
            - name: lead_time_days
              type: number
              mapping: "$.FullLeadTime"
  consumes:
    - type: http
      namespace: oracle
      baseUri: "https://hyundai-erp.oraclecloud.com/fscmRestApi/resources/v2"
      authentication:
        type: basic
        username: "$secrets.oracle_user"
        password: "$secrets.oracle_password"
      resources:
        - name: items
          path: "/inventoryItems/{{item_number}}"
          inputParameters:
            - name: item_number
              in: path
          operations:
            - name: get-item
              method: GET

Retrieves vehicle manufacturing cost breakdown from Oracle Cloud ERP by model and plant, returning material, labor, and overhead costs.

naftiko: "0.5"
info:
  label: "Oracle Cloud Vehicle Cost Analysis"
  description: "Retrieves vehicle manufacturing cost breakdown from Oracle Cloud ERP by model and plant, returning material, labor, and overhead costs."
  tags:
    - finance
    - manufacturing
    - oracle-cloud
capability:
  exposes:
    - type: mcp
      namespace: vehicle-costs
      port: 8080
      tools:
        - name: get-vehicle-cost
          description: "Get manufacturing cost breakdown for a vehicle model."
          inputParameters:
            - name: model_code
              in: body
              type: string
              description: "The vehicle model code."
            - name: plant_code
              in: body
              type: string
              description: "The plant code."
          call: "oracle-erp.get-cost"
          with:
            model: "{{model_code}}"
            plant: "{{plant_code}}"
          outputParameters:
            - name: material_cost
              type: number
              mapping: "$.cost.material"
            - name: labor_cost
              type: number
              mapping: "$.cost.labor"
            - name: overhead_cost
              type: number
              mapping: "$.cost.overhead"
  consumes:
    - type: http
      namespace: oracle-erp
      baseUri: "https://hyundai-erp.oraclecloud.com/fscmRestApi/resources/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_cloud_token"
      resources:
        - name: costs
          path: "/productCosts?q=Model={{model}};Plant={{plant}}"
          inputParameters:
            - name: model
              in: query
            - name: plant
              in: query
          operations:
            - name: get-cost
              method: GET

Retrieves complete service history for Hyundai vehicles, aggregating dealer service records, recall completion status, and maintenance schedule compliance.

naftiko: "0.5"
info:
  label: "Owner Service History Retriever"
  description: "Retrieves complete service history for Hyundai vehicles, aggregating dealer service records, recall completion status, and maintenance schedule compliance."
  tags:
    - service-history
    - maintenance
    - owner-portal
capability:
  exposes:
    - type: mcp
      namespace: service-history
      port: 8080
      tools:
        - name: get-service-history
          description: "Retrieve the full service history for a vehicle."
          inputParameters:
            - name: vehicle_vin
              in: body
              type: string
              description: "The vehicle identification number."
            - name: owner_id
              in: body
              type: string
              description: "The vehicle owner account identifier."
          call: "service-api.get-history"
          with:
            vin: "{{vehicle_vin}}"
            owner: "{{owner_id}}"
          outputParameters:
            - name: service_records
              type: array
              mapping: "$.history.serviceRecords"
            - name: open_recalls
              type: array
              mapping: "$.history.openRecalls"
            - name: next_service_due
              type: string
              mapping: "$.history.nextServiceDue"
  consumes:
    - type: http
      namespace: service-api
      baseUri: "https://api.hyundai.com/service/v1"
      authentication:
        type: bearer
        token: "$secrets.hyundai_service_api_token"
      resources:
        - name: history
          path: "/vehicles/{{vin}}/service-history"
          inputParameters:
            - name: vin
              in: path
          operations:
            - name: get-history
              method: GET

Retrieves the status and assigned responder for a PagerDuty incident affecting the connected car platform services.

naftiko: "0.5"
info:
  label: "PagerDuty Connected Car Platform Incident"
  description: "Retrieves the status and assigned responder for a PagerDuty incident affecting the connected car platform services."
  tags:
    - connected-car
    - incident-management
    - pagerduty
capability:
  exposes:
    - type: mcp
      namespace: connected-car-incidents
      port: 8080
      tools:
        - name: get-incident
          description: "Look up a connected car platform PagerDuty incident."
          inputParameters:
            - name: incident_id
              in: body
              type: string
              description: "The PagerDuty incident ID."
          call: "pagerduty.get-incident"
          with:
            id: "{{incident_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.incident.status"
            - name: service
              type: string
              mapping: "$.incident.service.summary"
            - name: responder
              type: string
              mapping: "$.incident.assignments[0].assignee.summary"
  consumes:
    - type: http
      namespace: pagerduty
      baseUri: "https://api.pagerduty.com"
      authentication:
        type: bearer
        token: "$secrets.pagerduty_token"
      resources:
        - name: incidents
          path: "/incidents/{{id}}"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-incident
              method: GET

When the computer vision system detects a paint defect, retrieves the defect image from Azure Blob Storage, logs the defect in ServiceNow, updates the vehicle record in SAP, and alerts the paint shop supervisor in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Paint Shop Quality Vision Inspection Reporter"
  description: "When the computer vision system detects a paint defect, retrieves the defect image from Azure Blob Storage, logs the defect in ServiceNow, updates the vehicle record in SAP, and alerts the paint shop supervisor in Microsoft Teams."
  tags:
    - manufacturing
    - quality
    - computer-vision
    - microsoft-azure
    - servicenow
    - sap
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: paint-quality
      port: 8080
      tools:
        - name: report-paint-defect
          description: "Given a VIN, defect type, and image reference, retrieve the defect image, log in ServiceNow, update SAP, and notify the supervisor."
          inputParameters:
            - name: vin
              in: body
              type: string
              description: "The VIN of the vehicle with the paint defect."
            - name: defect_type
              in: body
              type: string
              description: "The type of paint defect (e.g. orange peel, sag, crater, inclusion)."
            - name: image_blob_id
              in: body
              type: string
              description: "The Azure Blob Storage reference for the defect image."
            - name: line_id
              in: body
              type: string
              description: "The paint line identifier."
          steps:
            - name: get-defect-image
              type: call
              call: "azure-blob.get-image"
              with:
                container: "paint-defects"
                blob_id: "{{image_blob_id}}"
            - name: log-defect
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Paint defect: {{defect_type}} — VIN {{vin}} — Line {{line_id}}"
                description: "Paint defect detected by vision system. Type: {{defect_type}}. VIN: {{vin}}. Line: {{line_id}}. Image: {{get-defect-image.url}}."
                category: "paint_quality"
                priority: "3"
                assigned_group: "Paint_Shop_Quality"
            - name: update-vehicle-record
              type: call
              call: "sap.update-vehicle-status"
              with:
                vin: "{{vin}}"
                quality_hold: "true"
                hold_reason: "Paint defect: {{defect_type}}"
            - name: notify-supervisor
              type: call
              call: "msteams.post-channel"
              with:
                channel_id: "paint-shop-quality"
                text: "Paint defect detected: {{defect_type}} on VIN {{vin}}, Line {{line_id}}. Vehicle placed on quality hold. INC: {{log-defect.number}}. Image: {{get-defect-image.url}}"
  consumes:
    - type: http
      namespace: azure-blob
      baseUri: "https://hyundaimfg.blob.core.windows.net"
      authentication:
        type: bearer
        token: "$secrets.azure_storage_token"
      resources:
        - name: blobs
          path: "/{{container}}/{{blob_id}}"
          inputParameters:
            - name: container
              in: path
            - name: blob_id
              in: path
          operations:
            - name: get-image
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://hyundai.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: sap
      baseUri: "https://hyundai-s4.sap.com/sap/opu/odata/sap/PP_PROD_ORDER_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: vehicle-status
          path: "/A_VehicleQualityStatus('{{vin}}')"
          inputParameters:
            - name: vin
              in: path
          operations:
            - name: update-vehicle-status
              method: PATCH
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/hyundai-paint-shop/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Tracks online orders for genuine Hyundai parts and accessories, providing real-time shipment status, dealer pickup availability, and installation appointment scheduling.

naftiko: "0.5"
info:
  label: "Parts Accessories Online Order Tracker"
  description: "Tracks online orders for genuine Hyundai parts and accessories, providing real-time shipment status, dealer pickup availability, and installation appointment scheduling."
  tags:
    - parts-accessories
    - e-commerce
    - order-tracking
capability:
  exposes:
    - type: mcp
      namespace: parts-orders
      port: 8080
      tools:
        - name: track-parts-order
          description: "Track the status of a parts and accessories online order."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The parts order identifier."
            - name: customer_id
              in: body
              type: string
              description: "The customer account identifier."
          call: "parts-api.track-order"
          with:
            order: "{{order_id}}"
            customer: "{{customer_id}}"
          outputParameters:
            - name: order_status
              type: string
              mapping: "$.order.status"
            - name: shipment_tracking
              type: string
              mapping: "$.order.shipmentTracking"
            - name: estimated_delivery
              type: string
              mapping: "$.order.estimatedDelivery"
  consumes:
    - type: http
      namespace: parts-api
      baseUri: "https://api.hyundai.com/parts/v1"
      authentication:
        type: bearer
        token: "$secrets.hyundai_parts_api_token"
      resources:
        - name: orders
          path: "/orders/{{order}}"
          inputParameters:
            - name: order
              in: path
          operations:
            - name: track-order
              method: GET

When a dealer's parts inventory falls below a minimum threshold in Salesforce, creates a SAP purchase requisition and notifies the parts manager via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Parts Reorder Automation"
  description: "When a dealer's parts inventory falls below a minimum threshold in Salesforce, creates a SAP purchase requisition and notifies the parts manager via Microsoft Teams."
  tags:
    - supply-chain
    - dealer-management
    - salesforce
    - sap
    - microsoft-teams
    - inventory
capability:
  exposes:
    - type: mcp
      namespace: parts-reorder
      port: 8080
      tools:
        - name: reorder-parts
          description: "Given a dealer code and part number, check current inventory in Salesforce, create a SAP purchase requisition, and notify the parts manager."
          inputParameters:
            - name: dealer_code
              in: body
              type: string
              description: "The Hyundai dealer code."
            - name: part_number
              in: body
              type: string
              description: "The Hyundai part number."
            - name: reorder_quantity
              in: body
              type: number
              description: "The quantity to reorder."
          steps:
            - name: check-inventory
              type: call
              call: "salesforce.get-parts-inventory"
              with:
                dealer_code: "{{dealer_code}}"
                part_number: "{{part_number}}"
            - name: create-requisition
              type: call
              call: "sap.create-purchase-req"
              with:
                material_number: "{{part_number}}"
                quantity: "{{reorder_quantity}}"
                plant: "{{check-inventory.supply_plant}}"
                delivery_date: "{{check-inventory.next_delivery_date}}"
            - name: notify-parts-manager
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{check-inventory.parts_manager_email}}"
                text: "Parts reorder: Part {{part_number}} for dealer {{dealer_code}}. Current stock: {{check-inventory.current_qty}}. Reorder qty: {{reorder_quantity}}. SAP PR: {{create-requisition.requisition_number}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://hyundai.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: parts-inventory
          path: "/query?q=SELECT+Current_Qty__c,Supply_Plant__c,Parts_Manager_Email__c+FROM+Parts_Inventory__c+WHERE+Dealer_Code__c='{{dealer_code}}'+AND+Part_Number__c='{{part_number}}'"
          inputParameters:
            - name: dealer_code
              in: query
            - name: part_number
              in: query
          operations:
            - name: get-parts-inventory
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://hyundai-s4.sap.com/sap/opu/odata/sap/MM_PUR_REQ_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: purchase-requisitions
          path: "/A_PurchaseRequisition"
          operations:
            - name: create-purchase-req
              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

Queries Datadog for energy consumption metrics of a manufacturing plant, compares against SAP cost center budgets, and creates a Jira sustainability task if usage exceeds threshold.

naftiko: "0.5"
info:
  label: "Plant Energy Consumption Monitor"
  description: "Queries Datadog for energy consumption metrics of a manufacturing plant, compares against SAP cost center budgets, and creates a Jira sustainability task if usage exceeds threshold."
  tags:
    - manufacturing
    - sustainability
    - datadog
    - sap
    - jira
    - energy
capability:
  exposes:
    - type: mcp
      namespace: energy-monitoring
      port: 8080
      tools:
        - name: monitor-plant-energy
          description: "Given a plant tag, check energy consumption in Datadog against SAP budget, and create a Jira task if the threshold is exceeded."
          inputParameters:
            - name: plant_tag
              in: body
              type: string
              description: "The Datadog tag for the plant."
            - name: budget_cost_center
              in: body
              type: string
              description: "The SAP cost center for energy budget lookup."
            - name: threshold_pct
              in: body
              type: number
              description: "The percentage threshold that triggers an alert."
          steps:
            - name: get-energy-metrics
              type: call
              call: "datadog.query-energy"
              with:
                plant_tag: "{{plant_tag}}"
            - name: get-budget
              type: call
              call: "sap.get-cost-center"
              with:
                cost_center: "{{budget_cost_center}}"
            - name: create-sustainability-task
              type: call
              call: "jira.create-issue"
              with:
                project_key: "SUSTAIN"
                summary: "Energy usage alert: {{plant_tag}} at {{get-energy-metrics.usage_pct}}% of monthly allocation"
                description: "Plant {{plant_tag}} energy consumption: {{get-energy-metrics.kwh_consumed}} kWh. Budget: {{get-budget.energy_budget_kwh}} kWh. Usage: {{get-energy-metrics.usage_pct}}%. Threshold: {{threshold_pct}}%."
                issue_type: "Task"
                priority: "Medium"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      inputParameters:
        - name: DD-APPLICATION-KEY
          in: header
          value: "$secrets.datadog_app_key"
      resources:
        - name: energy-metrics
          path: "/query?query=sum:energy.consumption.kwh{{{plant_tag}}}&from=-30d"
          inputParameters:
            - name: plant_tag
              in: query
          operations:
            - name: query-energy
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://hyundai-s4.sap.com/sap/opu/odata/sap/CO_COST_CENTER_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: cost-centers
          path: "/A_CostCenter('{{cost_center}}')"
          inputParameters:
            - name: cost_center
              in: path
          operations:
            - name: get-cost-center
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://hyundai-motor.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

Reports plant environmental emissions by pulling sensor data from the SCADA system, comparing against permits in SAP EHS, and uploading to the regulatory reporting portal.

naftiko: "0.5"
info:
  label: "Plant Environmental Emissions Reporter"
  description: "Reports plant environmental emissions by pulling sensor data from the SCADA system, comparing against permits in SAP EHS, and uploading to the regulatory reporting portal."
  tags:
    - sustainability
    - compliance
    - sap
capability:
  exposes:
    - type: mcp
      namespace: emissions-reporting
      port: 8080
      tools:
        - name: report-emissions
          description: "Generate and submit plant emissions report."
          inputParameters:
            - name: plant_code
              in: body
              type: string
              description: "The plant code."
            - name: reporting_period
              in: body
              type: string
              description: "Period in YYYY-Q format."
          steps:
            - name: get-emissions-data
              type: call
              call: "scada.get-emissions"
              with:
                plant: "{{plant_code}}"
                period: "{{reporting_period}}"
            - name: get-permit-limits
              type: call
              call: "sap-ehs.get-permits"
              with:
                plant: "{{plant_code}}"
            - name: submit-report
              type: call
              call: "regulatory-portal.submit-emissions"
              with:
                plant: "{{plant_code}}"
                period: "{{reporting_period}}"
                co2_tons: "{{get-emissions-data.co2}}"
                nox_kg: "{{get-emissions-data.nox}}"
                permit_ref: "{{get-permit-limits.permit_number}}"
  consumes:
    - type: http
      namespace: scada
      baseUri: "https://scada.hyundai.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.scada_token"
      resources:
        - name: emissions
          path: "/plants/{{plant}}/emissions?period={{period}}"
          inputParameters:
            - name: plant
              in: path
            - name: period
              in: query
          operations:
            - name: get-emissions
              method: GET
    - type: http
      namespace: sap-ehs
      baseUri: "https://hyundai-s4.sap.com/sap/opu/odata/sap/ZEH_PERMIT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: permits
          path: "/PermitSet?$filter=Plant eq '{{plant}}'"
          inputParameters:
            - name: plant
              in: query
          operations:
            - name: get-permits
              method: GET
    - type: http
      namespace: regulatory-portal
      baseUri: "https://regulatory.hyundai.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.regulatory_token"
      resources:
        - name: emissions
          path: "/emissions-reports"
          operations:
            - name: submit-emissions
              method: POST

Reports plant safety near-misses by creating a ServiceNow incident, notifying EHS via Microsoft Teams, and logging the event in Snowflake for trend analysis.

naftiko: "0.5"
info:
  label: "Plant Safety Near-Miss Reporter"
  description: "Reports plant safety near-misses by creating a ServiceNow incident, notifying EHS via Microsoft Teams, and logging the event in Snowflake for trend analysis."
  tags:
    - safety
    - manufacturing
    - servicenow
    - microsoft-teams
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: safety-near-miss
      port: 8080
      tools:
        - name: report-near-miss
          description: "Report a safety near-miss event."
          inputParameters:
            - name: plant_code
              in: body
              type: string
              description: "The plant code."
            - name: location
              in: body
              type: string
              description: "Location within plant."
            - name: description
              in: body
              type: string
              description: "Near-miss description."
          steps:
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Near-miss: {{plant_code}} - {{location}}"
                category: "safety_near_miss"
                description: "{{description}}"
            - name: notify-ehs
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "plant-{{plant_code}}-ehs"
                text: "NEAR-MISS REPORT: {{location}} at plant {{plant_code}}. {{description}}. Incident: {{create-incident.number}}."
            - name: log-for-analysis
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "INSERT INTO safety_near_misses (plant_code, location, description, incident_number, reported_at) VALUES ('{{plant_code}}', '{{location}}', '{{description}}', '{{create-incident.number}}', CURRENT_TIMESTAMP())"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://hyundai.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://hyundai.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST

Generates end-of-shift production reports by pulling MES data, comparing against targets in SAP, and distributing via Microsoft Outlook to plant management.

naftiko: "0.5"
info:
  label: "Plant Shift Production Report Generator"
  description: "Generates end-of-shift production reports by pulling MES data, comparing against targets in SAP, and distributing via Microsoft Outlook to plant management."
  tags:
    - manufacturing
    - reporting
    - sap
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: shift-report
      port: 8080
      tools:
        - name: generate-shift-report
          description: "Generate a shift production report."
          inputParameters:
            - name: plant_code
              in: body
              type: string
              description: "The plant code."
            - name: shift
              in: body
              type: string
              description: "Shift (day, evening, night)."
            - name: date
              in: body
              type: string
              description: "Date in YYYY-MM-DD."
          steps:
            - name: get-production-data
              type: call
              call: "mes.get-shift-output"
              with:
                plant: "{{plant_code}}"
                shift: "{{shift}}"
                date: "{{date}}"
            - name: get-targets
              type: call
              call: "sap.get-production-plan"
              with:
                plant: "{{plant_code}}"
                date: "{{date}}"
            - name: send-report
              type: call
              call: "outlook.send-email"
              with:
                to: "plant_mgmt_{{plant_code}}@hyundai.com"
                subject: "Shift Report: Plant {{plant_code}} - {{shift}} shift {{date}}"
                body: "Units produced: {{get-production-data.units_completed}}. Target: {{get-targets.planned_units}}. Efficiency: {{get-production-data.efficiency_pct}}%. Quality: {{get-production-data.first_pass_yield}}%."
  consumes:
    - type: http
      namespace: mes
      baseUri: "https://mes.hyundai.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.mes_token"
      resources:
        - name: output
          path: "/plants/{{plant}}/shifts/{{shift}}/output?date={{date}}"
          inputParameters:
            - name: plant
              in: path
            - name: shift
              in: path
            - name: date
              in: query
          operations:
            - name: get-shift-output
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://hyundai-s4.sap.com/sap/opu/odata/sap/ZPP_PLAN_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: plans
          path: "/ProductionPlanSet(Plant='{{plant}}',Date='{{date}}')"
          inputParameters:
            - name: plant
              in: path
            - name: date
              in: path
          operations:
            - name: get-production-plan
              method: GET
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Triggers a refresh of the EV market analysis Power BI dataset to update market share, charging infrastructure, and sales trend dashboards.

naftiko: "0.5"
info:
  label: "Power BI EV Market Dashboard Refresh"
  description: "Triggers a refresh of the EV market analysis Power BI dataset to update market share, charging infrastructure, and sales trend dashboards."
  tags:
    - analytics
    - ev
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: ev-dashboard
      port: 8080
      tools:
        - name: refresh-ev-dashboard
          description: "Trigger EV market dashboard refresh."
          inputParameters:
            - name: dataset_id
              in: body
              type: string
              description: "The Power BI dataset ID."
          call: "powerbi.refresh-dataset"
          with:
            id: "{{dataset_id}}"
          outputParameters:
            - name: refresh_id
              type: string
              mapping: "$.requestId"
  consumes:
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{id}}/refreshes"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: refresh-dataset
              method: POST

Triggers a dataset refresh on a Power BI sales dashboard, exports the report to SharePoint, and notifies the regional sales team in Microsoft Teams that fresh data is available.

naftiko: "0.5"
info:
  label: "Power BI Sales Dashboard Refresh and Distribution"
  description: "Triggers a dataset refresh on a Power BI sales dashboard, exports the report to SharePoint, and notifies the regional sales team in Microsoft Teams that fresh data is available."
  tags:
    - sales
    - analytics
    - power-bi
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: sales-analytics
      port: 8080
      tools:
        - name: refresh-and-distribute-dashboard
          description: "Trigger a Power BI dataset refresh, export the report to SharePoint, and notify the sales team in Teams."
          inputParameters:
            - name: dataset_id
              in: body
              type: string
              description: "The Power BI dataset ID for the sales dashboard."
            - name: region
              in: body
              type: string
              description: "The sales region name for notification targeting."
          steps:
            - name: refresh-dataset
              type: call
              call: "powerbi.refresh-dataset"
              with:
                dataset_id: "{{dataset_id}}"
            - name: export-report
              type: call
              call: "sharepoint.upload-file"
              with:
                site_id: "sales_reports"
                file_path: "Dashboards/{{region}}/sales_report_latest.pdf"
                content: "{{refresh-dataset.report_export}}"
            - name: notify-sales-team
              type: call
              call: "msteams.post-channel"
              with:
                channel_id: "regional-sales"
                text: "Sales dashboard refreshed for {{region}}. Dataset: {{dataset_id}}. Report available at: {{export-report.url}}"
  consumes:
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: refresh-dataset
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{file_path}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: upload-file
              method: PUT
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/hyundai-sales/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

At shift end, collects production metrics from SAP, quality incident data from ServiceNow, and publishes a shift handover report to SharePoint and Microsoft Teams.

naftiko: "0.5"
info:
  label: "Production Shift Handover Report Generator"
  description: "At shift end, collects production metrics from SAP, quality incident data from ServiceNow, and publishes a shift handover report to SharePoint and Microsoft Teams."
  tags:
    - manufacturing
    - production
    - sap
    - servicenow
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: shift-handover
      port: 8080
      tools:
        - name: generate-shift-handover
          description: "Given a plant code, line ID, and shift identifier, gather production and quality data and publish a handover report to SharePoint and Teams."
          inputParameters:
            - name: plant_code
              in: body
              type: string
              description: "The manufacturing plant code."
            - name: line_id
              in: body
              type: string
              description: "The assembly line identifier."
            - name: shift_id
              in: body
              type: string
              description: "The shift identifier (e.g. A, B, C)."
          steps:
            - name: get-production-data
              type: call
              call: "sap.get-shift-output"
              with:
                plant_code: "{{plant_code}}"
                line_id: "{{line_id}}"
                shift_id: "{{shift_id}}"
            - name: get-quality-incidents
              type: call
              call: "servicenow.get-shift-incidents"
              with:
                plant_code: "{{plant_code}}"
                shift_id: "{{shift_id}}"
            - name: upload-report
              type: call
              call: "sharepoint.upload-file"
              with:
                site_id: "plant_ops_site"
                file_path: "ShiftReports/{{plant_code}}/{{line_id}}_shift_{{shift_id}}_report.json"
                content: "Units produced: {{get-production-data.units_produced}}. Target: {{get-production-data.target}}. Quality incidents: {{get-quality-incidents.count}}."
            - name: notify-incoming-shift
              type: call
              call: "msteams.post-channel"
              with:
                channel_id: "shift-handover"
                text: "Shift {{shift_id}} handover — {{plant_code}} Line {{line_id}}: {{get-production-data.units_produced}}/{{get-production-data.target}} units. {{get-quality-incidents.count}} quality incidents. Report: {{upload-report.url}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://hyundai-s4.sap.com/sap/opu/odata/sap/PP_PROD_ORDER_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: shift-output
          path: "/A_ProductionOrderConfirmation?$filter=Plant eq '{{plant_code}}' and WorkCenter eq '{{line_id}}' and Shift eq '{{shift_id}}'"
          inputParameters:
            - name: plant_code
              in: query
            - name: line_id
              in: query
            - name: shift_id
              in: query
          operations:
            - name: get-shift-output
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://hyundai.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident?sysparm_query=u_plant_code={{plant_code}}^u_shift={{shift_id}}^sys_created_onONToday@javascript:gs.beginningOfToday()@javascript:gs.endOfToday()"
          inputParameters:
            - name: plant_code
              in: query
            - name: shift_id
              in: query
          operations:
            - name: get-shift-incidents
              method: GET
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{file_path}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: upload-file
              method: PUT
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/hyundai-plant-ops/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Queries Prometheus for EV battery thermal monitoring metrics across a fleet segment. Returns max temperature, average state of charge, and anomaly count for proactive fleet battery management.

naftiko: "0.5"
info:
  label: "Prometheus EV Battery Monitoring Alert"
  description: "Queries Prometheus for EV battery thermal monitoring metrics across a fleet segment. Returns max temperature, average state of charge, and anomaly count for proactive fleet battery management."
  tags:
    - ev-battery
    - monitoring
    - prometheus
    - fleet-management
capability:
  exposes:
    - type: mcp
      namespace: battery-monitoring
      port: 8080
      tools:
        - name: get-fleet-battery-metrics
          description: "Query Prometheus for fleet-wide EV battery metrics by model and region. Returns max temperature, average SOC, and thermal anomaly count."
          inputParameters:
            - name: model
              in: body
              type: string
              description: "The vehicle model (e.g. Ioniq5, Ioniq6)."
            - name: region
              in: body
              type: string
              description: "The geographic region code."
          call: "prometheus.query-battery"
          with:
            model: "{{model}}"
            region: "{{region}}"
          outputParameters:
            - name: max_temp_celsius
              type: number
              mapping: "$.data.result[0].value[1]"
            - name: avg_soc_pct
              type: number
              mapping: "$.data.result[1].value[1]"
            - name: anomaly_count
              type: number
              mapping: "$.data.result[2].value[1]"
  consumes:
    - type: http
      namespace: prometheus
      baseUri: "https://prometheus.hyundai.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.prometheus_token"
      resources:
        - name: query
          path: "/query?query=battery_metrics{model='{{model}}',region='{{region}}'}"
          inputParameters:
            - name: model
              in: query
            - name: region
              in: query
          operations:
            - name: query-battery
              method: GET

When a quality defect exceeds a threshold PPM rate, retrieves defect analytics from Power BI, creates a Jira engineering task, attaches root cause data from Confluence, and notifies the engineering lead in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Quality Defect to Engineering Feedback Loop"
  description: "When a quality defect exceeds a threshold PPM rate, retrieves defect analytics from Power BI, creates a Jira engineering task, attaches root cause data from Confluence, and notifies the engineering lead in Microsoft Teams."
  tags:
    - quality
    - engineering
    - power-bi
    - jira
    - confluence
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: quality-engineering
      port: 8080
      tools:
        - name: escalate-defect-to-engineering
          description: "Given a defect code, affected model, and current PPM rate, pull analytics from Power BI, create a Jira task, and notify the engineering lead in Teams."
          inputParameters:
            - name: defect_code
              in: body
              type: string
              description: "The quality defect code."
            - name: affected_model
              in: body
              type: string
              description: "The vehicle model affected."
            - name: current_ppm
              in: body
              type: number
              description: "The current defect rate in parts per million."
          steps:
            - name: get-defect-analytics
              type: call
              call: "powerbi.get-defect-report"
              with:
                defect_code: "{{defect_code}}"
                model: "{{affected_model}}"
            - name: search-root-cause
              type: call
              call: "confluence.search-docs"
              with:
                query: "{{defect_code}} root cause {{affected_model}}"
            - name: create-eng-task
              type: call
              call: "jira.create-issue"
              with:
                project_key: "VENG"
                summary: "Quality escalation: {{defect_code}} on {{affected_model}} — {{current_ppm}} PPM"
                description: "Defect {{defect_code}} on {{affected_model}} has reached {{current_ppm}} PPM. Trend: {{get-defect-analytics.trend}}. Related docs: {{search-root-cause.top_result_url}}."
                issue_type: "Bug"
                priority: "High"
            - name: notify-eng-lead
              type: call
              call: "msteams.post-channel"
              with:
                channel_id: "vehicle-engineering"
                text: "Quality escalation: Defect {{defect_code}} on {{affected_model}} at {{current_ppm}} PPM. Jira: {{create-eng-task.key}}. Trend: {{get-defect-analytics.trend}}."
  consumes:
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: reports
          path: "/datasets/quality-defects/query"
          operations:
            - name: get-defect-report
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://hyundai-motor.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: search
          path: "/content/search?cql=text~'{{query}}'"
          inputParameters:
            - name: query
              in: query
          operations:
            - name: search-docs
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://hyundai-motor.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/hyundai-engineering/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Prepares regulatory submission packages by gathering documents from SharePoint, creating a compliance task in ServiceNow, uploading to the regulatory portal via Box, and notifying the legal team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Regulatory Document Submission Coordinator"
  description: "Prepares regulatory submission packages by gathering documents from SharePoint, creating a compliance task in ServiceNow, uploading to the regulatory portal via Box, and notifying the legal team in Microsoft Teams."
  tags:
    - compliance
    - regulatory
    - sharepoint
    - servicenow
    - box
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: regulatory-submissions
      port: 8080
      tools:
        - name: prepare-regulatory-submission
          description: "Given a regulation ID and submission deadline, gather documents from SharePoint, create a compliance task, upload to Box, and notify the legal team."
          inputParameters:
            - name: regulation_id
              in: body
              type: string
              description: "The regulatory requirement identifier."
            - name: submission_deadline
              in: body
              type: string
              description: "The submission deadline in YYYY-MM-DD format."
            - name: market
              in: body
              type: string
              description: "The target market (e.g. US, EU, KR)."
          steps:
            - name: get-documents
              type: call
              call: "sharepoint.get-folder-contents"
              with:
                site_id: "regulatory_docs"
                folder_path: "Submissions/{{regulation_id}}/{{market}}"
            - name: create-compliance-task
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Regulatory submission: {{regulation_id}} — {{market}} — Due {{submission_deadline}}"
                description: "Prepare and submit regulatory package for {{regulation_id}} in {{market}} market. Documents: {{get-documents.file_count}} files. Deadline: {{submission_deadline}}."
                assigned_group: "Regulatory_Affairs"
                category: "regulatory_submission"
            - name: upload-to-portal
              type: call
              call: "box.upload-folder"
              with:
                folder_id: "regulatory_portal_{{market}}"
                source_files: "{{get-documents.file_urls}}"
            - name: notify-legal
              type: call
              call: "msteams.post-channel"
              with:
                channel_id: "legal-regulatory"
                text: "Regulatory submission prepared: {{regulation_id}} for {{market}}. Deadline: {{submission_deadline}}. {{get-documents.file_count}} documents uploaded. Task: {{create-compliance-task.number}}."
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{folder_path}}:/children"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: get-folder-contents
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://hyundai.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/task"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: box
      baseUri: "https://api.box.com/2.0"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: files
          path: "/files/content"
          operations:
            - name: upload-folder
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/hyundai-legal/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Orchestrates Hyundai roadside assistance dispatch, coordinating tow truck assignment, mobile mechanic availability, and real-time ETA updates for stranded vehicle owners.

naftiko: "0.5"
info:
  label: "Roadside Assistance Dispatch Orchestrator"
  description: "Orchestrates Hyundai roadside assistance dispatch, coordinating tow truck assignment, mobile mechanic availability, and real-time ETA updates for stranded vehicle owners."
  tags:
    - roadside-assistance
    - dispatch
    - customer-service
capability:
  exposes:
    - type: mcp
      namespace: roadside-dispatch
      port: 8080
      tools:
        - name: dispatch-roadside-assistance
          description: "Dispatch roadside assistance to a stranded vehicle."
          inputParameters:
            - name: vehicle_vin
              in: body
              type: string
              description: "The vehicle identification number."
            - name: owner_id
              in: body
              type: string
              description: "The vehicle owner account identifier."
            - name: issue_type
              in: body
              type: string
              description: "Issue type such as flat-tire, dead-battery, lockout, or tow."
            - name: location_lat
              in: body
              type: number
              description: "Vehicle latitude coordinate."
            - name: location_lng
              in: body
              type: number
              description: "Vehicle longitude coordinate."
          call: "roadside-api.dispatch-assistance"
          with:
            vin: "{{vehicle_vin}}"
            owner: "{{owner_id}}"
            issue: "{{issue_type}}"
            lat: "{{location_lat}}"
            lng: "{{location_lng}}"
          outputParameters:
            - name: dispatch_id
              type: string
              mapping: "$.dispatch.id"
            - name: estimated_arrival
              type: string
              mapping: "$.dispatch.estimatedArrival"
            - name: provider_name
              type: string
              mapping: "$.dispatch.providerName"
  consumes:
    - type: http
      namespace: roadside-api
      baseUri: "https://api.hyundai.com/roadside/v1"
      authentication:
        type: bearer
        token: "$secrets.hyundai_roadside_api_token"
      resources:
        - name: dispatches
          path: "/dispatches"
          operations:
            - name: dispatch-assistance
              method: POST

Initiates a plant safety compliance audit by retrieving the checklist from SharePoint, creating inspection tasks in ServiceNow for each category, and scheduling the audit review meeting in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Safety Compliance Audit Orchestrator"
  description: "Initiates a plant safety compliance audit by retrieving the checklist from SharePoint, creating inspection tasks in ServiceNow for each category, and scheduling the audit review meeting in Microsoft Teams."
  tags:
    - safety
    - compliance
    - sharepoint
    - servicenow
    - microsoft-teams
    - manufacturing
capability:
  exposes:
    - type: mcp
      namespace: safety-audit
      port: 8080
      tools:
        - name: initiate-safety-audit
          description: "Given a plant code and audit type, retrieve the checklist from SharePoint, create ServiceNow inspection tasks, and schedule a Teams review meeting."
          inputParameters:
            - name: plant_code
              in: body
              type: string
              description: "The manufacturing plant code."
            - name: audit_type
              in: body
              type: string
              description: "The type of safety audit (e.g. fire, chemical, ergonomic, electrical)."
            - name: auditor_email
              in: body
              type: string
              description: "The lead auditor email address."
          steps:
            - name: get-checklist
              type: call
              call: "sharepoint.get-checklist"
              with:
                site_id: "safety_compliance_site"
                file_path: "Checklists/{{audit_type}}_checklist.json"
            - name: create-inspection-tasks
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Safety audit: {{audit_type}} — Plant {{plant_code}}"
                description: "{{audit_type}} safety audit for plant {{plant_code}}. Checklist items: {{get-checklist.item_count}}. Lead auditor: {{auditor_email}}."
                assigned_group: "Safety_Compliance"
                category: "safety_audit"
            - name: schedule-review
              type: call
              call: "msteams.create-meeting"
              with:
                organizer_upn: "{{auditor_email}}"
                subject: "Safety audit review: {{audit_type}} — Plant {{plant_code}}"
                body: "Review findings from {{audit_type}} safety audit at plant {{plant_code}}. Task: {{create-inspection-tasks.number}}."
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{file_path}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: get-checklist
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://hyundai.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/task"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: events
          path: "/users/{{organizer_upn}}/events"
          inputParameters:
            - name: organizer_upn
              in: path
          operations:
            - name: create-meeting
              method: POST

Retrieves dealer account details from Salesforce including dealer tier, territory, and current year sales target.

naftiko: "0.5"
info:
  label: "Salesforce Dealer Account Lookup"
  description: "Retrieves dealer account details from Salesforce including dealer tier, territory, and current year sales target."
  tags:
    - sales
    - dealer
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: dealer-accounts
      port: 8080
      tools:
        - name: get-dealer-account
          description: "Look up a dealer account by ID."
          inputParameters:
            - name: dealer_id
              in: body
              type: string
              description: "The Salesforce dealer account ID."
          call: "salesforce.get-account"
          with:
            id: "{{dealer_id}}"
          outputParameters:
            - name: dealer_name
              type: string
              mapping: "$.Name"
            - name: tier
              type: string
              mapping: "$.Dealer_Tier__c"
            - name: territory
              type: string
              mapping: "$.Territory__c"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://hyundai.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account/{{id}}"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-account
              method: GET

Retrieves submitted travel expense reports from SAP Concur, validates cost center against Workday, and creates a ServiceNow finance review task when policy exceptions are found.

naftiko: "0.5"
info:
  label: "SAP Concur Travel Expense Validator"
  description: "Retrieves submitted travel expense reports from SAP Concur, validates cost center against Workday, and creates a ServiceNow finance review task when policy exceptions are found."
  tags:
    - finance
    - expense
    - sap-concur
    - workday
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: finance-expense
      port: 8080
      tools:
        - name: validate-travel-expense
          description: "Given a Concur expense report ID and employee ID, fetch report details, validate cost center from Workday, and flag policy violations in ServiceNow."
          inputParameters:
            - name: expense_report_id
              in: body
              type: string
              description: "The SAP Concur expense report ID."
            - name: employee_id
              in: body
              type: string
              description: "The Workday employee ID of the submitter."
          steps:
            - name: get-expense-report
              type: call
              call: "concur.get-expense-report"
              with:
                report_id: "{{expense_report_id}}"
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{employee_id}}"
            - name: open-review-task
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Travel expense review: {{get-expense-report.report_name}} — {{get-employee.full_name}}"
                description: "Report {{expense_report_id}} total: {{get-expense-report.total_amount}} {{get-expense-report.currency}}. Cost center: {{get-employee.cost_center}}."
                assigned_group: "Finance_Audit"
                category: "expense_review"
  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: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1/hyundai"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://hyundai.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/task"
          operations:
            - name: create-task
              method: POST

Runs a production analytics query against SAP HANA for vehicle output, defect rates, and cycle time metrics for a given plant and date range.

naftiko: "0.5"
info:
  label: "SAP HANA Production Analytics Query"
  description: "Runs a production analytics query against SAP HANA for vehicle output, defect rates, and cycle time metrics for a given plant and date range."
  tags:
    - manufacturing
    - analytics
    - sap-hana
    - production
capability:
  exposes:
    - type: mcp
      namespace: production-analytics
      port: 8080
      tools:
        - name: query-production-analytics
          description: "Run a production analytics query in SAP HANA for a plant and date range. Returns total output, defect rate, average cycle time, and line efficiency."
          inputParameters:
            - name: plant_code
              in: body
              type: string
              description: "The manufacturing plant code."
            - name: start_date
              in: body
              type: string
              description: "The start date in YYYY-MM-DD format."
            - name: end_date
              in: body
              type: string
              description: "The end date in YYYY-MM-DD format."
          call: "sap-hana.run-query"
          with:
            plant_code: "{{plant_code}}"
            start_date: "{{start_date}}"
            end_date: "{{end_date}}"
          outputParameters:
            - name: total_output
              type: number
              mapping: "$.results[0].total_output"
            - name: defect_rate_pct
              type: number
              mapping: "$.results[0].defect_rate"
            - name: avg_cycle_time_sec
              type: number
              mapping: "$.results[0].avg_cycle_time"
            - name: line_efficiency_pct
              type: number
              mapping: "$.results[0].line_efficiency"
  consumes:
    - type: http
      namespace: sap-hana
      baseUri: "https://hyundai-hana.sap.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.sap_hana_user"
        password: "$secrets.sap_hana_password"
      resources:
        - name: analytics
          path: "/analytics/production?plant={{plant_code}}&from={{start_date}}&to={{end_date}}"
          inputParameters:
            - name: plant_code
              in: query
            - name: start_date
              in: query
            - name: end_date
              in: query
          operations:
            - name: run-query
              method: GET

Looks up a SAP S/4HANA purchase order for parts or materials and returns header status, supplier name, total value, and delivery schedule.

naftiko: "0.5"
info:
  label: "SAP Purchase Order Status"
  description: "Looks up a SAP S/4HANA purchase order for parts or materials and returns header status, supplier name, total value, and delivery schedule."
  tags:
    - procurement
    - erp
    - sap
    - sap-s4hana
    - supply-chain
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: get-purchase-order
          description: "Look up a SAP S/4HANA purchase order by PO number. Returns status, supplier, total value, currency, and scheduled delivery date."
          inputParameters:
            - name: po_number
              in: body
              type: string
              description: "The SAP purchase order number (10-digit)."
          call: "sap.get-po"
          with:
            po_number: "{{po_number}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.d.OverallStatus"
            - name: supplier
              type: string
              mapping: "$.d.Supplier.CompanyName"
            - name: total_value
              type: string
              mapping: "$.d.TotalAmount"
            - name: currency
              type: string
              mapping: "$.d.TransactionCurrency"
            - name: delivery_date
              type: string
              mapping: "$.d.DeliveryDate"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://hyundai-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
        - name: sap-client
          in: header
          value: "100"
      resources:
        - name: purchase-orders
          path: "/A_PurchaseOrder('{{po_number}}')"
          inputParameters:
            - name: po_number
              in: path
          operations:
            - name: get-po
              method: GET

Retrieves the bill of materials for a vehicle model from SAP, returning component list, quantities, and supplier assignments.

naftiko: "0.5"
info:
  label: "SAP Vehicle BOM Lookup"
  description: "Retrieves the bill of materials for a vehicle model from SAP, returning component list, quantities, and supplier assignments."
  tags:
    - manufacturing
    - bom
    - sap
capability:
  exposes:
    - type: mcp
      namespace: vehicle-bom
      port: 8080
      tools:
        - name: get-vehicle-bom
          description: "Look up vehicle bill of materials by model code."
          inputParameters:
            - name: model_code
              in: body
              type: string
              description: "The vehicle model code."
          call: "sap.get-bom"
          with:
            material: "{{model_code}}"
          outputParameters:
            - name: components
              type: array
              mapping: "$.d.results"
            - name: total_parts
              type: integer
              mapping: "$.d.TotalComponents"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://hyundai-s4.sap.com/sap/opu/odata/sap/ZPP_BOM_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: boms
          path: "/BOMSet('{{material}}')/Components"
          inputParameters:
            - name: material
              in: path
          operations:
            - name: get-bom
              method: GET

Sends templated communications to dealer contacts via SendGrid for product updates, incentive announcements, and training notifications.

naftiko: "0.5"
info:
  label: "SendGrid Dealer Communication Sender"
  description: "Sends templated communications to dealer contacts via SendGrid for product updates, incentive announcements, and training notifications."
  tags:
    - dealer
    - communications
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: dealer-comms
      port: 8080
      tools:
        - name: send-dealer-email
          description: "Send a templated email to a dealer contact."
          inputParameters:
            - name: dealer_email
              in: body
              type: string
              description: "Dealer contact email."
            - name: template_id
              in: body
              type: string
              description: "SendGrid template ID."
            - name: subject
              in: body
              type: string
              description: "Email subject."
          call: "sendgrid.send-email"
          with:
            to: "{{dealer_email}}"
            template_id: "{{template_id}}"
            subject: "{{subject}}"
          outputParameters:
            - name: message_id
              type: string
              mapping: "$.messageId"
  consumes:
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: mail
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST

Retrieves the status of a plant IT incident from ServiceNow by incident number.

naftiko: "0.5"
info:
  label: "ServiceNow Plant IT Incident Lookup"
  description: "Retrieves the status of a plant IT incident from ServiceNow by incident number."
  tags:
    - it
    - manufacturing
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: plant-it-incidents
      port: 8080
      tools:
        - name: get-plant-incident
          description: "Look up a plant IT incident in ServiceNow."
          inputParameters:
            - name: incident_number
              in: body
              type: string
              description: "The ServiceNow incident number."
          call: "servicenow.get-incident"
          with:
            number: "{{incident_number}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.result.state"
            - name: assigned_to
              type: string
              mapping: "$.result.assigned_to.display_value"
            - name: priority
              type: string
              mapping: "$.result.priority"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://hyundai.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident?sysparm_query=number={{number}}"
          inputParameters:
            - name: number
              in: query
          operations:
            - name: get-incident
              method: GET

Retrieves a quality incident from ServiceNow by incident number. Returns severity, affected vehicle model, root cause category, and current resolution status.

naftiko: "0.5"
info:
  label: "ServiceNow Quality Incident Lookup"
  description: "Retrieves a quality incident from ServiceNow by incident number. Returns severity, affected vehicle model, root cause category, and current resolution status."
  tags:
    - quality
    - incident-management
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: quality-incidents
      port: 8080
      tools:
        - name: get-quality-incident
          description: "Look up a quality incident in ServiceNow by incident number. Returns severity, affected model, root cause, and resolution status."
          inputParameters:
            - name: incident_number
              in: body
              type: string
              description: "The ServiceNow incident number (e.g. INC0012345)."
          call: "servicenow.get-incident"
          with:
            incident_number: "{{incident_number}}"
          outputParameters:
            - name: severity
              type: string
              mapping: "$.result.severity"
            - name: affected_model
              type: string
              mapping: "$.result.u_vehicle_model"
            - name: root_cause
              type: string
              mapping: "$.result.u_root_cause_category"
            - name: resolution_status
              type: string
              mapping: "$.result.state"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://hyundai.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident?sysparm_query=number={{incident_number}}"
          inputParameters:
            - name: incident_number
              in: query
          operations:
            - name: get-incident
              method: GET

Retrieves engineering specification documents from SharePoint by part number, returning document URL, version, and approval status.

naftiko: "0.5"
info:
  label: "SharePoint Engineering Spec Retrieval"
  description: "Retrieves engineering specification documents from SharePoint by part number, returning document URL, version, and approval status."
  tags:
    - engineering
    - documents
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: engineering-specs
      port: 8080
      tools:
        - name: get-spec-document
          description: "Retrieve an engineering specification from SharePoint."
          inputParameters:
            - name: part_number
              in: body
              type: string
              description: "The part number."
          call: "sharepoint.search-documents"
          with:
            query: "part_number:{{part_number}} filetype:pdf"
            site: "engineering_specs"
          outputParameters:
            - name: document_url
              type: string
              mapping: "$.value[0].webUrl"
            - name: version
              type: string
              mapping: "$.value[0].version"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: search
          path: "/search/query"
          operations:
            - name: search-documents
              method: POST

Sends notifications to engineering team Slack channels for build alerts, quality issues, and production updates.

naftiko: "0.5"
info:
  label: "Slack Engineering Team Notifier"
  description: "Sends notifications to engineering team Slack channels for build alerts, quality issues, and production updates."
  tags:
    - communications
    - engineering
    - slack
capability:
  exposes:
    - type: mcp
      namespace: engineering-notifications
      port: 8080
      tools:
        - name: send-engineering-notification
          description: "Send a notification to an engineering Slack channel."
          inputParameters:
            - name: team
              in: body
              type: string
              description: "The engineering team slug."
            - name: message
              in: body
              type: string
              description: "The notification message."
          call: "slack.post-message"
          with:
            channel: "eng-{{team}}"
            text: "{{message}}"
          outputParameters:
            - name: message_ts
              type: string
              mapping: "$.ts"
  consumes:
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Queries Snowflake for vehicle sales analytics by model, region, and date range, returning units sold, average transaction price, and market share.

naftiko: "0.5"
info:
  label: "Snowflake Vehicle Sales Analytics Query"
  description: "Queries Snowflake for vehicle sales analytics by model, region, and date range, returning units sold, average transaction price, and market share."
  tags:
    - analytics
    - sales
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: sales-analytics
      port: 8080
      tools:
        - name: query-vehicle-sales
          description: "Query vehicle sales analytics from Snowflake."
          inputParameters:
            - name: model
              in: body
              type: string
              description: "Vehicle model name."
            - name: region
              in: body
              type: string
              description: "Sales region."
          call: "snowflake.execute-query"
          with:
            statement: "SELECT units_sold, avg_transaction_price, market_share_pct FROM vehicle_sales WHERE model = '{{model}}' AND region = '{{region}}'"
          outputParameters:
            - name: results
              type: array
              mapping: "$.data"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://hyundai.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST

Searches Splunk for error logs from assembly line PLCs and SCADA systems over a time window. Returns matching log entries with timestamps and severity levels.

naftiko: "0.5"
info:
  label: "Splunk Assembly Line Error Log Search"
  description: "Searches Splunk for error logs from assembly line PLCs and SCADA systems over a time window. Returns matching log entries with timestamps and severity levels."
  tags:
    - manufacturing
    - monitoring
    - splunk
    - quality
capability:
  exposes:
    - type: mcp
      namespace: mfg-logging
      port: 8080
      tools:
        - name: search-assembly-errors
          description: "Search Splunk for assembly line error logs by plant code and time range. Returns log entries with timestamps, severity, and error descriptions."
          inputParameters:
            - name: plant_code
              in: body
              type: string
              description: "The manufacturing plant code (e.g. ULSAN1)."
            - name: hours_back
              in: body
              type: number
              description: "Number of hours to search back from now."
          call: "splunk.search-logs"
          with:
            plant_code: "{{plant_code}}"
            hours_back: "{{hours_back}}"
          outputParameters:
            - name: results
              type: array
              mapping: "$.results"
            - name: total_count
              type: number
              mapping: "$.total_count"
  consumes:
    - type: http
      namespace: splunk
      baseUri: "https://splunk.hyundai.com:8089/services"
      authentication:
        type: bearer
        token: "$secrets.splunk_token"
      resources:
        - name: search-jobs
          path: "/search/jobs/export?search=search+index%3Dassembly+plant%3D{{plant_code}}+severity%3DERROR+earliest%3D-{{hours_back}}h&output_mode=json"
          inputParameters:
            - name: plant_code
              in: query
            - name: hours_back
              in: query
          operations:
            - name: search-logs
              method: GET

Escalates supplier part shortages by checking SAP inventory, contacting the supplier via the procurement portal, and alerting production planning via Slack.

naftiko: "0.5"
info:
  label: "Supplier Part Shortage Escalation Orchestrator"
  description: "Escalates supplier part shortages by checking SAP inventory, contacting the supplier via the procurement portal, and alerting production planning via Slack."
  tags:
    - supply-chain
    - procurement
    - sap
    - slack
capability:
  exposes:
    - type: mcp
      namespace: part-shortage
      port: 8080
      tools:
        - name: escalate-shortage
          description: "Escalate a supplier part shortage."
          inputParameters:
            - name: part_number
              in: body
              type: string
              description: "The part number."
            - name: plant_code
              in: body
              type: string
              description: "The plant code."
          steps:
            - name: check-inventory
              type: call
              call: "sap.get-stock"
              with:
                material: "{{part_number}}"
                plant: "{{plant_code}}"
            - name: contact-supplier
              type: call
              call: "procurement-portal.create-urgent-request"
              with:
                part: "{{part_number}}"
                current_stock: "{{check-inventory.available_quantity}}"
                days_of_supply: "{{check-inventory.days_of_supply}}"
            - name: alert-planning
              type: call
              call: "slack.post-message"
              with:
                channel: "plant-{{plant_code}}-planning"
                text: "PART SHORTAGE: {{part_number}} at plant {{plant_code}}. Stock: {{check-inventory.available_quantity}} ({{check-inventory.days_of_supply}} days). Supplier notified: {{contact-supplier.request_id}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://hyundai-s4.sap.com/sap/opu/odata/sap/ZMM_STOCK_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: stock
          path: "/StockSet(Material='{{material}}',Plant='{{plant}}')"
          inputParameters:
            - name: material
              in: path
            - name: plant
              in: path
          operations:
            - name: get-stock
              method: GET
    - type: http
      namespace: procurement-portal
      baseUri: "https://procurement.hyundai.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.procurement_token"
      resources:
        - name: requests
          path: "/urgent-requests"
          operations:
            - name: create-urgent-request
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves supplier performance metrics from SAP Ariba, and if the composite score falls below threshold, creates a Jira improvement task and notifies the procurement team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Supplier Performance Review Escalation"
  description: "Retrieves supplier performance metrics from SAP Ariba, and if the composite score falls below threshold, creates a Jira improvement task and notifies the procurement team in Microsoft Teams."
  tags:
    - supply-chain
    - supplier-management
    - sap-ariba
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: supplier-performance
      port: 8080
      tools:
        - name: review-supplier-performance
          description: "Fetch supplier scorecard from Ariba and escalate underperforming suppliers with a Jira task and Teams notification."
          inputParameters:
            - name: supplier_id
              in: body
              type: string
              description: "The SAP Ariba supplier identifier."
            - name: min_score_threshold
              in: body
              type: number
              description: "The minimum acceptable composite score."
          steps:
            - name: get-scorecard
              type: call
              call: "ariba.get-supplier-scorecard"
              with:
                supplier_id: "{{supplier_id}}"
            - name: create-improvement-task
              type: call
              call: "jira.create-issue"
              with:
                project_key: "SCM"
                summary: "Supplier improvement: {{supplier_id}} — Score {{get-scorecard.composite_score}} below {{min_score_threshold}}"
                description: "Supplier {{supplier_id}} scorecard: OTD {{get-scorecard.on_time_delivery_pct}}%, Defect PPM {{get-scorecard.defect_ppm}}, Cost Variance {{get-scorecard.cost_variance_pct}}%. Composite: {{get-scorecard.composite_score}}."
                issue_type: "Task"
                priority: "High"
            - name: notify-procurement
              type: call
              call: "msteams.post-channel"
              with:
                channel_id: "supplier-management"
                text: "Supplier performance alert: {{supplier_id}} scored {{get-scorecard.composite_score}} (threshold: {{min_score_threshold}}). OTD: {{get-scorecard.on_time_delivery_pct}}%. Defect PPM: {{get-scorecard.defect_ppm}}. Jira: {{create-improvement-task.key}}"
  consumes:
    - type: http
      namespace: ariba
      baseUri: "https://openapi.ariba.com/api/supplier-management/v1"
      authentication:
        type: bearer
        token: "$secrets.ariba_token"
      resources:
        - name: scorecards
          path: "/suppliers/{{supplier_id}}/scorecard"
          inputParameters:
            - name: supplier_id
              in: path
          operations:
            - name: get-supplier-scorecard
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://hyundai-motor.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/hyundai-procurement/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

When a supplier delivery delay is detected in SAP, retrieves the affected purchase orders, identifies impacted production schedules, and notifies the supply chain team via Microsoft Teams and creates a Jira issue for tracking.

naftiko: "0.5"
info:
  label: "Supply Chain Disruption Alerter"
  description: "When a supplier delivery delay is detected in SAP, retrieves the affected purchase orders, identifies impacted production schedules, and notifies the supply chain team via Microsoft Teams and creates a Jira issue for tracking."
  tags:
    - supply-chain
    - sap
    - sap-s4hana
    - jira
    - microsoft-teams
    - production
capability:
  exposes:
    - type: mcp
      namespace: supply-chain-alerts
      port: 8080
      tools:
        - name: alert-supply-disruption
          description: "Given a supplier ID and delay reason, look up impacted POs in SAP, create a Jira tracking issue, and alert the supply chain team in Microsoft Teams."
          inputParameters:
            - name: supplier_id
              in: body
              type: string
              description: "The SAP supplier number."
            - name: delay_days
              in: body
              type: number
              description: "The estimated delay in days."
            - name: delay_reason
              in: body
              type: string
              description: "The reason for the delivery delay."
          steps:
            - name: get-supplier-pos
              type: call
              call: "sap.get-supplier-orders"
              with:
                supplier_id: "{{supplier_id}}"
            - name: create-tracking-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "SCM"
                summary: "Supplier delay: {{supplier_id}} — {{delay_days}} days — {{delay_reason}}"
                description: "Supplier {{supplier_id}} has reported a {{delay_days}}-day delay. Reason: {{delay_reason}}. Affected POs: {{get-supplier-pos.order_count}} open orders."
                issue_type: "Task"
                priority: "High"
            - name: notify-supply-chain
              type: call
              call: "msteams.post-channel"
              with:
                channel_id: "supply-chain-ops"
                text: "SUPPLY DISRUPTION: Supplier {{supplier_id}} delayed by {{delay_days}} days. Reason: {{delay_reason}}. {{get-supplier-pos.order_count}} POs affected. Jira: {{create-tracking-issue.key}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://hyundai-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: supplier-orders
          path: "/A_PurchaseOrder?$filter=Supplier eq '{{supplier_id}}' and OverallStatus eq 'OPEN'"
          inputParameters:
            - name: supplier_id
              in: query
          operations:
            - name: get-supplier-orders
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://hyundai-motor.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/hyundai-scm/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Retrieves dealer network performance data from Tableau including sales volume, customer satisfaction scores, and service throughput by region.

naftiko: "0.5"
info:
  label: "Tableau Dealer Network Performance Snapshot"
  description: "Retrieves dealer network performance data from Tableau including sales volume, customer satisfaction scores, and service throughput by region."
  tags:
    - analytics
    - dealer
    - tableau
capability:
  exposes:
    - type: mcp
      namespace: dealer-performance
      port: 8080
      tools:
        - name: get-dealer-performance
          description: "Get dealer network performance snapshot from Tableau."
          inputParameters:
            - name: region
              in: body
              type: string
              description: "The dealer region."
          call: "tableau.get-view-data"
          with:
            workbook: "dealer-network-performance"
            view: "regional-summary"
            filter_region: "{{region}}"
          outputParameters:
            - name: total_units
              type: integer
              mapping: "$.data.summary.totalUnits"
            - name: avg_csi
              type: number
              mapping: "$.data.summary.avgCSI"
  consumes:
    - type: http
      namespace: tableau
      baseUri: "https://tableau.hyundai.com/api/3.19"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: views
          path: "/sites/hyundai/workbooks/{{workbook}}/views/{{view}}/data"
          inputParameters:
            - name: workbook
              in: path
            - name: view
              in: path
          operations:
            - name: get-view-data
              method: GET

Retrieves the status of a Terraform Cloud workspace run for EV charging infrastructure provisioning and posts the apply status to the infrastructure team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Terraform Infrastructure Provisioning Tracker"
  description: "Retrieves the status of a Terraform Cloud workspace run for EV charging infrastructure provisioning and posts the apply status to the infrastructure team in Microsoft Teams."
  tags:
    - infrastructure
    - ev-battery
    - terraform
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: infra-provisioning
      port: 8080
      tools:
        - name: track-terraform-run
          description: "Given a Terraform workspace ID and run ID, check the apply status and notify the infrastructure team in Teams."
          inputParameters:
            - name: workspace_id
              in: body
              type: string
              description: "The Terraform Cloud workspace ID."
            - name: run_id
              in: body
              type: string
              description: "The Terraform Cloud run ID."
          steps:
            - name: get-run-status
              type: call
              call: "terraform.get-run"
              with:
                run_id: "{{run_id}}"
            - name: notify-infra-team
              type: call
              call: "msteams.post-channel"
              with:
                channel_id: "ev-infrastructure"
                text: "Terraform run {{run_id}} in workspace {{workspace_id}}: Status {{get-run-status.status}}. Resources added: {{get-run-status.resource_additions}}. Changed: {{get-run-status.resource_changes}}. Destroyed: {{get-run-status.resource_destructions}}."
  consumes:
    - type: http
      namespace: terraform
      baseUri: "https://app.terraform.io/api/v2"
      authentication:
        type: bearer
        token: "$secrets.terraform_token"
      resources:
        - name: runs
          path: "/runs/{{run_id}}"
          inputParameters:
            - name: run_id
              in: path
          operations:
            - name: get-run
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/hyundai-infra/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Monitors tire pressure sensor data from Hyundai connected vehicles and triggers alerts when pressure falls below safe thresholds, notifying the driver and scheduling dealer service if needed.

naftiko: "0.5"
info:
  label: "Tire Pressure Monitoring Alert Handler"
  description: "Monitors tire pressure sensor data from Hyundai connected vehicles and triggers alerts when pressure falls below safe thresholds, notifying the driver and scheduling dealer service if needed."
  tags:
    - connected-car
    - safety
    - tire-pressure
capability:
  exposes:
    - type: mcp
      namespace: tpms-alerts
      port: 8080
      tools:
        - name: get-tire-pressure-status
          description: "Retrieve current tire pressure readings and alert status for a Hyundai vehicle."
          inputParameters:
            - name: vehicle_vin
              in: body
              type: string
              description: "The vehicle identification number."
            - name: owner_id
              in: body
              type: string
              description: "The Bluelink account owner identifier."
          call: "tpms-api.get-pressure-status"
          with:
            vin: "{{vehicle_vin}}"
            owner: "{{owner_id}}"
          outputParameters:
            - name: front_left_psi
              type: string
              mapping: "$.tires.frontLeft.psi"
            - name: front_right_psi
              type: string
              mapping: "$.tires.frontRight.psi"
            - name: rear_left_psi
              type: string
              mapping: "$.tires.rearLeft.psi"
            - name: rear_right_psi
              type: string
              mapping: "$.tires.rearRight.psi"
            - name: alert_level
              type: string
              mapping: "$.tires.alertLevel"
  consumes:
    - type: http
      namespace: tpms-api
      baseUri: "https://api.hyundai.com/connected-car/v1"
      authentication:
        type: bearer
        token: "$secrets.hyundai_connected_car_api_token"
      resources:
        - name: tire-pressure
          path: "/vehicles/{{vin}}/tpms"
          inputParameters:
            - name: vin
              in: path
          operations:
            - name: get-pressure-status
              method: GET

Coordinates vehicle certification by pulling test data from the homologation system, submitting documents to the regulatory portal, and tracking in Jira.

naftiko: "0.5"
info:
  label: "Vehicle Certification Compliance Coordinator"
  description: "Coordinates vehicle certification by pulling test data from the homologation system, submitting documents to the regulatory portal, and tracking in Jira."
  tags:
    - regulatory
    - certification
    - jira
capability:
  exposes:
    - type: mcp
      namespace: vehicle-certification
      port: 8080
      tools:
        - name: coordinate-certification
          description: "Coordinate vehicle certification and homologation."
          inputParameters:
            - name: model_code
              in: body
              type: string
              description: "The vehicle model code."
            - name: market
              in: body
              type: string
              description: "Target market ISO code."
          steps:
            - name: get-test-results
              type: call
              call: "homologation.get-results"
              with:
                model: "{{model_code}}"
                market: "{{market}}"
            - name: submit-documents
              type: call
              call: "regulatory-portal.submit"
              with:
                model: "{{model_code}}"
                market: "{{market}}"
                test_report_id: "{{get-test-results.report_id}}"
            - name: create-tracking
              type: call
              call: "jira.create-issue"
              with:
                project: "CERT"
                issue_type: "Task"
                summary: "Certification: {{model_code}} for {{market}}"
                description: "Submission: {{submit-documents.submission_id}}. Test results: {{get-test-results.status}}."
  consumes:
    - type: http
      namespace: homologation
      baseUri: "https://homologation.hyundai.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.homologation_token"
      resources:
        - name: results
          path: "/models/{{model}}/markets/{{market}}/results"
          inputParameters:
            - name: model
              in: path
            - name: market
              in: path
          operations:
            - name: get-results
              method: GET
    - type: http
      namespace: regulatory-portal
      baseUri: "https://regulatory.hyundai.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.regulatory_token"
      resources:
        - name: submissions
          path: "/submissions"
          operations:
            - name: submit
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://hyundai.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

Powers the Hyundai online vehicle configurator, calculating real-time pricing for model, trim, color, and option package combinations including regional incentives.

naftiko: "0.5"
info:
  label: "Vehicle Configurator Pricing Engine"
  description: "Powers the Hyundai online vehicle configurator, calculating real-time pricing for model, trim, color, and option package combinations including regional incentives."
  tags:
    - e-commerce
    - vehicle-configurator
    - pricing
capability:
  exposes:
    - type: mcp
      namespace: vehicle-configurator
      port: 8080
      tools:
        - name: calculate-vehicle-price
          description: "Calculate the configured price for a vehicle build."
          inputParameters:
            - name: model_code
              in: body
              type: string
              description: "The vehicle model code."
            - name: trim_level
              in: body
              type: string
              description: "The trim level selection."
            - name: options
              in: body
              type: array
              description: "List of selected option package codes."
            - name: zip_code
              in: body
              type: string
              description: "Customer zip code for regional pricing and incentives."
          call: "configurator-api.calculate-price"
          with:
            model: "{{model_code}}"
            trim: "{{trim_level}}"
            options: "{{options}}"
            zip: "{{zip_code}}"
          outputParameters:
            - name: msrp
              type: number
              mapping: "$.pricing.msrp"
            - name: destination_charge
              type: number
              mapping: "$.pricing.destinationCharge"
            - name: available_incentives
              type: array
              mapping: "$.pricing.availableIncentives"
  consumes:
    - type: http
      namespace: configurator-api
      baseUri: "https://api.hyundai.com/configurator/v1"
      authentication:
        type: bearer
        token: "$secrets.hyundai_configurator_api_token"
      resources:
        - name: pricing
          path: "/builds/pricing"
          operations:
            - name: calculate-price
              method: POST

Handles automatic crash notifications from connected vehicles by pulling telemetry data, notifying emergency services, and creating a case in the customer care system.

naftiko: "0.5"
info:
  label: "Vehicle Crash Notification Handler"
  description: "Handles automatic crash notifications from connected vehicles by pulling telemetry data, notifying emergency services, and creating a case in the customer care system."
  tags:
    - connected-car
    - safety
    - amazon-web-services
capability:
  exposes:
    - type: mcp
      namespace: crash-notification
      port: 8080
      tools:
        - name: handle-crash-notification
          description: "Handle an automatic crash notification from a connected vehicle."
          inputParameters:
            - name: vin
              in: body
              type: string
              description: "The vehicle VIN."
            - name: crash_severity
              in: body
              type: string
              description: "Crash severity level."
          steps:
            - name: get-vehicle-data
              type: call
              call: "aws-iot.get-thing-shadow"
              with:
                thing_name: "vehicle_{{vin}}"
            - name: notify-emergency
              type: call
              call: "emergency-system.dispatch"
              with:
                vin: "{{vin}}"
                location: "{{get-vehicle-data.state.reported.location}}"
                severity: "{{crash_severity}}"
            - name: create-care-case
              type: call
              call: "salesforce.create-case"
              with:
                vin: "{{vin}}"
                type: "crash_notification"
                severity: "{{crash_severity}}"
                location: "{{get-vehicle-data.state.reported.location}}"
  consumes:
    - type: http
      namespace: aws-iot
      baseUri: "https://iot.us-east-1.amazonaws.com"
      authentication:
        type: bearer
        token: "$secrets.aws_iot_token"
      resources:
        - name: shadows
          path: "/things/{{thing_name}}/shadow"
          inputParameters:
            - name: thing_name
              in: path
          operations:
            - name: get-thing-shadow
              method: GET
    - type: http
      namespace: emergency-system
      baseUri: "https://emergency.hyundai.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.emergency_system_token"
      resources:
        - name: dispatch
          path: "/dispatch"
          operations:
            - name: dispatch
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://hyundai.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case"
          operations:
            - name: create-case
              method: POST

Orchestrates vehicle delivery logistics by pulling production completion from SAP, booking carrier transport, and updating the dealer portal with ETA.

naftiko: "0.5"
info:
  label: "Vehicle Delivery Logistics Orchestrator"
  description: "Orchestrates vehicle delivery logistics by pulling production completion from SAP, booking carrier transport, and updating the dealer portal with ETA."
  tags:
    - logistics
    - dealer
    - sap
capability:
  exposes:
    - type: mcp
      namespace: vehicle-delivery
      port: 8080
      tools:
        - name: orchestrate-delivery
          description: "Orchestrate vehicle delivery from plant to dealer."
          inputParameters:
            - name: vin
              in: body
              type: string
              description: "The vehicle VIN."
            - name: dealer_id
              in: body
              type: string
              description: "The destination dealer ID."
          steps:
            - name: get-production-status
              type: call
              call: "sap.get-vehicle-status"
              with:
                vin: "{{vin}}"
            - name: book-transport
              type: call
              call: "carrier.book-vehicle-transport"
              with:
                vin: "{{vin}}"
                origin: "{{get-production-status.plant}}"
                destination: "dealer_{{dealer_id}}"
            - name: update-dealer-portal
              type: call
              call: "dealer-portal.update-vehicle-eta"
              with:
                vin: "{{vin}}"
                dealer_id: "{{dealer_id}}"
                carrier: "{{book-transport.carrier_name}}"
                eta: "{{book-transport.estimated_delivery}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://hyundai-s4.sap.com/sap/opu/odata/sap/ZPP_VEHICLE_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: vehicles
          path: "/VehicleSet('{{vin}}')"
          inputParameters:
            - name: vin
              in: path
          operations:
            - name: get-vehicle-status
              method: GET
    - type: http
      namespace: carrier
      baseUri: "https://carrier.hyundai.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.carrier_token"
      resources:
        - name: bookings
          path: "/bookings"
          operations:
            - name: book-vehicle-transport
              method: POST
    - type: http
      namespace: dealer-portal
      baseUri: "https://dealer-portal.hyundai.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.dealer_portal_token"
      resources:
        - name: vehicles
          path: "/vehicles/{{vin}}/eta"
          inputParameters:
            - name: vin
              in: path
          operations:
            - name: update-vehicle-eta
              method: PUT

Looks up a SAP S/4HANA production order by order number and returns build status, model, trim, color, and estimated completion date for a vehicle on the assembly line.

naftiko: "0.5"
info:
  label: "Vehicle Production Order Status"
  description: "Looks up a SAP S/4HANA production order by order number and returns build status, model, trim, color, and estimated completion date for a vehicle on the assembly line."
  tags:
    - manufacturing
    - production
    - sap
    - sap-s4hana
    - vehicle-build
capability:
  exposes:
    - type: mcp
      namespace: mfg-production
      port: 8080
      tools:
        - name: get-production-order
          description: "Look up a SAP S/4HANA production order by order number. Returns build status, vehicle model, trim level, color code, and estimated completion date."
          inputParameters:
            - name: order_number
              in: body
              type: string
              description: "The SAP production order number (12-digit)."
          call: "sap.get-production-order"
          with:
            order_number: "{{order_number}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.d.OrderStatus"
            - name: model
              type: string
              mapping: "$.d.MaterialDescription"
            - name: trim
              type: string
              mapping: "$.d.TrimLevel"
            - name: color_code
              type: string
              mapping: "$.d.ColorCode"
            - name: estimated_completion
              type: string
              mapping: "$.d.SchedFinishDate"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://hyundai-s4.sap.com/sap/opu/odata/sap/PP_PROD_ORDER_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
        - name: sap-client
          in: header
          value: "100"
      resources:
        - name: production-orders
          path: "/A_ProductionOrder('{{order_number}}')"
          inputParameters:
            - name: order_number
              in: path
          operations:
            - name: get-production-order
              method: GET

When a quality defect is confirmed, creates a recall campaign in Salesforce, opens a ServiceNow change request for dealer notification, and posts an alert to the Microsoft Teams quality channel.

naftiko: "0.5"
info:
  label: "Vehicle Recall Campaign Orchestrator"
  description: "When a quality defect is confirmed, creates a recall campaign in Salesforce, opens a ServiceNow change request for dealer notification, and posts an alert to the Microsoft Teams quality channel."
  tags:
    - quality
    - recall
    - salesforce
    - servicenow
    - microsoft-teams
    - dealer-management
capability:
  exposes:
    - type: mcp
      namespace: recall-management
      port: 8080
      tools:
        - name: initiate-recall-campaign
          description: "Given a defect ID, affected model, and model year range, create a recall campaign in Salesforce, open a ServiceNow change request, and notify the quality team in Microsoft Teams."
          inputParameters:
            - name: defect_id
              in: body
              type: string
              description: "The internal defect tracking identifier."
            - name: affected_model
              in: body
              type: string
              description: "The vehicle model affected (e.g. Tucson, Ioniq 5)."
            - name: model_year_start
              in: body
              type: number
              description: "The starting model year of affected vehicles."
            - name: model_year_end
              in: body
              type: number
              description: "The ending model year of affected vehicles."
            - name: defect_description
              in: body
              type: string
              description: "Description of the safety defect or quality issue."
          steps:
            - name: create-campaign
              type: call
              call: "salesforce.create-recall-campaign"
              with:
                name: "Recall — {{affected_model}} {{model_year_start}}-{{model_year_end}} — {{defect_id}}"
                description: "{{defect_description}}"
                model: "{{affected_model}}"
            - name: open-change-request
              type: call
              call: "servicenow.create-change"
              with:
                short_description: "Dealer notification for recall {{defect_id}} — {{affected_model}}"
                description: "Notify all dealers of recall campaign {{create-campaign.id}} for {{affected_model}} MY {{model_year_start}}-{{model_year_end}}. Defect: {{defect_description}}"
                category: "recall_notification"
                assigned_group: "Dealer_Operations"
            - name: notify-quality-team
              type: call
              call: "msteams.post-channel"
              with:
                channel_id: "quality-alerts"
                text: "RECALL INITIATED: {{affected_model}} MY {{model_year_start}}-{{model_year_end}} — Defect {{defect_id}}. Campaign: {{create-campaign.id}}. Change request: {{open-change-request.number}}. Description: {{defect_description}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://hyundai.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: recall-campaigns
          path: "/sobjects/Recall_Campaign__c"
          operations:
            - name: create-recall-campaign
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://hyundai.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: change-requests
          path: "/table/change_request"
          operations:
            - name: create-change
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/hyundai-quality/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Estimates trade-in values for vehicles at Hyundai dealerships using market data, vehicle condition assessments, and regional demand factors.

naftiko: "0.5"
info:
  label: "Vehicle Trade-In Valuation Estimator"
  description: "Estimates trade-in values for vehicles at Hyundai dealerships using market data, vehicle condition assessments, and regional demand factors."
  tags:
    - trade-in
    - valuation
    - dealer-management
capability:
  exposes:
    - type: mcp
      namespace: trade-in-valuation
      port: 8080
      tools:
        - name: estimate-trade-in-value
          description: "Estimate the trade-in value for a vehicle."
          inputParameters:
            - name: vehicle_vin
              in: body
              type: string
              description: "The VIN of the trade-in vehicle."
            - name: mileage
              in: body
              type: integer
              description: "Current odometer reading in miles."
            - name: condition
              in: body
              type: string
              description: "Vehicle condition such as excellent, good, fair, or poor."
            - name: zip_code
              in: body
              type: string
              description: "Dealer zip code for regional market adjustment."
          call: "valuation-api.estimate-value"
          with:
            vin: "{{vehicle_vin}}"
            mileage: "{{mileage}}"
            condition: "{{condition}}"
            zip: "{{zip_code}}"
          outputParameters:
            - name: estimated_value
              type: number
              mapping: "$.valuation.estimatedValue"
            - name: market_range_low
              type: number
              mapping: "$.valuation.marketRangeLow"
            - name: market_range_high
              type: number
              mapping: "$.valuation.marketRangeHigh"
  consumes:
    - type: http
      namespace: valuation-api
      baseUri: "https://api.hyundai.com/valuation/v1"
      authentication:
        type: bearer
        token: "$secrets.hyundai_valuation_api_token"
      resources:
        - name: valuations
          path: "/trade-in-valuations"
          operations:
            - name: estimate-value
              method: POST

Performs a three-way match between a vendor invoice, SAP purchase order, and goods receipt to validate pricing and quantities. Flags mismatches in ServiceNow for accounts payable review and notifies the procurement team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Vendor Invoice Three-Way Match"
  description: "Performs a three-way match between a vendor invoice, SAP purchase order, and goods receipt to validate pricing and quantities. Flags mismatches in ServiceNow for accounts payable review and notifies the procurement team in Microsoft Teams."
  tags:
    - finance
    - procurement
    - sap
    - sap-s4hana
    - servicenow
    - microsoft-teams
    - accounts-payable
capability:
  exposes:
    - type: mcp
      namespace: invoice-matching
      port: 8080
      tools:
        - name: three-way-match-invoice
          description: "Given an invoice number and PO number, retrieve the invoice, PO, and goods receipt from SAP, compare quantities and prices, and flag mismatches in ServiceNow."
          inputParameters:
            - name: invoice_number
              in: body
              type: string
              description: "The vendor invoice number."
            - name: po_number
              in: body
              type: string
              description: "The SAP purchase order number."
          steps:
            - name: get-invoice
              type: call
              call: "sap.get-invoice"
              with:
                invoice_number: "{{invoice_number}}"
            - name: get-po
              type: call
              call: "sap.get-po"
              with:
                po_number: "{{po_number}}"
            - name: get-goods-receipt
              type: call
              call: "sap.get-goods-receipt"
              with:
                po_number: "{{po_number}}"
            - name: flag-mismatch
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Invoice mismatch: INV {{invoice_number}} vs PO {{po_number}}"
                description: "Invoice amount: {{get-invoice.total_amount}}. PO amount: {{get-po.total_value}}. GR quantity: {{get-goods-receipt.quantity_received}}. Review required."
                assigned_group: "Accounts_Payable"
                category: "invoice_mismatch"
            - name: notify-procurement
              type: call
              call: "msteams.post-channel"
              with:
                channel_id: "procurement-ops"
                text: "Invoice mismatch flagged: INV {{invoice_number}} / PO {{po_number}}. Invoice: {{get-invoice.total_amount}}. PO: {{get-po.total_value}}. Task: {{flag-mismatch.number}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://hyundai-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: invoices
          path: "/A_SupplierInvoice('{{invoice_number}}')"
          inputParameters:
            - name: invoice_number
              in: path
          operations:
            - name: get-invoice
              method: GET
        - name: purchase-orders
          path: "/A_PurchaseOrder('{{po_number}}')"
          inputParameters:
            - name: po_number
              in: path
          operations:
            - name: get-po
              method: GET
        - name: goods-receipts
          path: "/A_GoodsReceipt?$filter=PurchaseOrder eq '{{po_number}}'"
          inputParameters:
            - name: po_number
              in: query
          operations:
            - name: get-goods-receipt
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://hyundai.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/task"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/hyundai-finance/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

When onboarding a new supplier, retrieves supplier data from SAP Ariba, runs a compliance check in ServiceNow GRC, stores the assessment in SharePoint, and notifies the procurement team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Vendor Risk Assessment Pipeline"
  description: "When onboarding a new supplier, retrieves supplier data from SAP Ariba, runs a compliance check in ServiceNow GRC, stores the assessment in SharePoint, and notifies the procurement team in Microsoft Teams."
  tags:
    - supply-chain
    - compliance
    - sap-ariba
    - servicenow
    - sharepoint
    - microsoft-teams
    - risk-management
capability:
  exposes:
    - type: mcp
      namespace: vendor-risk
      port: 8080
      tools:
        - name: assess-vendor-risk
          description: "Given an Ariba supplier ID and risk category, perform a compliance check, store the assessment, and notify the procurement team."
          inputParameters:
            - name: supplier_id
              in: body
              type: string
              description: "The SAP Ariba supplier identifier."
            - name: risk_category
              in: body
              type: string
              description: "The risk category to assess (e.g. financial, operational, compliance, environmental)."
          steps:
            - name: get-supplier-profile
              type: call
              call: "ariba.get-supplier"
              with:
                supplier_id: "{{supplier_id}}"
            - name: run-compliance-check
              type: call
              call: "servicenow.create-grc-assessment"
              with:
                entity_name: "{{get-supplier-profile.company_name}}"
                risk_category: "{{risk_category}}"
                description: "Vendor risk assessment for {{get-supplier-profile.company_name}} ({{supplier_id}}). Category: {{risk_category}}. Country: {{get-supplier-profile.country}}."
            - name: store-assessment
              type: call
              call: "sharepoint.upload-file"
              with:
                site_id: "vendor_risk_site"
                file_path: "Assessments/{{supplier_id}}/{{risk_category}}_assessment.json"
                content: "Supplier: {{get-supplier-profile.company_name}}. Risk score: {{run-compliance-check.risk_score}}. Status: {{run-compliance-check.assessment_status}}."
            - name: notify-procurement
              type: call
              call: "msteams.post-channel"
              with:
                channel_id: "procurement-risk"
                text: "Vendor risk assessment complete: {{get-supplier-profile.company_name}} ({{supplier_id}}). Category: {{risk_category}}. Risk score: {{run-compliance-check.risk_score}}. Status: {{run-compliance-check.assessment_status}}. Report: {{store-assessment.url}}"
  consumes:
    - type: http
      namespace: ariba
      baseUri: "https://openapi.ariba.com/api/supplier-management/v1"
      authentication:
        type: bearer
        token: "$secrets.ariba_token"
      resources:
        - name: suppliers
          path: "/suppliers/{{supplier_id}}"
          inputParameters:
            - name: supplier_id
              in: path
          operations:
            - name: get-supplier
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://hyundai.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: grc-assessments
          path: "/table/sn_grc_assessment"
          operations:
            - name: create-grc-assessment
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{file_path}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: upload-file
              method: PUT
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/hyundai-procurement/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: post-channel
              method: POST

Adjudicates warranty claims submitted by Hyundai dealers, validating coverage eligibility, repair codes, and labor time against warranty policy rules.

naftiko: "0.5"
info:
  label: "Warranty Claim Adjudication Pipeline"
  description: "Adjudicates warranty claims submitted by Hyundai dealers, validating coverage eligibility, repair codes, and labor time against warranty policy rules."
  tags:
    - warranty
    - claims-processing
    - dealer-management
capability:
  exposes:
    - type: mcp
      namespace: warranty-claims
      port: 8080
      tools:
        - name: adjudicate-warranty-claim
          description: "Adjudicate a dealer-submitted warranty claim."
          inputParameters:
            - name: claim_id
              in: body
              type: string
              description: "The warranty claim identifier."
            - name: dealer_id
              in: body
              type: string
              description: "The submitting dealer identifier."
          call: "warranty-api.adjudicate-claim"
          with:
            claim: "{{claim_id}}"
            dealer: "{{dealer_id}}"
          outputParameters:
            - name: adjudication_result
              type: string
              mapping: "$.claim.result"
            - name: approved_amount
              type: number
              mapping: "$.claim.approvedAmount"
            - name: denial_reason
              type: string
              mapping: "$.claim.denialReason"
  consumes:
    - type: http
      namespace: warranty-api
      baseUri: "https://api.hyundai.com/warranty/v1"
      authentication:
        type: bearer
        token: "$secrets.hyundai_warranty_api_token"
      resources:
        - name: claims
          path: "/claims/{{claim}}/adjudicate"
          inputParameters:
            - name: claim
              in: path
          operations:
            - name: adjudicate-claim
              method: POST

Manages weld quality inspections by pulling vision system data from the MES, logging results in SAP QM, and alerting quality engineers via Slack on failures.

naftiko: "0.5"
info:
  label: "Weld Quality Inspection Pipeline"
  description: "Manages weld quality inspections by pulling vision system data from the MES, logging results in SAP QM, and alerting quality engineers via Slack on failures."
  tags:
    - quality
    - manufacturing
    - sap
    - slack
capability:
  exposes:
    - type: mcp
      namespace: weld-inspection
      port: 8080
      tools:
        - name: process-weld-inspection
          description: "Process weld quality inspection results."
          inputParameters:
            - name: body_number
              in: body
              type: string
              description: "The vehicle body number."
            - name: station_id
              in: body
              type: string
              description: "The welding station ID."
          steps:
            - name: get-vision-results
              type: call
              call: "mes.get-weld-inspection"
              with:
                body: "{{body_number}}"
                station: "{{station_id}}"
            - name: log-in-sap
              type: call
              call: "sap-qm.create-inspection-lot"
              with:
                body: "{{body_number}}"
                station: "{{station_id}}"
                result: "{{get-vision-results.pass_fail}}"
                defects: "{{get-vision-results.defect_count}}"
            - name: alert-on-failure
              type: call
              call: "slack.post-message"
              with:
                channel: "quality-weld-alerts"
                text: "Weld inspection: Body {{body_number}} at station {{station_id}} - {{get-vision-results.pass_fail}}. Defects: {{get-vision-results.defect_count}}. SAP lot: {{log-in-sap.lot_number}}."
  consumes:
    - type: http
      namespace: mes
      baseUri: "https://mes.hyundai.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.mes_token"
      resources:
        - name: inspections
          path: "/bodies/{{body}}/stations/{{station}}/weld-inspection"
          inputParameters:
            - name: body
              in: path
            - name: station
              in: path
          operations:
            - name: get-weld-inspection
              method: GET
    - type: http
      namespace: sap-qm
      baseUri: "https://hyundai-s4.sap.com/sap/opu/odata/sap/ZQM_INSPECTION_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: lots
          path: "/InspectionLotSet"
          operations:
            - name: create-inspection-lot
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves an employee profile from Workday by worker ID. Returns full name, department, job title, cost center, and manager information.

naftiko: "0.5"
info:
  label: "Workday Employee Profile Lookup"
  description: "Retrieves an employee profile from Workday by worker ID. Returns full name, department, job title, cost center, and manager information."
  tags:
    - hr
    - employee-data
    - workday
capability:
  exposes:
    - type: mcp
      namespace: hr-employee
      port: 8080
      tools:
        - name: get-employee
          description: "Look up an employee profile in Workday by worker ID. Returns full name, department, job title, cost center, and reporting manager."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "The Workday worker ID."
          call: "workday.get-worker"
          with:
            worker_id: "{{worker_id}}"
          outputParameters:
            - name: full_name
              type: string
              mapping: "$.worker.fullName"
            - name: department
              type: string
              mapping: "$.worker.department"
            - name: job_title
              type: string
              mapping: "$.worker.jobTitle"
            - name: cost_center
              type: string
              mapping: "$.worker.costCenter"
            - name: manager_name
              type: string
              mapping: "$.worker.manager.fullName"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1/hyundai"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET

Retrieves headcount data for a manufacturing plant from Workday, including total employees, department breakdown, and vacancy count.

naftiko: "0.5"
info:
  label: "Workday Manufacturing Headcount Report"
  description: "Retrieves headcount data for a manufacturing plant from Workday, including total employees, department breakdown, and vacancy count."
  tags:
    - hr
    - manufacturing
    - workday
capability:
  exposes:
    - type: mcp
      namespace: plant-headcount
      port: 8080
      tools:
        - name: get-plant-headcount
          description: "Get headcount report for a manufacturing plant."
          inputParameters:
            - name: plant_code
              in: body
              type: string
              description: "The plant code."
          call: "workday.get-headcount"
          with:
            location: "plant_{{plant_code}}"
          outputParameters:
            - name: total_employees
              type: integer
              mapping: "$.headcount.total"
            - name: vacancies
              type: integer
              mapping: "$.headcount.vacancies"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: headcount
          path: "/headcount?location={{location}}"
          inputParameters:
            - name: location
              in: query
          operations:
            - name: get-headcount
              method: GET