Tesla Capabilities

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

Sort
Expand

Submits a Jira bug report and associated stack trace to Anthropic Claude for automated root-cause analysis, returning a structured diagnosis to accelerate triage.

naftiko: "0.5"
info:
  label: "Anthropic AI Software Defect Root-Cause Analysis"
  description: "Submits a Jira bug report and associated stack trace to Anthropic Claude for automated root-cause analysis, returning a structured diagnosis to accelerate triage."
  tags:
    - ai
    - anthropic
    - devops
    - jira
    - debugging
    - automation
capability:
  exposes:
    - type: mcp
      namespace: ai-eng
      port: 8080
      tools:
        - name: analyze-defect-root-cause
          description: "Given a Jira issue key, fetch the bug description and stack trace, then send to Anthropic Claude for root-cause analysis and suggested fix. Return the diagnosis for the engineering team to review. Use at triage time for complex production bugs."
          inputParameters:
            - name: issue_key
              in: body
              type: string
              description: "Jira issue key for the bug to analyze (e.g. ENG-1234)."
          steps:
            - name: get-jira-issue
              type: call
              call: jira-bugs.get-issue
              with:
                issue_key: "{{issue_key}}"
            - name: analyze-bug
              type: call
              call: anthropic-rca.create-message
              with:
                model: "claude-opus-4-5"
                max_tokens: 500
                messages: "[{\"role\":\"user\",\"content\":\"Analyze this software defect and provide root cause and suggested fix:\\n\\nTitle: {{get-jira-issue.fields.summary}}\\n\\nDescription: {{get-jira-issue.fields.description}}\\n\\nProvide: 1) Most likely root cause, 2) Suggested fix, 3) Test cases to prevent recurrence.\"}]"
  consumes:
    - type: http
      namespace: jira-bugs
      baseUri: "https://tesla.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue/{{issue_key}}"
          inputParameters:
            - name: issue_key
              in: path
          operations:
            - name: get-issue
              method: GET
    - type: http
      namespace: anthropic-rca
      baseUri: "https://api.anthropic.com/v1"
      authentication:
        type: apikey
        key: "x-api-key"
        value: "$secrets.anthropic_api_key"
        placement: header
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: create-message
              method: POST

Summarizes a Tesla internal vehicle software architecture document using Anthropic Claude, producing a concise technical summary for onboarding engineers or cross-team knowledge sharing.

naftiko: "0.5"
info:
  label: "Anthropic AI Vehicle Software Documentation Summary"
  description: "Summarizes a Tesla internal vehicle software architecture document using Anthropic Claude, producing a concise technical summary for onboarding engineers or cross-team knowledge sharing."
  tags:
    - ai
    - anthropic
    - documentation
    - engineering
    - automation
capability:
  exposes:
    - type: mcp
      namespace: doc-ai
      port: 8080
      tools:
        - name: summarize-technical-document
          description: "Given raw technical document text from a Tesla vehicle software architecture or design spec, send it to Anthropic Claude for a structured technical summary. Use for onboarding documentation, cross-team briefings, or pre-meeting prep."
          inputParameters:
            - name: document_text
              in: body
              type: string
              description: "Raw text of the technical document to summarize."
            - name: audience
              in: body
              type: string
              description: "Target audience for the summary: engineer, manager, or executive."
          call: anthropic-docs.create-message
          with:
            model: "claude-opus-4-5"
            max_tokens: 400
            messages: "[{\"role\":\"user\",\"content\":\"Summarize this Tesla vehicle software technical document for a {{audience}} audience. Structure as: Overview, Key Components, Critical Decisions, Open Questions.\\n\\n{{document_text}}\"}]"
          outputParameters:
            - name: summary
              type: string
              mapping: "$.content[0].text"
  consumes:
    - type: http
      namespace: anthropic-docs
      baseUri: "https://api.anthropic.com/v1"
      authentication:
        type: apikey
        key: "x-api-key"
        value: "$secrets.anthropic_api_key"
        placement: header
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: create-message
              method: POST

When Datadog detects high error rates on the Tesla API gateway, creates a Jira incident and notifies the platform team in Slack.

naftiko: "0.5"
info:
  label: "Datadog API Gateway Error Rate Handler"
  description: "When Datadog detects high error rates on the Tesla API gateway, creates a Jira incident and notifies the platform team in Slack."
  tags:
    - platform
    - datadog
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: api-gateway-ops
      port: 8080
      tools:
        - name: handle-api-error-rate
          description: "Given a Datadog monitor ID for API gateway error rates, create a Jira incident and notify the platform team in Slack."
          inputParameters:
            - name: monitor_id
              in: body
              type: integer
              description: "Datadog monitor ID for the API gateway."
            - name: error_rate
              in: body
              type: number
              description: "Current error rate percentage."
          steps:
            - name: get-monitor
              type: call
              call: dd-api.get-monitor
              with:
                monitor_id: "{{monitor_id}}"
            - name: create-incident
              type: call
              call: jira-platform.create-issue
              with:
                project_key: "PLAT"
                issuetype: "Incident"
                summary: "API Gateway error rate: {{error_rate}}% — {{get-monitor.name}}"
                priority: "High"
            - name: notify-platform
              type: call
              call: slack-api.post-message
              with:
                channel: "platform-alerts"
                text: "API GATEWAY ALERT: Error rate {{error_rate}}% | {{get-monitor.name}} | Jira: {{create-incident.key}}"
  consumes:
    - type: http
      namespace: dd-api
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: monitors
          path: "/monitor/{{monitor_id}}"
          inputParameters:
            - name: monitor_id
              in: path
          operations:
            - name: get-monitor
              method: GET
    - type: http
      namespace: jira-platform
      baseUri: "https://tesla.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-api
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

When Datadog detects high inference latency in autonomous driving services, creates a Jira P1 and alerts the FSD team in Slack.

naftiko: "0.5"
info:
  label: "Datadog Autonomous Driving Latency Alert"
  description: "When Datadog detects high inference latency in autonomous driving services, creates a Jira P1 and alerts the FSD team in Slack."
  tags:
    - ai
    - datadog
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: ad-latency
      port: 8080
      tools:
        - name: handle-ad-latency-alert
          description: "Given a Datadog monitor ID for autonomous driving latency, create a Jira P1 incident and alert the FSD team in Slack."
          inputParameters:
            - name: monitor_id
              in: body
              type: integer
              description: "Datadog monitor ID for the latency alert."
            - name: service_name
              in: body
              type: string
              description: "Name of the AD service experiencing latency."
          steps:
            - name: get-monitor
              type: call
              call: dd-ad.get-monitor
              with:
                monitor_id: "{{monitor_id}}"
            - name: create-p1
              type: call
              call: jira-ad.create-issue
              with:
                project_key: "FSD"
                issuetype: "Incident"
                summary: "P1: High latency in {{service_name}} — {{get-monitor.name}}"
                priority: "Highest"
            - name: notify-fsd
              type: call
              call: slack-fsd.post-message
              with:
                channel: "fsd-alerts"
                text: "P1 LATENCY ALERT: {{service_name}} | {{get-monitor.name}} | Jira: {{create-p1.key}}"
  consumes:
    - type: http
      namespace: dd-ad
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: monitors
          path: "/monitor/{{monitor_id}}"
          inputParameters:
            - name: monitor_id
              in: path
          operations:
            - name: get-monitor
              method: GET
    - type: http
      namespace: jira-ad
      baseUri: "https://tesla.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-fsd
      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 Datadog metric summaries for Autopilot software telemetry aggregation services and posts a daily health digest to the autonomous driving engineering Slack channel.

naftiko: "0.5"
info:
  label: "Datadog Autopilot Software Observability Dashboard"
  description: "Retrieves Datadog metric summaries for Autopilot software telemetry aggregation services and posts a daily health digest to the autonomous driving engineering Slack channel."
  tags:
    - devops
    - datadog
    - slack
    - observability
    - autonomous-driving
    - manufacturing
capability:
  exposes:
    - type: mcp
      namespace: adas-ops
      port: 8080
      tools:
        - name: digest-autopilot-health
          description: "Query Datadog for Autopilot telemetry ingestion and processing service metrics over the past hour, and post a health summary to the #adas-eng Slack channel. Use as a daily shift-start health check for autonomous driving systems."
          inputParameters:
            - name: service_name
              in: body
              type: string
              description: "Datadog service name for the Autopilot pipeline to check."
          steps:
            - name: query-service-metrics
              type: call
              call: dd-adas.query-metrics
              with:
                query: "avg:service.request.duration{service:{{service_name}}} by {env}.rollup(avg, 300)"
                from: "-3600"
                to: "0"
            - name: post-health
              type: call
              call: slack-adas.post-message
              with:
                channel: "adas-eng"
                text: "Autopilot service health for {{service_name}}: Metrics retrieved. Review P99 latency and error rates in Datadog."
  consumes:
    - type: http
      namespace: dd-adas
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: metrics-query
          path: "/query"
          inputParameters:
            - name: query
              in: query
            - name: from
              in: query
            - name: to
              in: query
          operations:
            - name: query-metrics
              method: GET
    - type: http
      namespace: slack-adas
      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

Generates a weekly SLO compliance report for Cybertruck production line monitoring from Datadog and posts it to the Cybertruck Slack channel.

naftiko: "0.5"
info:
  label: "Datadog Cybertruck Production SLO Report"
  description: "Generates a weekly SLO compliance report for Cybertruck production line monitoring from Datadog and posts it to the Cybertruck Slack channel."
  tags:
    - manufacturing
    - datadog
    - slack
    - slo
capability:
  exposes:
    - type: mcp
      namespace: cybertruck-ops
      port: 8080
      tools:
        - name: handle-cybertruck-slo-report
          description: "Given a Datadog SLO ID for Cybertruck production, generate a weekly compliance report and post to the Cybertruck Slack channel."
          inputParameters:
            - name: slo_id
              in: body
              type: string
              description: "Datadog SLO ID for Cybertruck production."
          steps:
            - name: get-slo-history
              type: call
              call: dd-ct.get-slo-history
              with:
                slo_id: "{{slo_id}}"
            - name: post-report
              type: call
              call: slack-ct.post-message
              with:
                channel: "cybertruck-production"
                text: "Weekly Cybertruck SLO Report: Target: {{get-slo-history.target}}% | Actual: {{get-slo-history.overall_status}} | Budget remaining: {{get-slo-history.error_budget_remaining}}%"
  consumes:
    - type: http
      namespace: dd-ct
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: slo-history
          path: "/slo/{{slo_id}}/history"
          inputParameters:
            - name: slo_id
              in: path
          operations:
            - name: get-slo-history
              method: GET
    - type: http
      namespace: slack-ct
      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 Datadog for current inference latency metrics of the FSD neural network stack.

naftiko: "0.5"
info:
  label: "Datadog FSD Inference Latency Check"
  description: "Queries Datadog for current inference latency metrics of the FSD neural network stack."
  tags:
    - ai
    - datadog
    - fsd
capability:
  exposes:
    - type: mcp
      namespace: fsd-ops
      port: 8080
      tools:
        - name: get-inference-latency
          description: "Given a metric name, return current FSD inference latency from Datadog. Use for real-time performance monitoring of autonomous driving models."
          inputParameters:
            - name: metric_name
              in: body
              type: string
              description: "Datadog metric name for FSD inference latency."
          call: "dd-fsd.get-metrics"
          with:
            query: "{{metric_name}}"
          outputParameters:
            - name: series
              type: array
              mapping: "$.series"
  consumes:
    - type: http
      namespace: dd-fsd
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: metrics
          path: "/query"
          inputParameters:
            - name: query
              in: query
          operations:
            - name: get-metrics
              method: GET

When Datadog detects a critical Gigafactory production line alert, creates a Jira incident and notifies the manufacturing ops Slack channel.

naftiko: "0.5"
info:
  label: "Datadog Gigafactory Alert to Jira Incident"
  description: "When Datadog detects a critical Gigafactory production line alert, creates a Jira incident and notifies the manufacturing ops Slack channel."
  tags:
    - manufacturing
    - datadog
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: gigafactory-ops
      port: 8080
      tools:
        - name: handle-gigafactory-alert
          description: "Given a Datadog monitor ID for a Gigafactory alert, retrieve details, create a Jira incident, and notify manufacturing ops in Slack."
          inputParameters:
            - name: monitor_id
              in: body
              type: integer
              description: "Datadog monitor ID that fired."
            - name: plant_name
              in: body
              type: string
              description: "Gigafactory plant name."
          steps:
            - name: get-monitor
              type: call
              call: dd-giga.get-monitor
              with:
                monitor_id: "{{monitor_id}}"
            - name: create-incident
              type: call
              call: jira-mfg.create-issue
              with:
                project_key: "MFG"
                issuetype: "Incident"
                summary: "Gigafactory {{plant_name}} alert: {{get-monitor.name}}"
                priority: "Highest"
            - name: notify-ops
              type: call
              call: slack-mfg.post-message
              with:
                channel: "manufacturing-ops"
                text: "GIGAFACTORY ALERT: {{plant_name}} | Monitor: {{get-monitor.name}} | Jira: {{create-incident.key}}"
  consumes:
    - type: http
      namespace: dd-giga
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: monitors
          path: "/monitor/{{monitor_id}}"
          inputParameters:
            - name: monitor_id
              in: path
          operations:
            - name: get-monitor
              method: GET
    - type: http
      namespace: jira-mfg
      baseUri: "https://tesla.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-mfg
      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 the current status of GPU training cluster monitors from Datadog.

naftiko: "0.5"
info:
  label: "Datadog GPU Cluster Monitor Status"
  description: "Retrieves the current status of GPU training cluster monitors from Datadog."
  tags:
    - devops
    - datadog
    - ai-training
capability:
  exposes:
    - type: mcp
      namespace: gpu-ops
      port: 8080
      tools:
        - name: get-gpu-monitor-status
          description: "Given a cluster name, return the current Datadog monitor states for GPU training infrastructure. Use before initiating training runs."
          inputParameters:
            - name: cluster_name
              in: body
              type: string
              description: "Name of the GPU training cluster."
          call: "dd-gpu.get-monitors"
          with:
            name: "{{cluster_name}}"
          outputParameters:
            - name: monitors
              type: array
              mapping: "$.monitors"
  consumes:
    - type: http
      namespace: dd-gpu
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: monitors
          path: "/monitor"
          inputParameters:
            - name: name
              in: query
          operations:
            - name: get-monitors
              method: GET

Queries Datadog for AWS cloud infrastructure cost anomalies over the past 24 hours and posts a ranked report to the platform engineering Slack channel for spend governance.

naftiko: "0.5"
info:
  label: "Datadog Infrastructure Cost Anomaly Alert"
  description: "Queries Datadog for AWS cloud infrastructure cost anomalies over the past 24 hours and posts a ranked report to the platform engineering Slack channel for spend governance."
  tags:
    - cloud
    - datadog
    - slack
    - cost-management
    - observability
capability:
  exposes:
    - type: mcp
      namespace: cloud-ops
      port: 8080
      tools:
        - name: detect-cloud-cost-anomaly
          description: "Query Datadog for AWS infrastructure cost anomalies exceeding a percentage threshold over the past 24 hours and post a report to the #platform-eng Slack channel. Use as a daily cloud spend governance check."
          inputParameters:
            - name: threshold_percent
              in: body
              type: number
              description: "Percentage increase threshold to flag as a cost anomaly (e.g. 25)."
          steps:
            - name: query-cost-anomalies
              type: call
              call: dd-costs.query-metrics
              with:
                query: "anomalies(avg:aws.estimated_charges{*}, adaptive, 2)"
                from: "-86400"
                to: "0"
            - name: post-cost-report
              type: call
              call: slack-cloud.post-message
              with:
                channel: "platform-eng"
                text: "Cloud cost anomaly check (24h): Threshold {{threshold_percent}}%. Anomaly series retrieved. Review flagged services in Datadog cost explorer."
  consumes:
    - type: http
      namespace: dd-costs
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: metrics-query
          path: "/query"
          inputParameters:
            - name: query
              in: query
            - name: from
              in: query
            - name: to
              in: query
          operations:
            - name: query-metrics
              method: GET
    - type: http
      namespace: slack-cloud
      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 Datadog SLO status for the Tesla Gigafactory production line monitoring infrastructure and posts a weekly compliance digest to the manufacturing operations Slack channel.

naftiko: "0.5"
info:
  label: "Datadog Manufacturing SLO Compliance Report"
  description: "Retrieves Datadog SLO status for the Tesla Gigafactory production line monitoring infrastructure and posts a weekly compliance digest to the manufacturing operations Slack channel."
  tags:
    - manufacturing
    - datadog
    - slack
    - observability
    - slo
    - reliability
capability:
  exposes:
    - type: mcp
      namespace: mfg-reliability
      port: 8080
      tools:
        - name: report-manufacturing-slo
          description: "Given a Datadog SLO ID for manufacturing infrastructure, retrieve current status and error budget, and post a compliance summary to the #manufacturing-ops Slack channel. Use weekly for factory operations reliability reviews."
          inputParameters:
            - name: slo_id
              in: body
              type: string
              description: "Datadog SLO ID for the manufacturing monitoring infrastructure."
          steps:
            - name: get-slo-status
              type: call
              call: dd-mfg-slo.get-slo
              with:
                slo_id: "{{slo_id}}"
            - name: post-slo-report
              type: call
              call: slack-mfg.post-message
              with:
                channel: "manufacturing-ops"
                text: "Manufacturing SLO {{slo_id}} compliance: Status {{get-slo-status.data.overall_status}} | Error budget remaining: {{get-slo-status.data.overall_error_budget_remaining}}%"
  consumes:
    - type: http
      namespace: dd-mfg-slo
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: slos
          path: "/slo/{{slo_id}}"
          inputParameters:
            - name: slo_id
              in: path
          operations:
            - name: get-slo
              method: GET
    - type: http
      namespace: slack-mfg
      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

Gathers Megapack installation site health metrics from Datadog and posts a combined report to the energy ops Slack channel.

naftiko: "0.5"
info:
  label: "Datadog Megapack Site Health Report"
  description: "Gathers Megapack installation site health metrics from Datadog and posts a combined report to the energy ops Slack channel."
  tags:
    - energy
    - datadog
    - salesforce
    - slack
capability:
  exposes:
    - type: mcp
      namespace: megapack-ops
      port: 8080
      tools:
        - name: handle-megapack-health
          description: "Given a Datadog service tag for a Megapack site, gather health metrics and post a report to energy ops in Slack."
          inputParameters:
            - name: site_tag
              in: body
              type: string
              description: "Datadog service tag for the Megapack site."
            - name: site_name
              in: body
              type: string
              description: "Human-readable site name."
          steps:
            - name: get-monitors
              type: call
              call: dd-megapack.get-monitors
              with:
                tags: "{{site_tag}}"
            - name: get-site-case
              type: call
              call: sf-megapack.query-cases
              with:
                site_name: "{{site_name}}"
            - name: post-report
              type: call
              call: slack-megapack.post-message
              with:
                channel: "energy-ops"
                text: "Megapack Site Health: {{site_name}} | Monitors: {{get-monitors.total_count}} | Active alerts: {{get-monitors.alert_count}} | Open cases: {{get-site-case.totalSize}}"
  consumes:
    - type: http
      namespace: dd-megapack
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: monitors
          path: "/monitor"
          inputParameters:
            - name: tags
              in: query
          operations:
            - name: get-monitors
              method: GET
    - type: http
      namespace: sf-megapack
      baseUri: "https://tesla.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/query"
          inputParameters:
            - name: site_name
              in: query
          operations:
            - name: query-cases
              method: GET
    - type: http
      namespace: slack-megapack
      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

Monitors Powerwall firmware rollout health via Datadog, checks rollout progress in SAP, and reports status to the energy team Slack channel.

naftiko: "0.5"
info:
  label: "Datadog Powerwall Firmware Rollout Monitor"
  description: "Monitors Powerwall firmware rollout health via Datadog, checks rollout progress in SAP, and reports status to the energy team Slack channel."
  tags:
    - energy
    - datadog
    - sap
    - slack
capability:
  exposes:
    - type: mcp
      namespace: powerwall-ops
      port: 8080
      tools:
        - name: handle-firmware-rollout
          description: "Given a Datadog service tag and firmware version, monitor rollout health and report to the energy team in Slack."
          inputParameters:
            - name: service_tag
              in: body
              type: string
              description: "Datadog service tag for Powerwall firmware."
            - name: firmware_version
              in: body
              type: string
              description: "Firmware version being rolled out."
          steps:
            - name: check-monitors
              type: call
              call: dd-pw.get-monitors
              with:
                tags: "{{service_tag}}"
            - name: check-rollout
              type: call
              call: sap-pw.get-rollout
              with:
                firmware_version: "{{firmware_version}}"
            - name: post-status
              type: call
              call: slack-pw.post-message
              with:
                channel: "energy-ops"
                text: "Powerwall FW Rollout: {{firmware_version}} | Monitors: {{check-monitors.total_count}} alerts | Progress: {{check-rollout.rollout_percentage}}% | Status: {{check-rollout.status}}"
  consumes:
    - type: http
      namespace: dd-pw
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: monitors
          path: "/monitor"
          inputParameters:
            - name: tags
              in: query
          operations:
            - name: get-monitors
              method: GET
    - type: http
      namespace: sap-pw
      baseUri: "https://tesla-s4.sap.com/sap/opu/odata/sap/API_PRODUCTION_ORDER_2_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: rollout
          path: "/FirmwareRollout"
          inputParameters:
            - name: firmware_version
              in: query
          operations:
            - name: get-rollout
              method: GET
    - type: http
      namespace: slack-pw
      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

When Datadog detects anomalies in solar inverter telemetry, creates a Salesforce service case and notifies the energy ops team in Slack.

naftiko: "0.5"
info:
  label: "Datadog Solar Inverter Anomaly Handler"
  description: "When Datadog detects anomalies in solar inverter telemetry, creates a Salesforce service case and notifies the energy ops team in Slack."
  tags:
    - energy
    - datadog
    - salesforce
    - slack
capability:
  exposes:
    - type: mcp
      namespace: solar-ops
      port: 8080
      tools:
        - name: handle-inverter-anomaly
          description: "Given a Datadog monitor ID for solar inverter anomalies, retrieve alert details, create a Salesforce service case, and notify energy ops in Slack."
          inputParameters:
            - name: monitor_id
              in: body
              type: integer
              description: "Datadog monitor ID for the inverter anomaly."
            - name: site_id
              in: body
              type: string
              description: "Solar installation site identifier."
          steps:
            - name: get-monitor
              type: call
              call: dd-solar.get-monitor
              with:
                monitor_id: "{{monitor_id}}"
            - name: create-case
              type: call
              call: sf-energy.create-case
              with:
                subject: "Inverter anomaly at site {{site_id}}: {{get-monitor.name}}"
                description: "Datadog detected anomaly on monitor {{monitor_id}} at solar site {{site_id}}."
                priority: "High"
            - name: notify-energy-ops
              type: call
              call: slack-energy.post-message
              with:
                channel: "energy-ops"
                text: "SOLAR ANOMALY: Site {{site_id}} | {{get-monitor.name}} | Case: {{create-case.id}}"
  consumes:
    - type: http
      namespace: dd-solar
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: monitors
          path: "/monitor/{{monitor_id}}"
          inputParameters:
            - name: monitor_id
              in: path
          operations:
            - name: get-monitor
              method: GET
    - type: http
      namespace: sf-energy
      baseUri: "https://tesla.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
    - type: http
      namespace: slack-energy
      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

Checks the uptime SLO for Supercharger network monitoring in Datadog.

naftiko: "0.5"
info:
  label: "Datadog Supercharger Uptime Check"
  description: "Checks the uptime SLO for Supercharger network monitoring in Datadog."
  tags:
    - operations
    - datadog
    - supercharger
capability:
  exposes:
    - type: mcp
      namespace: charger-ops
      port: 8080
      tools:
        - name: get-slo-status
          description: "Given a Datadog SLO ID, return the current Supercharger uptime SLO status. Use for network reliability dashboards."
          inputParameters:
            - name: slo_id
              in: body
              type: string
              description: "Datadog SLO ID for Supercharger uptime."
          call: "dd-charger.get-slo"
          with:
            slo_id: "{{slo_id}}"
          outputParameters:
            - name: slo
              type: object
              mapping: "$"
  consumes:
    - type: http
      namespace: dd-charger
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: slos
          path: "/slo/{{slo_id}}"
          inputParameters:
            - name: slo_id
              in: path
          operations:
            - name: get-slo
              method: GET

When Datadog detects anomalies in Tesla vehicle telemetry data ingestion, creates a Jira P1 incident and notifies the vehicle data engineering team in Slack.

naftiko: "0.5"
info:
  label: "Datadog Vehicle Telemetry P1 Alert"
  description: "When Datadog detects anomalies in Tesla vehicle telemetry data ingestion, creates a Jira P1 incident and notifies the vehicle data engineering team in Slack."
  tags:
    - devops
    - datadog
    - jira
    - slack
    - incident-response
    - manufacturing
capability:
  exposes:
    - type: mcp
      namespace: telemetry-ops
      port: 8080
      tools:
        - name: handle-telemetry-alert
          description: "Given a Datadog monitor ID for vehicle telemetry ingestion, retrieve monitor details, open a Jira P1 incident, and alert the #vehicle-data-eng Slack channel. Use from Datadog webhook triggers on telemetry pipeline SLO violations."
          inputParameters:
            - name: monitor_id
              in: body
              type: integer
              description: "Datadog monitor ID that fired the telemetry alert."
            - name: alert_message
              in: body
              type: string
              description: "Alert body from the Datadog notification."
            - name: pipeline_name
              in: body
              type: string
              description: "Name of the telemetry pipeline experiencing the issue."
          steps:
            - name: get-monitor
              type: call
              call: dd-telemetry.get-monitor
              with:
                monitor_id: "{{monitor_id}}"
            - name: create-p1
              type: call
              call: jira-telemetry.create-issue
              with:
                project_key: "DATA"
                issuetype: "Incident"
                summary: "P1: Telemetry pipeline {{pipeline_name}} alert — {{alert_message}}"
                description: "Datadog monitor {{monitor_id}} ({{get-monitor.name}}) fired for pipeline {{pipeline_name}}. Alert: {{alert_message}}"
                priority: "Highest"
            - name: notify-data-eng
              type: call
              call: slack-data.post-message
              with:
                channel: "vehicle-data-eng"
                text: "P1 TELEMETRY ALERT: {{pipeline_name}} | {{alert_message}} | Monitor: {{monitor_id}} | Jira: {{create-p1.key}}"
  consumes:
    - type: http
      namespace: dd-telemetry
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: monitors
          path: "/monitor/{{monitor_id}}"
          inputParameters:
            - name: monitor_id
              in: path
          operations:
            - name: get-monitor
              method: GET
    - type: http
      namespace: jira-telemetry
      baseUri: "https://tesla.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-data
      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

Validates Autopilot model training metrics in Snowflake before approving a GitHub release deployment, with Slack notification on pass or fail.

naftiko: "0.5"
info:
  label: "GitHub Autopilot Model Deployment Gate"
  description: "Validates Autopilot model training metrics in Snowflake before approving a GitHub release deployment, with Slack notification on pass or fail."
  tags:
    - ai
    - github
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: autopilot-deploy
      port: 8080
      tools:
        - name: handle-model-deployment-gate
          description: "Given a GitHub release tag and model ID, validate training metrics in Snowflake and approve or reject the deployment with Slack notification."
          inputParameters:
            - name: release_tag
              in: body
              type: string
              description: "GitHub release tag for the Autopilot model."
            - name: model_id
              in: body
              type: string
              description: "Model identifier for training metrics lookup."
          steps:
            - name: check-metrics
              type: call
              call: snowflake-ml.run-query
              with:
                model_id: "{{model_id}}"
            - name: get-release
              type: call
              call: github-releases.get-release
              with:
                tag: "{{release_tag}}"
            - name: notify-team
              type: call
              call: slack-ml.post-message
              with:
                channel: "autopilot-deployments"
                text: "Model Deployment Gate: {{release_tag}} | Model: {{model_id}} | Metrics: {{check-metrics.accuracy}} accuracy | Release: {{get-release.html_url}}"
  consumes:
    - type: http
      namespace: snowflake-ml
      baseUri: "https://tesla.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: github-releases
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: releases
          path: "/repos/tesla/autopilot/releases/tags/{{tag}}"
          inputParameters:
            - name: tag
              in: path
          operations:
            - name: get-release
              method: GET
    - type: http
      namespace: slack-ml
      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 the review status of a pull request in the Autopilot repository.

naftiko: "0.5"
info:
  label: "GitHub Autopilot PR Status"
  description: "Retrieves the review status of a pull request in the Autopilot repository."
  tags:
    - engineering
    - github
    - autopilot
capability:
  exposes:
    - type: mcp
      namespace: autopilot-dev
      port: 8080
      tools:
        - name: get-pr-status
          description: "Given a PR number, return the review status of an Autopilot pull request. Use for merge readiness checks."
          inputParameters:
            - name: pr_number
              in: body
              type: integer
              description: "Pull request number to check."
          call: "github-ap.get-pr"
          with:
            pr_number: "{{pr_number}}"
          outputParameters:
            - name: pr
              type: object
              mapping: "$"
  consumes:
    - type: http
      namespace: github-ap
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: pulls
          path: "/repos/tesla/autopilot/pulls/{{pr_number}}"
          inputParameters:
            - name: pr_number
              in: path
          operations:
            - name: get-pr
              method: GET

When a GitHub Actions production pipeline fails, creates a Jira engineering incident, posts a Slack alert to the engineering team, and creates a Datadog deployment failure event.

naftiko: "0.5"
info:
  label: "GitHub CI/CD Pipeline Failure Triage"
  description: "When a GitHub Actions production pipeline fails, creates a Jira engineering incident, posts a Slack alert to the engineering team, and creates a Datadog deployment failure event."
  tags:
    - devops
    - github
    - jira
    - slack
    - datadog
    - cicd
    - incident-response
capability:
  exposes:
    - type: mcp
      namespace: deploy-ops
      port: 8080
      tools:
        - name: handle-pipeline-failure
          description: "Given a GitHub workflow run ID, repo, branch, failed job, and commit SHA, fetch run details, open a Jira incident, alert the #engineering-alerts Slack channel, and create a Datadog deployment failure event. Use on production GitHub Actions failure webhooks."
          inputParameters:
            - name: workflow_run_id
              in: body
              type: integer
              description: "GitHub Actions workflow run ID that failed."
            - name: repo
              in: body
              type: string
              description: "GitHub repository in owner/repo format."
            - name: branch
              in: body
              type: string
              description: "Git branch the workflow ran on."
            - name: failed_job
              in: body
              type: string
              description: "Name of the failing job."
            - name: commit_sha
              in: body
              type: string
              description: "Commit SHA that triggered the failure."
          steps:
            - name: get-run-details
              type: call
              call: github-runs.get-workflow-run
              with:
                repo: "{{repo}}"
                run_id: "{{workflow_run_id}}"
            - name: create-incident
              type: call
              call: jira-incidents.create-issue
              with:
                project_key: "ENG"
                issuetype: "Bug"
                summary: "CI failure: {{repo}} {{branch}} — {{failed_job}}"
                description: "Workflow {{workflow_run_id}} failed on {{branch}} ({{commit_sha}}). Job: {{failed_job}}. URL: {{get-run-details.html_url}}"
            - name: alert-slack
              type: call
              call: slack-eng.post-message
              with:
                channel: "engineering-alerts"
                text: "PIPELINE FAILURE: {{repo}} | Branch: {{branch}} | Job: {{failed_job}} | Jira: {{create-incident.key}} | {{get-run-details.html_url}}"
            - name: create-dd-event
              type: call
              call: datadog-deploy.create-event
              with:
                title: "Deployment failure: {{repo}} {{branch}}"
                text: "Job {{failed_job}} failed on {{commit_sha}}"
                tags: "repo:{{repo}},branch:{{branch}},env:production"
  consumes:
    - type: http
      namespace: github-runs
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: workflow-runs
          path: "/repos/{{repo}}/actions/runs/{{run_id}}"
          inputParameters:
            - name: repo
              in: path
            - name: run_id
              in: path
          operations:
            - name: get-workflow-run
              method: GET
    - type: http
      namespace: jira-incidents
      baseUri: "https://tesla.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-eng
      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
    - type: http
      namespace: datadog-deploy
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: events
          path: "/events"
          operations:
            - name: create-event
              method: POST

Checks the CI status of a branch in a Tesla Dojo training repository.

naftiko: "0.5"
info:
  label: "GitHub Dojo Repo Branch Status"
  description: "Checks the CI status of a branch in a Tesla Dojo training repository."
  tags:
    - engineering
    - github
    - dojo
capability:
  exposes:
    - type: mcp
      namespace: dojo-eng
      port: 8080
      tools:
        - name: get-branch-status
          description: "Given a branch name, return the CI status in the Dojo training repository. Use before merging training pipeline changes."
          inputParameters:
            - name: branch_name
              in: body
              type: string
              description: "Branch name to check status for."
          call: "github-dojo.get-branch"
          with:
            branch_name: "{{branch_name}}"
          outputParameters:
            - name: branch
              type: object
              mapping: "$"
  consumes:
    - type: http
      namespace: github-dojo
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: branches
          path: "/repos/tesla/dojo-training/branches/{{branch_name}}"
          inputParameters:
            - name: branch_name
              in: path
          operations:
            - name: get-branch
              method: GET

Monitors Dojo training pipeline CI status in GitHub, checks training metrics in Snowflake, and reports completion to the AI team Slack channel.

naftiko: "0.5"
info:
  label: "GitHub Dojo Training Pipeline Monitor"
  description: "Monitors Dojo training pipeline CI status in GitHub, checks training metrics in Snowflake, and reports completion to the AI team Slack channel."
  tags:
    - ai
    - github
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: dojo-pipeline
      port: 8080
      tools:
        - name: handle-dojo-pipeline
          description: "Given a GitHub workflow run ID, check CI status, validate training metrics in Snowflake, and report to the AI team in Slack."
          inputParameters:
            - name: run_id
              in: body
              type: integer
              description: "GitHub Actions workflow run ID."
            - name: model_name
              in: body
              type: string
              description: "Name of the training model."
          steps:
            - name: get-run
              type: call
              call: github-dojo.get-run
              with:
                run_id: "{{run_id}}"
            - name: check-metrics
              type: call
              call: snowflake-dojo.run-query
              with:
                model_name: "{{model_name}}"
            - name: notify-ai-team
              type: call
              call: slack-ai.post-message
              with:
                channel: "dojo-training"
                text: "Dojo Pipeline: {{model_name}} | CI: {{get-run.conclusion}} | Accuracy: {{check-metrics.accuracy}} | Loss: {{check-metrics.loss}}"
  consumes:
    - type: http
      namespace: github-dojo
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: runs
          path: "/repos/tesla/dojo-training/actions/runs/{{run_id}}"
          inputParameters:
            - name: run_id
              in: path
          operations:
            - name: get-run
              method: GET
    - type: http
      namespace: snowflake-dojo
      baseUri: "https://tesla.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: slack-ai
      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

Orchestrates firmware OTA release by validating test results in Snowflake, creating a GitHub release, and notifying the fleet ops Slack channel.

naftiko: "0.5"
info:
  label: "GitHub Firmware OTA Release Pipeline"
  description: "Orchestrates firmware OTA release by validating test results in Snowflake, creating a GitHub release, and notifying the fleet ops Slack channel."
  tags:
    - engineering
    - github
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: ota-release
      port: 8080
      tools:
        - name: handle-ota-release
          description: "Given a firmware version and repository, validate test results in Snowflake, create a GitHub release, and notify fleet ops in Slack."
          inputParameters:
            - name: firmware_version
              in: body
              type: string
              description: "Firmware version tag to release."
            - name: repo_name
              in: body
              type: string
              description: "GitHub repository for the firmware."
          steps:
            - name: validate-tests
              type: call
              call: snowflake-ota.run-query
              with:
                firmware_version: "{{firmware_version}}"
            - name: create-release
              type: call
              call: github-ota.create-release
              with:
                tag_name: "{{firmware_version}}"
                name: "OTA Release {{firmware_version}}"
                body: "Firmware OTA release {{firmware_version}}. Test pass rate: {{validate-tests.pass_rate}}%"
            - name: notify-fleet
              type: call
              call: slack-fleet.post-message
              with:
                channel: "fleet-ops"
                text: "OTA RELEASE: {{firmware_version}} | Tests: {{validate-tests.pass_rate}}% pass | Release: {{create-release.html_url}}"
  consumes:
    - type: http
      namespace: snowflake-ota
      baseUri: "https://tesla.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: github-ota
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: releases
          path: "/repos/tesla/{{repo_name}}/releases"
          operations:
            - name: create-release
              method: POST
    - type: http
      namespace: slack-fleet
      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 the latest firmware release tag from a Tesla firmware repository on GitHub.

naftiko: "0.5"
info:
  label: "GitHub Firmware Release Tag Lookup"
  description: "Retrieves the latest firmware release tag from a Tesla firmware repository on GitHub."
  tags:
    - engineering
    - github
    - firmware
capability:
  exposes:
    - type: mcp
      namespace: firmware-ops
      port: 8080
      tools:
        - name: get-latest-release
          description: "Given a repository name, return the latest firmware release tag. Use for OTA deployment validation."
          inputParameters:
            - name: repo_name
              in: body
              type: string
              description: "GitHub repository name for firmware."
          call: "github-fw.get-release"
          with:
            repo_name: "{{repo_name}}"
          outputParameters:
            - name: release
              type: object
              mapping: "$"
  consumes:
    - type: http
      namespace: github-fw
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: releases
          path: "/repos/tesla/{{repo_name}}/releases/latest"
          inputParameters:
            - name: repo_name
              in: path
          operations:
            - name: get-release
              method: GET

When a Terraform PR is opened in the infrastructure repo, runs a plan validation and posts the summary to the platform team Slack channel.

naftiko: "0.5"
info:
  label: "GitHub Infra Terraform Plan Review"
  description: "When a Terraform PR is opened in the infrastructure repo, runs a plan validation and posts the summary to the platform team Slack channel."
  tags:
    - infrastructure
    - github
    - slack
    - terraform
capability:
  exposes:
    - type: mcp
      namespace: infra-review
      port: 8080
      tools:
        - name: handle-terraform-plan
          description: "Given a GitHub PR number in the infrastructure repo, retrieve plan details and post a review summary to the platform team Slack channel."
          inputParameters:
            - name: pr_number
              in: body
              type: integer
              description: "GitHub pull request number."
          steps:
            - name: get-pr
              type: call
              call: github-infra.get-pr
              with:
                pr_number: "{{pr_number}}"
            - name: get-checks
              type: call
              call: github-infra.get-checks
              with:
                ref: "{{get-pr.head.sha}}"
            - name: notify-platform
              type: call
              call: slack-platform.post-message
              with:
                channel: "platform-engineering"
                text: "TERRAFORM PR: #{{pr_number}} — {{get-pr.title}} | Checks: {{get-checks.total_count}} | Status: {{get-checks.conclusion}} | Review: {{get-pr.html_url}}"
  consumes:
    - type: http
      namespace: github-infra
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: pulls
          path: "/repos/tesla/infrastructure/pulls/{{pr_number}}"
          inputParameters:
            - name: pr_number
              in: path
          operations:
            - name: get-pr
              method: GET
        - name: checks
          path: "/repos/tesla/infrastructure/commits/{{ref}}/check-runs"
          inputParameters:
            - name: ref
              in: path
          operations:
            - name: get-checks
              method: GET
    - type: http
      namespace: slack-platform
      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

Tracks ML experiment results from GitHub Actions, logs metrics to Snowflake, and posts training run summaries to the ML team Slack channel.

naftiko: "0.5"
info:
  label: "GitHub ML Experiment Tracker"
  description: "Tracks ML experiment results from GitHub Actions, logs metrics to Snowflake, and posts training run summaries to the ML team Slack channel."
  tags:
    - ai
    - github
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: ml-experiments
      port: 8080
      tools:
        - name: handle-ml-experiment
          description: "Given a GitHub Actions run ID and experiment name, track results, log to Snowflake, and post a summary to the ML team Slack channel."
          inputParameters:
            - name: run_id
              in: body
              type: integer
              description: "GitHub Actions workflow run ID."
            - name: experiment_name
              in: body
              type: string
              description: "Name of the ML experiment."
          steps:
            - name: get-run
              type: call
              call: github-ml.get-run
              with:
                run_id: "{{run_id}}"
            - name: log-metrics
              type: call
              call: snowflake-ml.run-query
              with:
                experiment: "{{experiment_name}}"
                run_id: "{{run_id}}"
            - name: notify-ml
              type: call
              call: slack-ml.post-message
              with:
                channel: "ml-experiments"
                text: "ML Experiment: {{experiment_name}} | Run: {{run_id}} | Status: {{get-run.conclusion}} | Logged to Snowflake"
  consumes:
    - type: http
      namespace: github-ml
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: runs
          path: "/repos/tesla/ml-platform/actions/runs/{{run_id}}"
          inputParameters:
            - name: run_id
              in: path
          operations:
            - name: get-run
              method: GET
    - type: http
      namespace: snowflake-ml
      baseUri: "https://tesla.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: slack-ml
      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

When a pull request is opened in a Tesla engineering repository, automatically assigns reviewers based on file ownership and posts a review request to the team's Slack channel.

naftiko: "0.5"
info:
  label: "GitHub PR Code Review Assignment"
  description: "When a pull request is opened in a Tesla engineering repository, automatically assigns reviewers based on file ownership and posts a review request to the team's Slack channel."
  tags:
    - devops
    - github
    - slack
    - code-review
    - engineering
capability:
  exposes:
    - type: mcp
      namespace: review-ops
      port: 8080
      tools:
        - name: assign-pr-reviewers
          description: "Given a GitHub PR number, repo, reviewer list, and Slack channel, assign the reviewers to the pull request and post a review request notification to the team channel. Use as a post-PR-open webhook handler for automated code review assignment."
          inputParameters:
            - name: pr_number
              in: body
              type: integer
              description: "GitHub pull request number to assign reviewers to."
            - name: owner
              in: body
              type: string
              description: "GitHub repository owner or organization name."
            - name: repo
              in: body
              type: string
              description: "GitHub repository name."
            - name: reviewers
              in: body
              type: string
              description: "Comma-separated list of GitHub usernames to assign as reviewers."
            - name: slack_channel
              in: body
              type: string
              description: "Slack channel to post the review request notification."
          steps:
            - name: get-pr
              type: call
              call: github-prs.get-pull-request
              with:
                owner: "{{owner}}"
                repo: "{{repo}}"
                pull_number: "{{pr_number}}"
            - name: assign-reviewers
              type: call
              call: github-review-req.request-reviewers
              with:
                owner: "{{owner}}"
                repo: "{{repo}}"
                pull_number: "{{pr_number}}"
                reviewers: "{{reviewers}}"
            - name: notify-team
              type: call
              call: slack-review.post-message
              with:
                channel: "{{slack_channel}}"
                text: "Review requested: {{get-pr.title}} (PR #{{pr_number}}) in {{repo}} — reviewers: {{reviewers}} | {{get-pr.html_url}}"
  consumes:
    - type: http
      namespace: github-prs
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: pull-requests
          path: "/repos/{{owner}}/{{repo}}/pulls/{{pull_number}}"
          inputParameters:
            - name: owner
              in: path
            - name: repo
              in: path
            - name: pull_number
              in: path
          operations:
            - name: get-pull-request
              method: GET
    - type: http
      namespace: github-review-req
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: review-requests
          path: "/repos/{{owner}}/{{repo}}/pulls/{{pull_number}}/requested_reviewers"
          inputParameters:
            - name: owner
              in: path
            - name: repo
              in: path
            - name: pull_number
              in: path
          operations:
            - name: request-reviewers
              method: POST
    - type: http
      namespace: slack-review
      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

When a GitHub release is published, triggers a deployment workflow, creates a Datadog deployment marker, and posts a release announcement to the engineering Slack channel.

naftiko: "0.5"
info:
  label: "GitHub Release Deployment with Datadog Marker"
  description: "When a GitHub release is published, triggers a deployment workflow, creates a Datadog deployment marker, and posts a release announcement to the engineering Slack channel."
  tags:
    - devops
    - github
    - datadog
    - slack
    - deployment
    - release-management
capability:
  exposes:
    - type: mcp
      namespace: release-deploy
      port: 8080
      tools:
        - name: deploy-github-release
          description: "Given a GitHub release tag, repo, and service name, trigger the deployment workflow, create a Datadog deployment marker, and announce the release to the #releases Slack channel. Use when a GitHub release is published for a production deployment."
          inputParameters:
            - name: release_tag
              in: body
              type: string
              description: "GitHub release tag name (e.g. v2026.8.1)."
            - name: owner
              in: body
              type: string
              description: "GitHub organization or owner name."
            - name: repo
              in: body
              type: string
              description: "GitHub repository name."
            - name: service_name
              in: body
              type: string
              description: "Name of the service being deployed."
          steps:
            - name: trigger-deploy-workflow
              type: call
              call: github-release-dispatch.trigger-dispatch
              with:
                owner: "{{owner}}"
                repo: "{{repo}}"
                event_type: "production-deploy"
                client_payload: "{{release_tag}}"
            - name: create-dd-marker
              type: call
              call: dd-release.create-event
              with:
                title: "Release: {{service_name}} {{release_tag}}"
                text: "GitHub release {{release_tag}} deployed to production from {{repo}}"
                tags: "service:{{service_name}},version:{{release_tag}},env:production"
            - name: announce-release
              type: call
              call: slack-releases.post-message
              with:
                channel: "releases"
                text: "Released: {{service_name}} {{release_tag}} deployed to production. GitHub: {{owner}}/{{repo}} | Datadog tracking active."
  consumes:
    - type: http
      namespace: github-release-dispatch
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: dispatches
          path: "/repos/{{owner}}/{{repo}}/dispatches"
          inputParameters:
            - name: owner
              in: path
            - name: repo
              in: path
          operations:
            - name: trigger-dispatch
              method: POST
    - type: http
      namespace: dd-release
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: events
          path: "/events"
          operations:
            - name: create-event
              method: POST
    - type: http
      namespace: slack-releases
      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

When a CI pipeline fails in the Optimus robotics repository, creates a Jira bug and notifies the robotics engineering Slack channel.

naftiko: "0.5"
info:
  label: "GitHub Robotics CI Failure Handler"
  description: "When a CI pipeline fails in the Optimus robotics repository, creates a Jira bug and notifies the robotics engineering Slack channel."
  tags:
    - robotics
    - github
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: robotics-ci
      port: 8080
      tools:
        - name: handle-robotics-ci-failure
          description: "Given a GitHub Actions run ID for a failed Optimus CI pipeline, create a Jira bug and notify robotics engineering in Slack."
          inputParameters:
            - name: run_id
              in: body
              type: integer
              description: "GitHub Actions workflow run ID."
            - name: branch
              in: body
              type: string
              description: "Branch name that failed CI."
          steps:
            - name: get-run
              type: call
              call: github-robotics.get-run
              with:
                run_id: "{{run_id}}"
            - name: create-bug
              type: call
              call: jira-robotics.create-issue
              with:
                project_key: "OPT"
                issuetype: "Bug"
                summary: "CI failure: {{branch}} — {{get-run.name}}"
                description: "GitHub Actions run {{run_id}} failed on branch {{branch}}. Conclusion: {{get-run.conclusion}}"
            - name: notify-robotics
              type: call
              call: slack-robotics.post-message
              with:
                channel: "robotics-engineering"
                text: "CI FAILURE: Optimus/{{branch}} | {{get-run.name}} | Jira: {{create-bug.key}} | Run: {{get-run.html_url}}"
  consumes:
    - type: http
      namespace: github-robotics
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: runs
          path: "/repos/tesla/optimus/actions/runs/{{run_id}}"
          inputParameters:
            - name: run_id
              in: path
          operations:
            - name: get-run
              method: GET
    - type: http
      namespace: jira-robotics
      baseUri: "https://tesla.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-robotics
      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

Processes GitHub security scan results, creates Jira vulnerabilities for critical findings, and notifies the security team in Slack.

naftiko: "0.5"
info:
  label: "GitHub Security Scan to Jira Vulnerability"
  description: "Processes GitHub security scan results, creates Jira vulnerabilities for critical findings, and notifies the security team in Slack."
  tags:
    - security
    - github
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: appsec-ops
      port: 8080
      tools:
        - name: handle-security-scan
          description: "Given a GitHub repository and alert number, create a Jira security vulnerability ticket and notify the security team in Slack."
          inputParameters:
            - name: repo_name
              in: body
              type: string
              description: "GitHub repository name."
            - name: alert_number
              in: body
              type: integer
              description: "GitHub security alert number."
          steps:
            - name: get-alert
              type: call
              call: github-sec.get-alert
              with:
                repo_name: "{{repo_name}}"
                alert_number: "{{alert_number}}"
            - name: create-vuln
              type: call
              call: jira-sec.create-issue
              with:
                project_key: "SEC"
                issuetype: "Bug"
                summary: "Security: {{get-alert.rule.description}} in {{repo_name}}"
                priority: "Critical"
            - name: notify-security
              type: call
              call: slack-sec.post-message
              with:
                channel: "security-alerts"
                text: "SECURITY FINDING: {{repo_name}} | {{get-alert.rule.description}} | Severity: {{get-alert.rule.severity}} | Jira: {{create-vuln.key}}"
  consumes:
    - type: http
      namespace: github-sec
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: alerts
          path: "/repos/tesla/{{repo_name}}/code-scanning/alerts/{{alert_number}}"
          inputParameters:
            - name: repo_name
              in: path
            - name: alert_number
              in: path
          operations:
            - name: get-alert
              method: GET
    - type: http
      namespace: jira-sec
      baseUri: "https://tesla.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-sec
      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

Fetches critical Dependabot security alerts from Tesla engineering repositories and creates Jira security tickets for immediate remediation tracking.

naftiko: "0.5"
info:
  label: "GitHub Security Vulnerability Alert"
  description: "Fetches critical Dependabot security alerts from Tesla engineering repositories and creates Jira security tickets for immediate remediation tracking."
  tags:
    - devops
    - github
    - jira
    - security
    - vulnerability-management
capability:
  exposes:
    - type: mcp
      namespace: security-ops
      port: 8080
      tools:
        - name: triage-security-alerts
          description: "Given a GitHub owner and repo, fetch critical-severity Dependabot alerts and open a Jira security ticket for each. Use as a daily security scanning agent across Tesla's vehicle software and cloud repositories."
          inputParameters:
            - name: owner
              in: body
              type: string
              description: "GitHub organization name (e.g. teslamotors)."
            - name: repo
              in: body
              type: string
              description: "GitHub repository name to scan."
          steps:
            - name: get-alerts
              type: call
              call: github-sec.get-dependabot-alerts
              with:
                owner: "{{owner}}"
                repo: "{{repo}}"
                severity: "critical"
            - name: create-sec-ticket
              type: call
              call: jira-security.create-issue
              with:
                project_key: "SEC"
                issuetype: "Bug"
                summary: "Critical vulnerabilities in {{repo}}: {{get-alerts.total_count}} alerts"
                description: "Critical Dependabot alerts in {{owner}}/{{repo}}. Count: {{get-alerts.total_count}}. Immediate remediation required."
  consumes:
    - type: http
      namespace: github-sec
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: dependabot-alerts
          path: "/repos/{{owner}}/{{repo}}/dependabot/alerts"
          inputParameters:
            - name: owner
              in: path
            - name: repo
              in: path
            - name: severity
              in: query
          operations:
            - name: get-dependabot-alerts
              method: GET
    - type: http
      namespace: jira-security
      baseUri: "https://tesla.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

Returns the current count of open bugs in the Autopilot Jira project.

naftiko: "0.5"
info:
  label: "Jira Autopilot Bug Count"
  description: "Returns the current count of open bugs in the Autopilot Jira project."
  tags:
    - engineering
    - jira
    - autopilot
capability:
  exposes:
    - type: mcp
      namespace: autopilot-eng
      port: 8080
      tools:
        - name: get-bug-count
          description: "Given a priority filter, return the count of open Autopilot bugs in Jira. Use for sprint planning and quality tracking."
          inputParameters:
            - name: priority
              in: body
              type: string
              description: "Bug priority filter (e.g. High, Critical)."
          call: "jira-ap.search-issues"
          with:
            jql: "project = AP AND type = Bug AND status != Done AND priority = {{priority}}"
          outputParameters:
            - name: total
              type: number
              mapping: "$.total"
  consumes:
    - type: http
      namespace: jira-ap
      baseUri: "https://tesla.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: search
          path: "/search"
          inputParameters:
            - name: jql
              in: query
          operations:
            - name: search-issues
              method: GET

Escalates a battery manufacturing defect from Jira to a P1 incident, creates an SAP quality notification, and alerts engineering in Slack.

naftiko: "0.5"
info:
  label: "Jira Battery Defect Escalation"
  description: "Escalates a battery manufacturing defect from Jira to a P1 incident, creates an SAP quality notification, and alerts engineering in Slack."
  tags:
    - manufacturing
    - jira
    - sap
    - slack
capability:
  exposes:
    - type: mcp
      namespace: battery-quality
      port: 8080
      tools:
        - name: handle-battery-defect
          description: "Given a Jira issue key for a battery defect, escalate to P1, create an SAP quality notification, and alert the battery engineering Slack channel."
          inputParameters:
            - name: issue_key
              in: body
              type: string
              description: "Jira issue key for the battery defect."
            - name: defect_type
              in: body
              type: string
              description: "Type of battery defect detected."
          steps:
            - name: get-issue
              type: call
              call: jira-battery.get-issue
              with:
                issue_key: "{{issue_key}}"
            - name: create-quality-notification
              type: call
              call: sap-quality.create-notification
              with:
                notification_type: "Q2"
                description: "Battery defect {{defect_type}} from Jira {{issue_key}}: {{get-issue.fields.summary}}"
            - name: notify-engineering
              type: call
              call: slack-battery.post-message
              with:
                channel: "battery-engineering"
                text: "P1 BATTERY DEFECT: {{issue_key}} | Type: {{defect_type}} | SAP QN: {{create-quality-notification.NotificationNumber}} | {{get-issue.fields.summary}}"
  consumes:
    - type: http
      namespace: jira-battery
      baseUri: "https://tesla.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue/{{issue_key}}"
          inputParameters:
            - name: issue_key
              in: path
          operations:
            - name: get-issue
              method: GET
    - type: http
      namespace: sap-quality
      baseUri: "https://tesla-s4.sap.com/sap/opu/odata/sap/API_QUALITYNOTIFICATION_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: notifications
          path: "/QualityNotification"
          operations:
            - name: create-notification
              method: POST
    - type: http
      namespace: slack-battery
      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

Fetches open high-priority Jira bugs across engineering projects, and posts a prioritized morning digest to the engineering Slack channel to focus daily triage effort.

naftiko: "0.5"
info:
  label: "Jira Bug Triage Morning Digest"
  description: "Fetches open high-priority Jira bugs across engineering projects, and posts a prioritized morning digest to the engineering Slack channel to focus daily triage effort."
  tags:
    - devops
    - jira
    - slack
    - reporting
    - engineering
    - triage
capability:
  exposes:
    - type: mcp
      namespace: triage-ops
      port: 8080
      tools:
        - name: publish-bug-triage-digest
          description: "Given a Jira project key, fetch all open critical and high-priority bugs ordered by creation date, and post a triage digest to the #engineering Slack channel. Use as a daily 8am scheduled agent."
          inputParameters:
            - name: project_key
              in: body
              type: string
              description: "Jira project key to query for open high-priority bugs."
          steps:
            - name: get-bugs
              type: call
              call: jira-triage.search-issues
              with:
                jql: "project={{project_key}} AND issuetype=Bug AND priority in (Critical, High) AND status!=Done ORDER BY created ASC"
            - name: post-triage
              type: call
              call: slack-triage.post-message
              with:
                channel: "engineering"
                text: "Bug triage digest for {{project_key}}: {{get-bugs.total}} open critical/high bugs. Top items require immediate attention. Review in Jira."
  consumes:
    - type: http
      namespace: jira-triage
      baseUri: "https://tesla.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issue-search
          path: "/issue/search"
          inputParameters:
            - name: jql
              in: query
          operations:
            - name: search-issues
              method: GET
    - type: http
      namespace: slack-triage
      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

Identifies cross-team dependencies in Jira, checks blocked items, and posts a dependency status report to the program management Slack channel.

naftiko: "0.5"
info:
  label: "Jira Cross-Team Dependency Tracker"
  description: "Identifies cross-team dependencies in Jira, checks blocked items, and posts a dependency status report to the program management Slack channel."
  tags:
    - project-management
    - jira
    - slack
    - dependencies
capability:
  exposes:
    - type: mcp
      namespace: dependency-ops
      port: 8080
      tools:
        - name: handle-dependency-tracking
          description: "Given a Jira project key, identify cross-team dependencies and blocked items, then post a status report to Slack."
          inputParameters:
            - name: project_key
              in: body
              type: string
              description: "Jira project key to scan for dependencies."
          steps:
            - name: search-blocked
              type: call
              call: jira-deps.search-issues
              with:
                jql: "project = {{project_key}} AND status = Blocked"
            - name: search-dependencies
              type: call
              call: jira-deps.search-issues
              with:
                jql: "project = {{project_key}} AND issueFunction in linkedIssuesOf('project != {{project_key}}')"
            - name: post-report
              type: call
              call: slack-pm.post-message
              with:
                channel: "program-management"
                text: "Dependency Report: {{project_key}} | Blocked: {{search-blocked.total}} | Cross-team deps: {{search-dependencies.total}} | Review in Jira."
  consumes:
    - type: http
      namespace: jira-deps
      baseUri: "https://tesla.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: search
          path: "/search"
          inputParameters:
            - name: jql
              in: query
          operations:
            - name: search-issues
              method: GET
    - type: http
      namespace: slack-pm
      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

Transfers a customer-reported issue from a Salesforce case to a Jira engineering ticket and notifies the engineering team in Slack.

naftiko: "0.5"
info:
  label: "Jira Customer Issue to Engineering Handoff"
  description: "Transfers a customer-reported issue from a Salesforce case to a Jira engineering ticket and notifies the engineering team in Slack."
  tags:
    - support
    - jira
    - salesforce
    - slack
capability:
  exposes:
    - type: mcp
      namespace: support-handoff
      port: 8080
      tools:
        - name: handle-customer-handoff
          description: "Given a Salesforce case ID, create a Jira engineering ticket and notify the engineering team in Slack."
          inputParameters:
            - name: case_id
              in: body
              type: string
              description: "Salesforce case record ID."
            - name: engineering_project
              in: body
              type: string
              description: "Jira project key for the engineering team."
          steps:
            - name: get-case
              type: call
              call: sf-support.get-case
              with:
                case_id: "{{case_id}}"
            - name: create-ticket
              type: call
              call: jira-eng.create-issue
              with:
                project_key: "{{engineering_project}}"
                issuetype: "Bug"
                summary: "Customer issue: {{get-case.Subject}}"
                description: "Escalated from Salesforce case {{case_id}}. Customer: {{get-case.Contact.Name}}. Description: {{get-case.Description}}"
            - name: notify-eng
              type: call
              call: slack-eng.post-message
              with:
                channel: "engineering-escalations"
                text: "CUSTOMER ESCALATION: {{get-case.Subject}} | Case: {{case_id}} | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: sf-support
      baseUri: "https://tesla.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case/{{case_id}}"
          inputParameters:
            - name: case_id
              in: path
          operations:
            - name: get-case
              method: GET
    - type: http
      namespace: jira-eng
      baseUri: "https://tesla.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-eng
      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 the current sprint status for the Tesla Energy product Jira board.

naftiko: "0.5"
info:
  label: "Jira Energy Project Status"
  description: "Retrieves the current sprint status for the Tesla Energy product Jira board."
  tags:
    - project-management
    - jira
    - energy
capability:
  exposes:
    - type: mcp
      namespace: energy-pm
      port: 8080
      tools:
        - name: get-sprint-status
          description: "Given a Jira board ID, return the current sprint status for the Energy project. Use for standup meetings and progress tracking."
          inputParameters:
            - name: board_id
              in: body
              type: integer
              description: "Jira board ID for the Energy project."
          call: "jira-energy.get-sprints"
          with:
            board_id: "{{board_id}}"
          outputParameters:
            - name: sprints
              type: array
              mapping: "$.values"
  consumes:
    - type: http
      namespace: jira-energy
      baseUri: "https://tesla.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"
          inputParameters:
            - name: board_id
              in: path
          operations:
            - name: get-sprints
              method: GET

When a Jira issue is escalated to Critical priority, creates a correlated Datadog event and posts an escalation alert to the engineering on-call Slack channel.

naftiko: "0.5"
info:
  label: "Jira Escalation to Datadog and Slack"
  description: "When a Jira issue is escalated to Critical priority, creates a correlated Datadog event and posts an escalation alert to the engineering on-call Slack channel."
  tags:
    - devops
    - jira
    - datadog
    - slack
    - escalation
    - incident-response
capability:
  exposes:
    - type: mcp
      namespace: escalation-ops
      port: 8080
      tools:
        - name: handle-critical-escalation
          description: "Given a Jira issue key and escalation reason, create a Datadog event for observability correlation and post an escalation alert to the #oncall Slack channel. Use when a Jira issue is promoted to Critical priority."
          inputParameters:
            - name: issue_key
              in: body
              type: string
              description: "Jira issue key being escalated to Critical (e.g. ENG-5678)."
            - name: escalation_reason
              in: body
              type: string
              description: "Reason this issue requires critical-priority handling."
            - name: service_tag
              in: body
              type: string
              description: "Service or component tag for Datadog correlation."
          steps:
            - name: log-dd-escalation
              type: call
              call: dd-escalation.create-event
              with:
                title: "Critical Escalation: {{issue_key}}"
                text: "{{escalation_reason}}"
                tags: "source:jira,priority:critical,service:{{service_tag}}"
            - name: alert-oncall
              type: call
              call: slack-oncall.post-message
              with:
                channel: "oncall"
                text: "CRITICAL ESCALATION: {{issue_key}} | Reason: {{escalation_reason}} | Service: {{service_tag}} | https://tesla.atlassian.net/browse/{{issue_key}}"
  consumes:
    - type: http
      namespace: dd-escalation
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: events
          path: "/events"
          operations:
            - name: create-event
              method: POST
    - type: http
      namespace: slack-oncall
      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

Validates release readiness by checking Jira ticket statuses, Datadog monitor health, and posts a go/no-go summary to the release Slack channel.

naftiko: "0.5"
info:
  label: "Jira Release Readiness Checklist"
  description: "Validates release readiness by checking Jira ticket statuses, Datadog monitor health, and posts a go/no-go summary to the release Slack channel."
  tags:
    - engineering
    - jira
    - datadog
    - slack
capability:
  exposes:
    - type: mcp
      namespace: release-ops
      port: 8080
      tools:
        - name: handle-release-readiness
          description: "Given a Jira fix version and Datadog service tag, validate release readiness and post a go/no-go summary to Slack."
          inputParameters:
            - name: fix_version
              in: body
              type: string
              description: "Jira fix version to check."
            - name: service_tag
              in: body
              type: string
              description: "Datadog service tag for health check."
          steps:
            - name: check-tickets
              type: call
              call: jira-release.search-issues
              with:
                jql: "fixVersion = {{fix_version}} AND status != Done"
            - name: check-health
              type: call
              call: dd-release.get-monitors
              with:
                tags: "{{service_tag}}"
            - name: post-readiness
              type: call
              call: slack-release.post-message
              with:
                channel: "release-management"
                text: "Release Readiness: {{fix_version}} | Open tickets: {{check-tickets.total}} | Monitor alerts: {{check-health.alert_count}} | Decision: review required"
  consumes:
    - type: http
      namespace: jira-release
      baseUri: "https://tesla.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: search
          path: "/search"
          inputParameters:
            - name: jql
              in: query
          operations:
            - name: search-issues
              method: GET
    - type: http
      namespace: dd-release
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "DD-API-KEY"
        value: "$secrets.datadog_api_key"
        placement: header
      resources:
        - name: monitors
          path: "/monitor"
          inputParameters:
            - name: tags
              in: query
          operations:
            - name: get-monitors
              method: GET
    - type: http
      namespace: slack-release
      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

Compiles quarterly roadmap progress from Jira epics across vehicle programs and posts a summary report to the executive Slack channel.

naftiko: "0.5"
info:
  label: "Jira Roadmap Quarterly Status Report"
  description: "Compiles quarterly roadmap progress from Jira epics across vehicle programs and posts a summary report to the executive Slack channel."
  tags:
    - project-management
    - jira
    - slack
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: roadmap-ops
      port: 8080
      tools:
        - name: handle-quarterly-roadmap
          description: "Given a Jira project key and quarter, compile roadmap progress and post an executive summary to Slack."
          inputParameters:
            - name: project_key
              in: body
              type: string
              description: "Jira project key for the vehicle program."
            - name: quarter
              in: body
              type: string
              description: "Quarter identifier (e.g. Q1-2026)."
          steps:
            - name: search-epics
              type: call
              call: jira-roadmap.search-issues
              with:
                jql: "project = {{project_key}} AND type = Epic AND updated >= startOfQuarter()"
            - name: post-summary
              type: call
              call: slack-exec.post-message
              with:
                channel: "executive-updates"
                text: "Quarterly Roadmap ({{quarter}}): {{project_key}} | Total epics: {{search-epics.total}} | Review in Jira for detailed status."
  consumes:
    - type: http
      namespace: jira-roadmap
      baseUri: "https://tesla.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: search
          path: "/search"
          inputParameters:
            - name: jql
              in: query
          operations:
            - name: search-issues
              method: GET
    - type: http
      namespace: slack-exec
      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

At sprint end, gathers Jira sprint metrics, generates a retrospective summary, and posts it to the engineering Slack channel.

naftiko: "0.5"
info:
  label: "Jira Sprint Retrospective Summary"
  description: "At sprint end, gathers Jira sprint metrics, generates a retrospective summary, and posts it to the engineering Slack channel."
  tags:
    - engineering
    - jira
    - slack
    - agile
capability:
  exposes:
    - type: mcp
      namespace: agile-ops
      port: 8080
      tools:
        - name: handle-sprint-retro
          description: "Given a Jira board and sprint ID, compile sprint metrics and post a retrospective summary to the engineering Slack channel."
          inputParameters:
            - name: board_id
              in: body
              type: integer
              description: "Jira board ID."
            - name: sprint_id
              in: body
              type: integer
              description: "Jira sprint ID."
          steps:
            - name: get-sprint
              type: call
              call: jira-agile.get-sprint
              with:
                sprint_id: "{{sprint_id}}"
            - name: get-sprint-issues
              type: call
              call: jira-agile.get-sprint-issues
              with:
                sprint_id: "{{sprint_id}}"
            - name: post-retro
              type: call
              call: slack-eng.post-message
              with:
                channel: "engineering"
                text: "Sprint Retro: {{get-sprint.name}} | Completed: {{get-sprint-issues.total}} issues | Goal: {{get-sprint.goal}}"
  consumes:
    - type: http
      namespace: jira-agile
      baseUri: "https://tesla.atlassian.net/rest/agile/1.0"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: sprints
          path: "/sprint/{{sprint_id}}"
          inputParameters:
            - name: sprint_id
              in: path
          operations:
            - name: get-sprint
              method: GET
        - name: sprint-issues
          path: "/sprint/{{sprint_id}}/issue"
          inputParameters:
            - name: sprint_id
              in: path
          operations:
            - name: get-sprint-issues
              method: GET
    - type: http
      namespace: slack-eng
      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

Fetches completed Jira sprint data, computes story point velocity and burndown metrics, and posts a sprint retrospective summary to the engineering Slack channel.

naftiko: "0.5"
info:
  label: "Jira Sprint Velocity and Burndown Report"
  description: "Fetches completed Jira sprint data, computes story point velocity and burndown metrics, and posts a sprint retrospective summary to the engineering Slack channel."
  tags:
    - devops
    - jira
    - slack
    - reporting
    - agile
    - engineering
capability:
  exposes:
    - type: mcp
      namespace: eng-reporting
      port: 8080
      tools:
        - name: digest-sprint-velocity
          description: "Given a Jira board ID and sprint ID, fetch completed issues with story points, compute velocity, and post a retrospective summary to the designated Slack channel. Use at sprint close for retrospective preparation."
          inputParameters:
            - name: board_id
              in: body
              type: integer
              description: "Jira Scrum board ID."
            - name: sprint_id
              in: body
              type: integer
              description: "Jira sprint ID to report on."
            - name: slack_channel
              in: body
              type: string
              description: "Slack channel to post the sprint summary."
          steps:
            - name: get-sprint-issues
              type: call
              call: jira-sprint.get-sprint-issues
              with:
                board_id: "{{board_id}}"
                sprint_id: "{{sprint_id}}"
            - name: post-velocity
              type: call
              call: slack-agile.post-message
              with:
                channel: "{{slack_channel}}"
                text: "Sprint {{sprint_id}} velocity: {{get-sprint-issues.total}} issues completed. Board: {{board_id}}. Full breakdown in Jira."
  consumes:
    - type: http
      namespace: jira-sprint
      baseUri: "https://tesla.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: sprint-issues
          path: "/board/{{board_id}}/sprint/{{sprint_id}}/issue"
          inputParameters:
            - name: board_id
              in: path
            - name: sprint_id
              in: path
          operations:
            - name: get-sprint-issues
              method: GET
    - type: http
      namespace: slack-agile
      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

Tracks vehicle program milestones in Jira, checks production readiness data in SAP, and posts status updates to the program Slack channel.

naftiko: "0.5"
info:
  label: "Jira Vehicle Program Milestone Tracker"
  description: "Tracks vehicle program milestones in Jira, checks production readiness data in SAP, and posts status updates to the program Slack channel."
  tags:
    - project-management
    - jira
    - sap
    - slack
capability:
  exposes:
    - type: mcp
      namespace: program-ops
      port: 8080
      tools:
        - name: handle-milestone-tracking
          description: "Given a Jira epic key for a vehicle program milestone, check SAP production readiness and post a status update to Slack."
          inputParameters:
            - name: epic_key
              in: body
              type: string
              description: "Jira epic key for the vehicle program milestone."
            - name: plant_code
              in: body
              type: string
              description: "SAP plant code to check readiness."
          steps:
            - name: get-epic
              type: call
              call: jira-program.get-issue
              with:
                issue_key: "{{epic_key}}"
            - name: check-readiness
              type: call
              call: sap-program.get-production-status
              with:
                plant: "{{plant_code}}"
            - name: post-status
              type: call
              call: slack-program.post-message
              with:
                channel: "vehicle-programs"
                text: "Program Milestone: {{get-epic.fields.summary}} | Status: {{get-epic.fields.status.name}} | Plant {{plant_code}} readiness: {{check-readiness.ReadinessStatus}}"
  consumes:
    - type: http
      namespace: jira-program
      baseUri: "https://tesla.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue/{{issue_key}}"
          inputParameters:
            - name: issue_key
              in: path
          operations:
            - name: get-issue
              method: GET
    - type: http
      namespace: sap-program
      baseUri: "https://tesla-s4.sap.com/sap/opu/odata/sap/API_PRODUCTION_ORDER_2_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: production
          path: "/A_ProductionOrder_2"
          inputParameters:
            - name: plant
              in: query
          operations:
            - name: get-production-status
              method: GET
    - type: http
      namespace: slack-program
      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

Given a list of Jira completed tickets for a software release, generates human-readable release notes for Tesla vehicle OTA updates using OpenAI GPT.

naftiko: "0.5"
info:
  label: "OpenAI Vehicle Software Release Notes Generation"
  description: "Given a list of Jira completed tickets for a software release, generates human-readable release notes for Tesla vehicle OTA updates using OpenAI GPT."
  tags:
    - ai
    - openai
    - jira
    - slack
    - automation
    - release-management
capability:
  exposes:
    - type: mcp
      namespace: release-ai
      port: 8080
      tools:
        - name: generate-release-notes
          description: "Given a Jira fix-version name, fetch all resolved issues in the release, send the summary to OpenAI GPT-4o for release notes generation, and post the draft notes to the #releases Slack channel. Use before each vehicle software OTA release."
          inputParameters:
            - name: jira_project
              in: body
              type: string
              description: "Jira project key for the vehicle software project."
            - name: fix_version
              in: body
              type: string
              description: "Jira fixVersion value identifying the release (e.g. v2026.8)."
          steps:
            - name: get-release-issues
              type: call
              call: jira-release.search-issues
              with:
                jql: "project={{jira_project}} AND fixVersion={{fix_version}} AND status=Done"
            - name: generate-notes
              type: call
              call: openai-release.create-completion
              with:
                model: "gpt-4o"
                messages: "[{\"role\":\"system\",\"content\":\"Generate concise, customer-friendly OTA vehicle software release notes from the following Jira issue list. Group by category (Autopilot, Infotainment, Energy, Safety).\"},{\"role\":\"user\",\"content\":\"Release {{fix_version}} issues: {{get-release-issues.issues}}\"}]"
                max_tokens: 600
            - name: post-draft-notes
              type: call
              call: slack-release.post-message
              with:
                channel: "releases"
                text: "Draft OTA release notes for {{fix_version}}: {{generate-notes.choices[0].message.content}}"
  consumes:
    - type: http
      namespace: jira-release
      baseUri: "https://tesla.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issue-search
          path: "/issue/search"
          inputParameters:
            - name: jql
              in: query
          operations:
            - name: search-issues
              method: GET
    - type: http
      namespace: openai-release
      baseUri: "https://api.openai.com/v1"
      authentication:
        type: bearer
        token: "$secrets.openai_api_key"
      resources:
        - name: chat-completions
          path: "/chat/completions"
          operations:
            - name: create-completion
              method: POST
    - type: http
      namespace: slack-release
      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

Compiles charging partner revenue data from Salesforce, enriches with Snowflake usage analytics, and posts to the partnerships Slack channel.

naftiko: "0.5"
info:
  label: "Salesforce Charging Partner Revenue Report"
  description: "Compiles charging partner revenue data from Salesforce, enriches with Snowflake usage analytics, and posts to the partnerships Slack channel."
  tags:
    - partnerships
    - salesforce
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: partner-revenue
      port: 8080
      tools:
        - name: handle-partner-revenue
          description: "Given a partner account ID, compile revenue data from Salesforce, enrich with Snowflake analytics, and post to the partnerships Slack channel."
          inputParameters:
            - name: partner_account_id
              in: body
              type: string
              description: "Salesforce partner account ID."
            - name: period
              in: body
              type: string
              description: "Reporting period (e.g. 2026-Q1)."
          steps:
            - name: get-revenue
              type: call
              call: sf-partner-rev.get-account
              with:
                account_id: "{{partner_account_id}}"
            - name: get-usage
              type: call
              call: snowflake-partner.run-query
              with:
                partner_id: "{{partner_account_id}}"
                period: "{{period}}"
            - name: post-report
              type: call
              call: slack-partnerships.post-message
              with:
                channel: "partnerships"
                text: "Partner Revenue ({{period}}): {{get-revenue.Name}} | Revenue: ${{get-revenue.AnnualRevenue}} | Sessions: {{get-usage.total_sessions}} | kWh delivered: {{get-usage.total_kwh}}"
  consumes:
    - type: http
      namespace: sf-partner-rev
      baseUri: "https://tesla.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account/{{account_id}}"
          inputParameters:
            - name: account_id
              in: path
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: snowflake-partner
      baseUri: "https://tesla.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: slack-partnerships
      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

When a Tesla vehicle order reaches the Delivery stage in Salesforce, creates a delivery case, updates the opportunity, and notifies the customer delivery team in Slack.

naftiko: "0.5"
info:
  label: "Salesforce EV Customer Delivery Notification"
  description: "When a Tesla vehicle order reaches the Delivery stage in Salesforce, creates a delivery case, updates the opportunity, and notifies the customer delivery team in Slack."
  tags:
    - crm
    - salesforce
    - slack
    - delivery
    - customer-experience
capability:
  exposes:
    - type: mcp
      namespace: delivery-ops
      port: 8080
      tools:
        - name: initiate-vehicle-delivery
          description: "Given a Salesforce opportunity ID for a vehicle order, update the stage to Delivery, create a delivery Salesforce case, and notify the #delivery-ops Slack channel. Use when a vehicle clears quality inspection and is ready for customer delivery."
          inputParameters:
            - name: opportunity_id
              in: body
              type: string
              description: "Salesforce opportunity ID for the vehicle order ready for delivery."
            - name: vin
              in: body
              type: string
              description: "Vehicle identification number (VIN) being delivered."
            - name: delivery_center
              in: body
              type: string
              description: "Name of the delivery center handling the handover."
          steps:
            - name: update-opp-stage
              type: call
              call: sf-delivery.update-opportunity
              with:
                opportunity_id: "{{opportunity_id}}"
                StageName: "Delivery"
                VIN__c: "{{vin}}"
            - name: create-delivery-case
              type: call
              call: sf-delivery-case.create-case
              with:
                Subject: "Vehicle delivery: VIN {{vin}} at {{delivery_center}}"
                Type: "Delivery"
                Opportunity__c: "{{opportunity_id}}"
            - name: notify-delivery-team
              type: call
              call: slack-delivery.post-message
              with:
                channel: "delivery-ops"
                text: "Vehicle ready for delivery: VIN {{vin}} | Opportunity: {{opportunity_id}} | Center: {{delivery_center}} | Delivery case: {{create-delivery-case.id}}"
  consumes:
    - type: http
      namespace: sf-delivery
      baseUri: "https://tesla.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: opportunity-update
          path: "/sobjects/Opportunity/{{opportunity_id}}"
          inputParameters:
            - name: opportunity_id
              in: path
          operations:
            - name: update-opportunity
              method: PATCH
    - type: http
      namespace: sf-delivery-case
      baseUri: "https://tesla.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: cases
          path: "/sobjects/Case"
          operations:
            - name: create-case
              method: POST
    - type: http
      namespace: slack-delivery
      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

Creates and updates Salesforce fleet sales opportunities for enterprise EV customers and notifies the enterprise sales team in Slack when a deal advances stages.

naftiko: "0.5"
info:
  label: "Salesforce EV Fleet Sales Opportunity Tracking"
  description: "Creates and updates Salesforce fleet sales opportunities for enterprise EV customers and notifies the enterprise sales team in Slack when a deal advances stages."
  tags:
    - crm
    - salesforce
    - slack
    - sales
    - ev-fleet
capability:
  exposes:
    - type: mcp
      namespace: fleet-sales
      port: 8080
      tools:
        - name: advance-fleet-opportunity
          description: "Given a Salesforce opportunity ID and new stage name, update the opportunity stage and post a Slack notification to the #fleet-sales channel with deal progress. Use when an enterprise EV fleet deal advances through the sales pipeline."
          inputParameters:
            - name: opportunity_id
              in: body
              type: string
              description: "Salesforce opportunity ID for the EV fleet deal."
            - name: new_stage
              in: body
              type: string
              description: "New opportunity stage name (e.g. Proposal, Negotiation, Closed Won)."
          steps:
            - name: get-opportunity
              type: call
              call: sf-fleet.get-opportunity
              with:
                opportunity_id: "{{opportunity_id}}"
            - name: update-stage
              type: call
              call: sf-fleet-update.update-opportunity
              with:
                opportunity_id: "{{opportunity_id}}"
                StageName: "{{new_stage}}"
            - name: notify-fleet-sales
              type: call
              call: slack-fleet.post-message
              with:
                channel: "fleet-sales"
                text: "Opportunity advanced: {{get-opportunity.Name}} | Account: {{get-opportunity.AccountId}} | Stage: {{get-opportunity.StageName}} → {{new_stage}} | Value: ${{get-opportunity.Amount}}"
  consumes:
    - type: http
      namespace: sf-fleet
      baseUri: "https://tesla.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity/{{opportunity_id}}"
          inputParameters:
            - name: opportunity_id
              in: path
          operations:
            - name: get-opportunity
              method: GET
    - type: http
      namespace: sf-fleet-update
      baseUri: "https://tesla.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: opportunity-update
          path: "/sobjects/Opportunity/{{opportunity_id}}"
          inputParameters:
            - name: opportunity_id
              in: path
          operations:
            - name: update-opportunity
              method: PATCH
    - type: http
      namespace: slack-fleet
      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 Salesforce for a lead's EV interest score and purchase intent signals.

naftiko: "0.5"
info:
  label: "Salesforce EV Lead Score Lookup"
  description: "Queries Salesforce for a lead's EV interest score and purchase intent signals."
  tags:
    - crm
    - salesforce
    - ev-sales
capability:
  exposes:
    - type: mcp
      namespace: ev-sales
      port: 8080
      tools:
        - name: get-lead-score
          description: "Given a Salesforce lead ID, return the EV interest score and purchase intent. Use for sales qualification checks."
          inputParameters:
            - name: lead_id
              in: body
              type: string
              description: "Salesforce lead record ID."
          call: "sf-ev.get-lead"
          with:
            lead_id: "{{lead_id}}"
          outputParameters:
            - name: lead
              type: object
              mapping: "$"
  consumes:
    - type: http
      namespace: sf-ev
      baseUri: "https://tesla.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: leads
          path: "/sobjects/Lead/{{lead_id}}"
          inputParameters:
            - name: lead_id
              in: path
          operations:
            - name: get-lead
              method: GET

Creates a Salesforce service case for a Tesla vehicle service appointment and notifies the service center team in Slack with the appointment details.

naftiko: "0.5"
info:
  label: "Salesforce EV Service Appointment Scheduling"
  description: "Creates a Salesforce service case for a Tesla vehicle service appointment and notifies the service center team in Slack with the appointment details."
  tags:
    - crm
    - salesforce
    - slack
    - customer-support
    - service
capability:
  exposes:
    - type: mcp
      namespace: service-ops
      port: 8080
      tools:
        - name: schedule-service-appointment
          description: "Given a Salesforce account ID, vehicle VIN, service type, and preferred date, create a Salesforce service case and notify the service center Slack channel. Use for customer-initiated or automated service appointment booking."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "Salesforce account ID for the Tesla vehicle owner."
            - name: vin
              in: body
              type: string
              description: "Vehicle identification number (VIN) for the service appointment."
            - name: service_type
              in: body
              type: string
              description: "Type of service required (e.g. Annual Service, Recall, Body Repair)."
            - name: preferred_date
              in: body
              type: string
              description: "Preferred service appointment date in YYYY-MM-DD format."
          steps:
            - name: create-service-case
              type: call
              call: sf-cases.create-case
              with:
                AccountId: "{{account_id}}"
                Subject: "{{service_type}} — VIN {{vin}}"
                Description: "Service appointment request for VIN {{vin}}. Type: {{service_type}}. Preferred date: {{preferred_date}}"
                Type: "Service"
            - name: notify-service-center
              type: call
              call: slack-service.post-message
              with:
                channel: "service-center"
                text: "New service appointment: VIN {{vin}} | Type: {{service_type}} | Preferred: {{preferred_date}} | Case: {{create-service-case.id}}"
  consumes:
    - type: http
      namespace: sf-cases
      baseUri: "https://tesla.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: cases
          path: "/sobjects/Case"
          operations:
            - name: create-case
              method: POST
    - type: http
      namespace: slack-service
      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

Looks up fleet sales contract details in Salesforce for enterprise EV deployments.

naftiko: "0.5"
info:
  label: "Salesforce Fleet Contract Lookup"
  description: "Looks up fleet sales contract details in Salesforce for enterprise EV deployments."
  tags:
    - sales
    - salesforce
    - fleet
capability:
  exposes:
    - type: mcp
      namespace: fleet-ops
      port: 8080
      tools:
        - name: get-contract
          description: "Given a Salesforce contract ID, return fleet sales contract details. Use for enterprise account management."
          inputParameters:
            - name: contract_id
              in: body
              type: string
              description: "Salesforce contract record ID."
          call: "sf-fleet.get-contract"
          with:
            contract_id: "{{contract_id}}"
          outputParameters:
            - name: contract
              type: object
              mapping: "$"
  consumes:
    - type: http
      namespace: sf-fleet
      baseUri: "https://tesla.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: contracts
          path: "/sobjects/Contract/{{contract_id}}"
          inputParameters:
            - name: contract_id
              in: path
          operations:
            - name: get-contract
              method: GET

When a high-value fleet opportunity is created in Salesforce, creates a Jira epic for delivery planning and alerts the sales leadership Slack channel.

naftiko: "0.5"
info:
  label: "Salesforce High-Value Opportunity Alert"
  description: "When a high-value fleet opportunity is created in Salesforce, creates a Jira epic for delivery planning and alerts the sales leadership Slack channel."
  tags:
    - sales
    - salesforce
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: sales-ops
      port: 8080
      tools:
        - name: handle-high-value-opportunity
          description: "Given a Salesforce opportunity ID, retrieve details, create a Jira delivery planning epic, and alert sales leadership in Slack."
          inputParameters:
            - name: opportunity_id
              in: body
              type: string
              description: "Salesforce opportunity record ID."
          steps:
            - name: get-opportunity
              type: call
              call: sf-sales.get-opportunity
              with:
                opportunity_id: "{{opportunity_id}}"
            - name: create-epic
              type: call
              call: jira-delivery.create-issue
              with:
                project_key: "DEL"
                issuetype: "Epic"
                summary: "Fleet delivery: {{get-opportunity.Name}} — ${{get-opportunity.Amount}}"
                description: "High-value opportunity {{opportunity_id}} requires delivery planning. Account: {{get-opportunity.Account.Name}}"
            - name: notify-leadership
              type: call
              call: slack-sales.post-message
              with:
                channel: "sales-leadership"
                text: "HIGH-VALUE OPP: {{get-opportunity.Name}} | ${{get-opportunity.Amount}} | Account: {{get-opportunity.Account.Name}} | Jira: {{create-epic.key}}"
  consumes:
    - type: http
      namespace: sf-sales
      baseUri: "https://tesla.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity/{{opportunity_id}}"
          inputParameters:
            - name: opportunity_id
              in: path
          operations:
            - name: get-opportunity
              method: GET
    - type: http
      namespace: jira-delivery
      baseUri: "https://tesla.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-sales
      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

Orchestrates partner onboarding by creating accounts in Salesforce, provisioning access, and notifying the partnerships team in Slack.

naftiko: "0.5"
info:
  label: "Salesforce Partner Onboarding Workflow"
  description: "Orchestrates partner onboarding by creating accounts in Salesforce, provisioning access, and notifying the partnerships team in Slack."
  tags:
    - partnerships
    - salesforce
    - slack
    - onboarding
capability:
  exposes:
    - type: mcp
      namespace: partner-ops
      port: 8080
      tools:
        - name: handle-partner-onboarding
          description: "Given partner details, create a Salesforce partner account and notify the partnerships team in Slack."
          inputParameters:
            - name: partner_name
              in: body
              type: string
              description: "Name of the partner organization."
            - name: partner_type
              in: body
              type: string
              description: "Partner type (e.g. installer, fleet, charging)."
          steps:
            - name: create-account
              type: call
              call: sf-partner.create-account
              with:
                name: "{{partner_name}}"
                type: "{{partner_type}}"
            - name: notify-partnerships
              type: call
              call: slack-partner.post-message
              with:
                channel: "partnerships"
                text: "NEW PARTNER: {{partner_name}} | Type: {{partner_type}} | SF Account: {{create-account.id}} | Please complete onboarding checklist."
  consumes:
    - type: http
      namespace: sf-partner
      baseUri: "https://tesla.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account"
          operations:
            - name: create-account
              method: POST
    - type: http
      namespace: slack-partner
      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

Generates a quarterly revenue forecast from Salesforce opportunities, enriches with Snowflake analytics, and posts to the finance Slack channel.

naftiko: "0.5"
info:
  label: "Salesforce Quarterly Revenue Forecast Report"
  description: "Generates a quarterly revenue forecast from Salesforce opportunities, enriches with Snowflake analytics, and posts to the finance Slack channel."
  tags:
    - finance
    - salesforce
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: finance-ops
      port: 8080
      tools:
        - name: handle-revenue-forecast
          description: "Given a quarter identifier, compile revenue forecast from Salesforce, enrich with Snowflake data, and post to the finance Slack channel."
          inputParameters:
            - name: quarter
              in: body
              type: string
              description: "Quarter identifier (e.g. Q2-2026)."
          steps:
            - name: query-pipeline
              type: call
              call: sf-finance.query-opportunities
              with:
                quarter: "{{quarter}}"
            - name: enrich-data
              type: call
              call: snowflake-finance.run-query
              with:
                quarter: "{{quarter}}"
            - name: post-forecast
              type: call
              call: slack-finance.post-message
              with:
                channel: "finance-leadership"
                text: "Revenue Forecast ({{quarter}}): Pipeline: ${{query-pipeline.totalAmount}} | Weighted: ${{enrich-data.weighted_forecast}} | Win rate: {{enrich-data.win_rate}}%"
  consumes:
    - type: http
      namespace: sf-finance
      baseUri: "https://tesla.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/query"
          inputParameters:
            - name: quarter
              in: query
          operations:
            - name: query-opportunities
              method: GET
    - type: http
      namespace: snowflake-finance
      baseUri: "https://tesla.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: slack-finance
      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

Processes customer referrals in Salesforce, validates eligibility, and notifies the marketing team in Slack with referral metrics.

naftiko: "0.5"
info:
  label: "Salesforce Referral Program Processor"
  description: "Processes customer referrals in Salesforce, validates eligibility, and notifies the marketing team in Slack with referral metrics."
  tags:
    - marketing
    - salesforce
    - slack
    - referrals
capability:
  exposes:
    - type: mcp
      namespace: referral-ops
      port: 8080
      tools:
        - name: handle-referral-processing
          description: "Given a Salesforce referral record ID, validate eligibility and notify the marketing team in Slack."
          inputParameters:
            - name: referral_id
              in: body
              type: string
              description: "Salesforce referral record ID."
          steps:
            - name: get-referral
              type: call
              call: sf-referral.get-referral
              with:
                referral_id: "{{referral_id}}"
            - name: notify-marketing
              type: call
              call: slack-marketing.post-message
              with:
                channel: "referral-program"
                text: "NEW REFERRAL: {{get-referral.ReferrerName}} referred {{get-referral.RefereeName}} | Vehicle: {{get-referral.VehicleModel}} | Status: {{get-referral.Status}}"
  consumes:
    - type: http
      namespace: sf-referral
      baseUri: "https://tesla.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: referrals
          path: "/sobjects/Referral__c/{{referral_id}}"
          inputParameters:
            - name: referral_id
              in: path
          operations:
            - name: get-referral
              method: GET
    - type: http
      namespace: slack-marketing
      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

Looks up the current status of a Tesla service center case in Salesforce.

naftiko: "0.5"
info:
  label: "Salesforce Service Case Status Lookup"
  description: "Looks up the current status of a Tesla service center case in Salesforce."
  tags:
    - customer-support
    - salesforce
    - service
capability:
  exposes:
    - type: mcp
      namespace: service-ops
      port: 8080
      tools:
        - name: get-case-status
          description: "Given a Salesforce case ID, return the current service case status. Use for customer support escalation checks."
          inputParameters:
            - name: case_id
              in: body
              type: string
              description: "Salesforce case record ID."
          call: "sf-service.get-case"
          with:
            case_id: "{{case_id}}"
          outputParameters:
            - name: case_record
              type: object
              mapping: "$"
  consumes:
    - type: http
      namespace: sf-service
      baseUri: "https://tesla.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case/{{case_id}}"
          inputParameters:
            - name: case_id
              in: path
          operations:
            - name: get-case
              method: GET

Captures test drive feedback from Salesforce, creates a Jira story for product insights, and posts a summary to the product Slack channel.

naftiko: "0.5"
info:
  label: "Salesforce Test Drive to Jira Feedback"
  description: "Captures test drive feedback from Salesforce, creates a Jira story for product insights, and posts a summary to the product Slack channel."
  tags:
    - sales
    - salesforce
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: product-feedback
      port: 8080
      tools:
        - name: handle-test-drive-feedback
          description: "Given a Salesforce activity ID for a test drive, extract feedback, create a Jira product story, and notify the product team in Slack."
          inputParameters:
            - name: activity_id
              in: body
              type: string
              description: "Salesforce activity record ID for the test drive."
            - name: vehicle_model
              in: body
              type: string
              description: "Vehicle model tested (e.g. Model Y, Cybertruck)."
          steps:
            - name: get-feedback
              type: call
              call: sf-activity.get-activity
              with:
                activity_id: "{{activity_id}}"
            - name: create-story
              type: call
              call: jira-product.create-issue
              with:
                project_key: "PROD"
                issuetype: "Story"
                summary: "Test Drive Feedback: {{vehicle_model}} — {{get-feedback.Subject}}"
                description: "{{get-feedback.Description}}"
            - name: notify-product
              type: call
              call: slack-product.post-message
              with:
                channel: "product-insights"
                text: "New test drive feedback for {{vehicle_model}}: {{get-feedback.Subject}} | Jira: {{create-story.key}}"
  consumes:
    - type: http
      namespace: sf-activity
      baseUri: "https://tesla.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: activities
          path: "/sobjects/Task/{{activity_id}}"
          inputParameters:
            - name: activity_id
              in: path
          operations:
            - name: get-activity
              method: GET
    - type: http
      namespace: jira-product
      baseUri: "https://tesla.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-product
      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

Creates a Salesforce campaign for an NHTSA vehicle recall, identifies affected customer accounts by VIN, and notifies the customer communications team in Slack to initiate outreach.

naftiko: "0.5"
info:
  label: "Salesforce Vehicle Recall Campaign Management"
  description: "Creates a Salesforce campaign for an NHTSA vehicle recall, identifies affected customer accounts by VIN, and notifies the customer communications team in Slack to initiate outreach."
  tags:
    - crm
    - salesforce
    - slack
    - recall
    - customer-communications
capability:
  exposes:
    - type: mcp
      namespace: recall-ops
      port: 8080
      tools:
        - name: launch-recall-campaign
          description: "Given a recall ID, affected vehicle model, and Salesforce campaign owner ID, create a Salesforce campaign for the recall and notify the #customer-comms Slack channel to prepare owner outreach. Use when NHTSA issues or Tesla initiates a voluntary recall."
          inputParameters:
            - name: recall_id
              in: body
              type: string
              description: "NHTSA recall ID or internal Tesla recall reference number."
            - name: vehicle_model
              in: body
              type: string
              description: "Affected vehicle model (e.g. Model 3, Model Y)."
            - name: campaign_owner_id
              in: body
              type: string
              description: "Salesforce user ID of the campaign owner."
          steps:
            - name: create-campaign
              type: call
              call: sf-campaigns.create-campaign
              with:
                Name: "Recall {{recall_id}}: {{vehicle_model}}"
                Type: "Other"
                Status: "Planning"
                OwnerId: "{{campaign_owner_id}}"
                Description: "Vehicle recall campaign for {{vehicle_model}}. Recall ID: {{recall_id}}"
            - name: notify-comms-team
              type: call
              call: slack-recall.post-message
              with:
                channel: "customer-comms"
                text: "Recall campaign launched: {{recall_id}} for {{vehicle_model}} | Salesforce campaign ID: {{create-campaign.id}} | Prepare customer outreach materials."
  consumes:
    - type: http
      namespace: sf-campaigns
      baseUri: "https://tesla.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: campaigns
          path: "/sobjects/Campaign"
          operations:
            - name: create-campaign
              method: POST
    - type: http
      namespace: slack-recall
      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

Processes a warranty claim in Salesforce, creates a service appointment, and notifies the service center team in Slack.

naftiko: "0.5"
info:
  label: "Salesforce Warranty Claim Processing"
  description: "Processes a warranty claim in Salesforce, creates a service appointment, and notifies the service center team in Slack."
  tags:
    - service
    - salesforce
    - slack
    - warranty
capability:
  exposes:
    - type: mcp
      namespace: warranty-ops
      port: 8080
      tools:
        - name: handle-warranty-claim
          description: "Given a Salesforce case ID for a warranty claim, process the claim, schedule a service appointment, and notify the service center in Slack."
          inputParameters:
            - name: case_id
              in: body
              type: string
              description: "Salesforce warranty case ID."
            - name: vin
              in: body
              type: string
              description: "Vehicle identification number."
          steps:
            - name: get-case
              type: call
              call: sf-warranty.get-case
              with:
                case_id: "{{case_id}}"
            - name: create-appointment
              type: call
              call: sf-warranty.create-appointment
              with:
                case_id: "{{case_id}}"
                subject: "Warranty service for VIN {{vin}}: {{get-case.Subject}}"
            - name: notify-service
              type: call
              call: slack-service.post-message
              with:
                channel: "service-center"
                text: "WARRANTY CLAIM: VIN {{vin}} | {{get-case.Subject}} | Appointment: {{create-appointment.id}} | Case: {{case_id}}"
  consumes:
    - type: http
      namespace: sf-warranty
      baseUri: "https://tesla.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case/{{case_id}}"
          inputParameters:
            - name: case_id
              in: path
          operations:
            - name: get-case
              method: GET
        - name: appointments
          path: "/sobjects/ServiceAppointment"
          operations:
            - name: create-appointment
              method: POST
    - type: http
      namespace: slack-service
      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 the bill of materials for a battery pack configuration from SAP.

naftiko: "0.5"
info:
  label: "SAP Battery BOM Lookup"
  description: "Retrieves the bill of materials for a battery pack configuration from SAP."
  tags:
    - manufacturing
    - sap
    - battery
capability:
  exposes:
    - type: mcp
      namespace: battery-eng
      port: 8080
      tools:
        - name: get-bom
          description: "Given an SAP material number, return the battery pack bill of materials. Use for production planning and cost analysis."
          inputParameters:
            - name: material_number
              in: body
              type: string
              description: "SAP material number for the battery pack."
          call: "sap-bom.get-bom"
          with:
            material_number: "{{material_number}}"
          outputParameters:
            - name: bom
              type: object
              mapping: "$"
  consumes:
    - type: http
      namespace: sap-bom
      baseUri: "https://tesla-s4.sap.com/sap/opu/odata/sap/API_BILL_OF_MATERIAL_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: bom
          path: "/MaterialBOM"
          inputParameters:
            - name: material_number
              in: query
          operations:
            - name: get-bom
              method: GET

Gathers carbon footprint data from SAP manufacturing records, validates against compliance thresholds, and posts the report to the sustainability Slack channel.

naftiko: "0.5"
info:
  label: "SAP Carbon Footprint Compliance Report"
  description: "Gathers carbon footprint data from SAP manufacturing records, validates against compliance thresholds, and posts the report to the sustainability Slack channel."
  tags:
    - sustainability
    - sap
    - slack
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: sustainability-ops
      port: 8080
      tools:
        - name: handle-carbon-report
          description: "Given a plant code and reporting period, gather carbon footprint data from SAP and post a compliance report to Slack."
          inputParameters:
            - name: plant_code
              in: body
              type: string
              description: "SAP plant code."
            - name: period
              in: body
              type: string
              description: "Reporting period (e.g. 2026-Q1)."
          steps:
            - name: get-emissions
              type: call
              call: sap-carbon.get-emissions
              with:
                plant: "{{plant_code}}"
                period: "{{period}}"
            - name: post-report
              type: call
              call: slack-sustainability.post-message
              with:
                channel: "sustainability"
                text: "Carbon Footprint Report: {{plant_code}} ({{period}}) | CO2: {{get-emissions.total_co2}} tons | Target: {{get-emissions.target_co2}} tons | Status: {{get-emissions.compliance_status}}"
  consumes:
    - type: http
      namespace: sap-carbon
      baseUri: "https://tesla-s4.sap.com/sap/opu/odata/sap/API_ENVIRONMENT_HEALTH_SAFETY"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: emissions
          path: "/EmissionsData"
          inputParameters:
            - name: plant
              in: query
            - name: period
              in: query
          operations:
            - name: get-emissions
              method: GET
    - type: http
      namespace: slack-sustainability
      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

Orchestrates the monthly financial period close for Tesla's manufacturing cost centers by checking open SAP items, posting a status summary to Slack, and creating a Jira close task for unresolved items.

naftiko: "0.5"
info:
  label: "SAP Financial Period Close for Manufacturing"
  description: "Orchestrates the monthly financial period close for Tesla's manufacturing cost centers by checking open SAP items, posting a status summary to Slack, and creating a Jira close task for unresolved items."
  tags:
    - finance
    - sap
    - jira
    - slack
    - period-close
    - manufacturing
capability:
  exposes:
    - type: mcp
      namespace: period-close
      port: 8080
      tools:
        - name: run-manufacturing-period-close
          description: "Given a SAP company code and fiscal period, query open accounting items and GR/IR entries, post a close status to the #finance Slack channel, and create a Jira task for unresolved items. Use at month-end for manufacturing cost center close."
          inputParameters:
            - name: company_code
              in: body
              type: string
              description: "SAP company code for manufacturing (e.g. 1000)."
            - name: fiscal_period
              in: body
              type: integer
              description: "SAP fiscal period to close (1-12)."
            - name: fiscal_year
              in: body
              type: integer
              description: "SAP fiscal year."
          steps:
            - name: get-open-items
              type: call
              call: sap-close.get-open-items
              with:
                company_code: "{{company_code}}"
                fiscal_period: "{{fiscal_period}}"
                fiscal_year: "{{fiscal_year}}"
            - name: post-close-status
              type: call
              call: slack-close.post-message
              with:
                channel: "finance"
                text: "Period close status: Company {{company_code}} FY{{fiscal_year}}-P{{fiscal_period}}: Open SAP items: {{get-open-items.total}}. Review before closing."
            - name: create-close-task
              type: call
              call: jira-close.create-issue
              with:
                project_key: "FIN"
                issuetype: "Task"
                summary: "Period close FY{{fiscal_year}}-P{{fiscal_period}}: {{get-open-items.total}} open items"
                description: "Manufacturing period close checklist for company {{company_code}}. Unresolved SAP items: {{get-open-items.total}}. Clear before period close."
  consumes:
    - type: http
      namespace: sap-close
      baseUri: "https://tesla-s4.sap.com/sap/opu/odata/sap/API_JOURNALENTRY_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: open-items
          path: "/A_JournalEntry"
          inputParameters:
            - name: company_code
              in: query
            - name: fiscal_period
              in: query
            - name: fiscal_year
              in: query
          operations:
            - name: get-open-items
              method: GET
    - type: http
      namespace: slack-close
      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
    - type: http
      namespace: jira-close
      baseUri: "https://tesla.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST

Retrieves the upcoming maintenance schedule for Gigafactory equipment from SAP.

naftiko: "0.5"
info:
  label: "SAP Gigafactory Maintenance Schedule"
  description: "Retrieves the upcoming maintenance schedule for Gigafactory equipment from SAP."
  tags:
    - manufacturing
    - sap
    - maintenance
capability:
  exposes:
    - type: mcp
      namespace: mfg-maintenance
      port: 8080
      tools:
        - name: get-schedule
          description: "Given an SAP plant code, return upcoming maintenance notifications for Gigafactory equipment. Use for maintenance planning."
          inputParameters:
            - name: plant_code
              in: body
              type: string
              description: "SAP plant code for the Gigafactory."
          call: "sap-maint.get-notifications"
          with:
            plant: "{{plant_code}}"
          outputParameters:
            - name: notifications
              type: array
              mapping: "$.d.results"
  consumes:
    - type: http
      namespace: sap-maint
      baseUri: "https://tesla-s4.sap.com/sap/opu/odata/sap/API_MAINTNOTIFICATION"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: notifications
          path: "/MaintenanceNotification"
          inputParameters:
            - name: plant
              in: query
          operations:
            - name: get-notifications
              method: GET

Queries SAP S/4HANA for critical component inventory levels at Gigafactory locations and alerts the production planning team in Slack if any material falls below safety stock.

naftiko: "0.5"
info:
  label: "SAP Inventory Level Check for Gigafactory"
  description: "Queries SAP S/4HANA for critical component inventory levels at Gigafactory locations and alerts the production planning team in Slack if any material falls below safety stock."
  tags:
    - manufacturing
    - sap
    - slack
    - inventory-management
    - supply-chain
capability:
  exposes:
    - type: mcp
      namespace: giga-inventory
      port: 8080
      tools:
        - name: check-gigafactory-inventory
          description: "Given a material number and Gigafactory plant code, query SAP for current stock level and compare to safety stock threshold. Alert the #production-planning Slack channel if stock is critically low. Use for daily production-start inventory validation."
          inputParameters:
            - name: material_number
              in: body
              type: string
              description: "SAP material number for the production component."
            - name: plant_code
              in: body
              type: string
              description: "SAP plant code for the Gigafactory location."
            - name: safety_stock
              in: body
              type: number
              description: "Safety stock threshold below which an alert is triggered."
          steps:
            - name: get-stock
              type: call
              call: sap-stock.get-stock-level
              with:
                material: "{{material_number}}"
                plant: "{{plant_code}}"
            - name: alert-production
              type: call
              call: slack-production.post-message
              with:
                channel: "production-planning"
                text: "INVENTORY ALERT: Material {{material_number}} at plant {{plant_code}}: Current stock {{get-stock.UnrestrictedStock}} below safety level {{safety_stock}}. Expedite replenishment."
  consumes:
    - type: http
      namespace: sap-stock
      baseUri: "https://tesla-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: material-stock
          path: "/A_MatlStkInAcctMod"
          inputParameters:
            - name: material
              in: query
            - name: plant
              in: query
          operations:
            - name: get-stock-level
              method: GET
    - type: http
      namespace: slack-production
      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

Tracks vehicle shipment status in SAP, updates delivery estimates in Salesforce, and alerts the logistics team in Slack on delays.

naftiko: "0.5"
info:
  label: "SAP Logistics Shipment Tracker"
  description: "Tracks vehicle shipment status in SAP, updates delivery estimates in Salesforce, and alerts the logistics team in Slack on delays."
  tags:
    - logistics
    - sap
    - salesforce
    - slack
capability:
  exposes:
    - type: mcp
      namespace: shipment-ops
      port: 8080
      tools:
        - name: handle-shipment-tracking
          description: "Given an SAP shipment number and Salesforce order ID, track shipment status, update the order, and alert logistics on delays."
          inputParameters:
            - name: shipment_number
              in: body
              type: string
              description: "SAP shipment number."
            - name: order_id
              in: body
              type: string
              description: "Salesforce order record ID."
          steps:
            - name: get-shipment
              type: call
              call: sap-ship.get-shipment
              with:
                shipment_number: "{{shipment_number}}"
            - name: update-order
              type: call
              call: sf-order.update-order
              with:
                order_id: "{{order_id}}"
                delivery_status: "{{get-shipment.ShipmentStatus}}"
            - name: notify-logistics
              type: call
              call: slack-ship.post-message
              with:
                channel: "vehicle-logistics"
                text: "SHIPMENT UPDATE: {{shipment_number}} | Status: {{get-shipment.ShipmentStatus}} | ETA: {{get-shipment.PlannedArrival}} | Order: {{order_id}}"
  consumes:
    - type: http
      namespace: sap-ship
      baseUri: "https://tesla-s4.sap.com/sap/opu/odata/sap/API_OUTBOUND_DELIVERY_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: shipments
          path: "/A_OutbDeliveryHeader('{{shipment_number}}')"
          inputParameters:
            - name: shipment_number
              in: path
          operations:
            - name: get-shipment
              method: GET
    - type: http
      namespace: sf-order
      baseUri: "https://tesla.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: orders
          path: "/sobjects/Order/{{order_id}}"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: update-order
              method: PATCH
    - type: http
      namespace: slack-ship
      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

Compiles shift production metrics from SAP, creates a handoff summary in Jira, and posts to the production floor Slack channel.

naftiko: "0.5"
info:
  label: "SAP Manufacturing Shift Handoff"
  description: "Compiles shift production metrics from SAP, creates a handoff summary in Jira, and posts to the production floor Slack channel."
  tags:
    - manufacturing
    - sap
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: shift-ops
      port: 8080
      tools:
        - name: handle-shift-handoff
          description: "Given a plant code and shift identifier, compile production metrics from SAP and post a handoff summary to Slack."
          inputParameters:
            - name: plant_code
              in: body
              type: string
              description: "SAP plant code."
            - name: shift_id
              in: body
              type: string
              description: "Shift identifier (e.g. day, swing, night)."
          steps:
            - name: get-production
              type: call
              call: sap-shift.get-confirmations
              with:
                plant: "{{plant_code}}"
            - name: create-handoff
              type: call
              call: jira-shift.create-issue
              with:
                project_key: "MFG"
                issuetype: "Task"
                summary: "Shift handoff: {{plant_code}} — {{shift_id}}"
                description: "Production confirmations: {{get-production.total}}. See SAP for details."
            - name: notify-floor
              type: call
              call: slack-floor.post-message
              with:
                channel: "production-floor"
                text: "SHIFT HANDOFF: {{plant_code}} | {{shift_id}} | Units produced: {{get-production.total}} | Tracking: {{create-handoff.key}}"
  consumes:
    - type: http
      namespace: sap-shift
      baseUri: "https://tesla-s4.sap.com/sap/opu/odata/sap/API_PROD_ORDER_CONFIRMATION_2_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: confirmations
          path: "/ProdnOrdConf2"
          inputParameters:
            - name: plant
              in: query
          operations:
            - name: get-confirmations
              method: GET
    - type: http
      namespace: jira-shift
      baseUri: "https://tesla.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-floor
      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 a SAP S/4HANA manufacturing work order by number, returning order status, material, quantity, and scheduled completion date for production planning review.

naftiko: "0.5"
info:
  label: "SAP Manufacturing Work Order Lookup"
  description: "Retrieves a SAP S/4HANA manufacturing work order by number, returning order status, material, quantity, and scheduled completion date for production planning review."
  tags:
    - manufacturing
    - sap
    - erp
    - production-planning
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: manufacturing-erp
      port: 8080
      tools:
        - name: get-work-order
          description: "Given a SAP manufacturing order number, return the order status, material number, target quantity, and scheduled finish date. Use for production planning, quality reviews, or supply chain exception handling."
          inputParameters:
            - name: order_number
              in: body
              type: string
              description: "SAP manufacturing order number (e.g. 1000123456)."
          call: sap-mfg.get-production-order
          with:
            order_number: "{{order_number}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.d.SystemStatus"
            - name: material
              type: string
              mapping: "$.d.Material"
            - name: target_quantity
              type: number
              mapping: "$.d.TotalQuantity"
            - name: finish_date
              type: string
              mapping: "$.d.ScheduledFinishDate"
  consumes:
    - type: http
      namespace: sap-mfg
      baseUri: "https://tesla-s4.sap.com/sap/opu/odata/sap/PP_MANFACT_ORDER_MAINT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: production-orders
          path: "/A_ProductionOrder('{{order_number}}')"
          inputParameters:
            - name: order_number
              in: path
          operations:
            - name: get-production-order
              method: GET

When a vehicle production quality defect is identified in SAP, creates a quality notification, links it to the manufacturing order, and alerts the quality engineering team in Slack.

naftiko: "0.5"
info:
  label: "SAP Production Order Quality Notification"
  description: "When a vehicle production quality defect is identified in SAP, creates a quality notification, links it to the manufacturing order, and alerts the quality engineering team in Slack."
  tags:
    - manufacturing
    - sap
    - slack
    - quality-management
    - production
capability:
  exposes:
    - type: mcp
      namespace: quality-ops
      port: 8080
      tools:
        - name: report-production-defect
          description: "Given a SAP manufacturing order number, defect description, and severity, create a SAP quality notification linked to the production order and notify the #quality-eng Slack channel for immediate investigation. Use when assembly line QA detects a critical defect."
          inputParameters:
            - name: order_number
              in: body
              type: string
              description: "SAP manufacturing order number where the defect was found."
            - name: defect_description
              in: body
              type: string
              description: "Detailed description of the identified production defect."
            - name: severity
              in: body
              type: string
              description: "Defect severity: critical, major, or minor."
          steps:
            - name: create-quality-notification
              type: call
              call: sap-quality.create-notification
              with:
                NotificationType: "Q3"
                ShortText: "Production defect: order {{order_number}} — {{severity}}"
                LongText: "{{defect_description}}"
                ManufacturingOrder: "{{order_number}}"
            - name: alert-quality-team
              type: call
              call: slack-quality.post-message
              with:
                channel: "quality-eng"
                text: "PRODUCTION DEFECT: Order {{order_number}} | Severity: {{severity}} | SAP QN: {{create-quality-notification.MaintenanceNotification}} | Immediate investigation required. {{defect_description}}"
  consumes:
    - type: http
      namespace: sap-quality
      baseUri: "https://tesla-s4.sap.com/sap/opu/odata/sap/API_QUALITYNOTIFICATION_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: quality-notifications
          path: "/MaintenanceNotification"
          operations:
            - name: create-notification
              method: POST
    - type: http
      namespace: slack-quality
      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 the status of a production order from SAP for vehicle manufacturing tracking.

naftiko: "0.5"
info:
  label: "SAP Production Order Status Check"
  description: "Retrieves the status of a production order from SAP for vehicle manufacturing tracking."
  tags:
    - manufacturing
    - sap
    - production
capability:
  exposes:
    - type: mcp
      namespace: mfg-ops
      port: 8080
      tools:
        - name: get-order-status
          description: "Given an SAP production order number, return the current manufacturing status. Use for production floor dashboards."
          inputParameters:
            - name: order_number
              in: body
              type: string
              description: "SAP production order number."
          call: "sap-prod.get-order"
          with:
            order_number: "{{order_number}}"
          outputParameters:
            - name: order
              type: object
              mapping: "$"
  consumes:
    - type: http
      namespace: sap-prod
      baseUri: "https://tesla-s4.sap.com/sap/opu/odata/sap/API_PRODUCTION_ORDER_2_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: orders
          path: "/A_ProductionOrder_2('{{order_number}}')"
          inputParameters:
            - name: order_number
              in: path
          operations:
            - name: get-order
              method: GET

Creates a SAP S/4HANA purchase order for critical battery cell raw materials, notifies the procurement team in Slack, and logs the order in the Jira procurement project.

naftiko: "0.5"
info:
  label: "SAP Purchase Order Creation for Battery Materials"
  description: "Creates a SAP S/4HANA purchase order for critical battery cell raw materials, notifies the procurement team in Slack, and logs the order in the Jira procurement project."
  tags:
    - procurement
    - sap
    - slack
    - jira
    - supply-chain
    - manufacturing
capability:
  exposes:
    - type: mcp
      namespace: battery-procurement
      port: 8080
      tools:
        - name: create-battery-material-po
          description: "Given a material number, supplier number, plant, quantity, and delivery date, create a SAP S/4HANA purchase order for battery raw materials, notify the #procurement Slack channel, and create a Jira procurement tracking task. Use for urgent or scheduled battery material replenishment."
          inputParameters:
            - name: material_number
              in: body
              type: string
              description: "SAP material number for the battery raw material."
            - name: supplier_number
              in: body
              type: string
              description: "SAP supplier (vendor) account number."
            - name: plant_code
              in: body
              type: string
              description: "SAP plant code for the manufacturing facility (e.g. 1000)."
            - name: quantity
              in: body
              type: number
              description: "Order quantity in the material's unit of measure."
            - name: delivery_date
              in: body
              type: string
              description: "Required delivery date in YYYY-MM-DD format."
          steps:
            - name: create-po
              type: call
              call: sap-po.create-purchase-order
              with:
                Material: "{{material_number}}"
                Supplier: "{{supplier_number}}"
                Plant: "{{plant_code}}"
                OrderQuantity: "{{quantity}}"
                DeliveryDate: "{{delivery_date}}"
            - name: notify-procurement
              type: call
              call: slack-procurement.post-message
              with:
                channel: "procurement"
                text: "Battery material PO created: {{create-po.PurchaseOrder}} | Material: {{material_number}} | Supplier: {{supplier_number}} | Qty: {{quantity}} | Delivery: {{delivery_date}}"
            - name: create-jira-task
              type: call
              call: jira-procurement.create-issue
              with:
                project_key: "PROC"
                issuetype: "Task"
                summary: "PO {{create-po.PurchaseOrder}}: {{material_number}} delivery {{delivery_date}}"
                description: "SAP PO {{create-po.PurchaseOrder}} created for material {{material_number}} from supplier {{supplier_number}}. Plant: {{plant_code}}. Qty: {{quantity}}. Delivery: {{delivery_date}}"
  consumes:
    - type: http
      namespace: sap-po
      baseUri: "https://tesla-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: purchase-orders
          path: "/A_PurchaseOrder"
          operations:
            - name: create-purchase-order
              method: POST
    - type: http
      namespace: slack-procurement
      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
    - type: http
      namespace: jira-procurement
      baseUri: "https://tesla.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST

When an SAP quality inspection fails, creates a Jira defect ticket and alerts the quality engineering team in Slack.

naftiko: "0.5"
info:
  label: "SAP Quality Inspection to Jira"
  description: "When an SAP quality inspection fails, creates a Jira defect ticket and alerts the quality engineering team in Slack."
  tags:
    - manufacturing
    - sap
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: quality-ops
      port: 8080
      tools:
        - name: handle-quality-inspection
          description: "Given an SAP inspection lot number for a failed inspection, create a Jira defect and notify quality engineering in Slack."
          inputParameters:
            - name: inspection_lot
              in: body
              type: string
              description: "SAP inspection lot number."
            - name: material_number
              in: body
              type: string
              description: "Material number that failed inspection."
          steps:
            - name: get-inspection
              type: call
              call: sap-qi.get-inspection
              with:
                inspection_lot: "{{inspection_lot}}"
            - name: create-defect
              type: call
              call: jira-quality.create-issue
              with:
                project_key: "QA"
                issuetype: "Bug"
                summary: "Quality fail: Material {{material_number}} — Lot {{inspection_lot}}"
                description: "Inspection lot {{inspection_lot}} failed for material {{material_number}}. Result: {{get-inspection.InspectionResult}}"
                priority: "High"
            - name: notify-quality
              type: call
              call: slack-quality.post-message
              with:
                channel: "quality-engineering"
                text: "QUALITY FAIL: Material {{material_number}} | Lot: {{inspection_lot}} | Jira: {{create-defect.key}}"
  consumes:
    - type: http
      namespace: sap-qi
      baseUri: "https://tesla-s4.sap.com/sap/opu/odata/sap/API_INSPECTIONLOT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: lots
          path: "/InspectionLot('{{inspection_lot}}')"
          inputParameters:
            - name: inspection_lot
              in: path
          operations:
            - name: get-inspection
              method: GET
    - type: http
      namespace: jira-quality
      baseUri: "https://tesla.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-quality
      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

When SAP inventory drops below reorder point, creates a purchase requisition and alerts the procurement team in Slack.

naftiko: "0.5"
info:
  label: "SAP Raw Material Reorder Trigger"
  description: "When SAP inventory drops below reorder point, creates a purchase requisition and alerts the procurement team in Slack."
  tags:
    - supply-chain
    - sap
    - slack
    - procurement
capability:
  exposes:
    - type: mcp
      namespace: reorder-ops
      port: 8080
      tools:
        - name: handle-reorder-trigger
          description: "Given a material number and plant code with inventory below reorder point, create an SAP purchase requisition and alert procurement in Slack."
          inputParameters:
            - name: material_number
              in: body
              type: string
              description: "SAP material number."
            - name: plant_code
              in: body
              type: string
              description: "SAP plant code."
          steps:
            - name: check-stock
              type: call
              call: sap-reorder.get-stock
              with:
                material: "{{material_number}}"
                plant: "{{plant_code}}"
            - name: create-requisition
              type: call
              call: sap-reorder.create-requisition
              with:
                material: "{{material_number}}"
                plant: "{{plant_code}}"
                quantity: "{{check-stock.ReorderQuantity}}"
            - name: notify-procurement
              type: call
              call: slack-procurement.post-message
              with:
                channel: "procurement-alerts"
                text: "REORDER: Material {{material_number}} at {{plant_code}} | Current: {{check-stock.UnrestrictedStock}} | Reorder qty: {{check-stock.ReorderQuantity}} | PR: {{create-requisition.PurchaseRequisition}}"
  consumes:
    - type: http
      namespace: sap-reorder
      baseUri: "https://tesla-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: stock
          path: "/A_MatlStkInAcctMod"
          inputParameters:
            - name: material
              in: query
            - name: plant
              in: query
          operations:
            - name: get-stock
              method: GET
        - name: requisitions
          path: "/A_PurchaseRequisitionHeader"
          operations:
            - name: create-requisition
              method: POST
    - type: http
      namespace: slack-procurement
      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

Detects supplier delivery delays in SAP, creates a Jira task for procurement follow-up, and alerts the supply chain Slack channel.

naftiko: "0.5"
info:
  label: "SAP Supplier Delivery Delay Alert"
  description: "Detects supplier delivery delays in SAP, creates a Jira task for procurement follow-up, and alerts the supply chain Slack channel."
  tags:
    - supply-chain
    - sap
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: supply-chain-ops
      port: 8080
      tools:
        - name: handle-supplier-delay
          description: "Given an SAP purchase order number with a delivery delay, create a Jira follow-up task and alert the supply chain team in Slack."
          inputParameters:
            - name: po_number
              in: body
              type: string
              description: "SAP purchase order number."
            - name: supplier_name
              in: body
              type: string
              description: "Name of the supplier with the delay."
          steps:
            - name: get-po
              type: call
              call: sap-po.get-order
              with:
                po_number: "{{po_number}}"
            - name: create-task
              type: call
              call: jira-procurement.create-issue
              with:
                project_key: "PROC"
                issuetype: "Task"
                summary: "Supplier delay: {{supplier_name}} — PO {{po_number}}"
                description: "Purchase order {{po_number}} from {{supplier_name}} is delayed. Original date: {{get-po.DeliveryDate}}"
            - name: notify-supply-chain
              type: call
              call: slack-supply.post-message
              with:
                channel: "supply-chain-alerts"
                text: "SUPPLIER DELAY: {{supplier_name}} | PO: {{po_number}} | Jira: {{create-task.key}}"
  consumes:
    - type: http
      namespace: sap-po
      baseUri: "https://tesla-s4.sap.com/sap/opu/odata/sap/API_PURCHASEORDER_PROCESS_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: orders
          path: "/A_PurchaseOrder('{{po_number}}')"
          inputParameters:
            - name: po_number
              in: path
          operations:
            - name: get-order
              method: GET
    - type: http
      namespace: jira-procurement
      baseUri: "https://tesla.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-supply
      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 SAP S/4HANA for supplier on-time delivery and quality metrics for the current quarter, and posts a supplier performance digest to the procurement Slack channel.

naftiko: "0.5"
info:
  label: "SAP Supplier Performance Report"
  description: "Queries SAP S/4HANA for supplier on-time delivery and quality metrics for the current quarter, and posts a supplier performance digest to the procurement Slack channel."
  tags:
    - procurement
    - sap
    - slack
    - supplier-management
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: supplier-reporting
      port: 8080
      tools:
        - name: digest-supplier-performance
          description: "Given a SAP supplier number and fiscal quarter, query on-time delivery rates and quality rejection counts from SAP S/4HANA, and post a performance summary to the #procurement Slack channel. Use quarterly for supplier review meetings."
          inputParameters:
            - name: supplier_number
              in: body
              type: string
              description: "SAP supplier account number to evaluate."
            - name: fiscal_quarter
              in: body
              type: string
              description: "Fiscal quarter to report on (e.g. Q1-2026)."
          steps:
            - name: get-supplier-data
              type: call
              call: sap-supplier.get-supplier
              with:
                supplier_number: "{{supplier_number}}"
            - name: post-performance
              type: call
              call: slack-supply.post-message
              with:
                channel: "procurement"
                text: "Supplier performance {{fiscal_quarter}}: Supplier {{supplier_number}} ({{get-supplier-data.SupplierName}}). Review on-time delivery and quality metrics in SAP."
  consumes:
    - type: http
      namespace: sap-supplier
      baseUri: "https://tesla-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: suppliers
          path: "/A_Supplier('{{supplier_number}}')"
          inputParameters:
            - name: supplier_number
              in: path
          operations:
            - name: get-supplier
              method: GET
    - type: http
      namespace: slack-supply
      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

Checks the payment status of a vendor invoice in SAP for procurement tracking.

naftiko: "0.5"
info:
  label: "SAP Vendor Payment Status"
  description: "Checks the payment status of a vendor invoice in SAP for procurement tracking."
  tags:
    - finance
    - sap
    - procurement
capability:
  exposes:
    - type: mcp
      namespace: procurement-ops
      port: 8080
      tools:
        - name: get-payment-status
          description: "Given an SAP invoice number, return the vendor payment status. Use for supplier relationship management and payment tracking."
          inputParameters:
            - name: invoice_number
              in: body
              type: string
              description: "SAP vendor invoice number."
          call: "sap-finance.get-payment"
          with:
            invoice_number: "{{invoice_number}}"
          outputParameters:
            - name: invoice
              type: object
              mapping: "$"
  consumes:
    - type: http
      namespace: sap-finance
      baseUri: "https://tesla-s4.sap.com/sap/opu/odata/sap/API_SUPPLIER_INVOICE_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: invoices
          path: "/A_SupplierInvoice('{{invoice_number}}')"
          inputParameters:
            - name: invoice_number
              in: path
          operations:
            - name: get-payment
              method: GET

When a vehicle delivery delay is detected in SAP, notifies the customer via Salesforce and alerts the logistics team in Slack.

naftiko: "0.5"
info:
  label: "Slack Vehicle Delivery Delay Notification"
  description: "When a vehicle delivery delay is detected in SAP, notifies the customer via Salesforce and alerts the logistics team in Slack."
  tags:
    - logistics
    - sap
    - salesforce
    - slack
capability:
  exposes:
    - type: mcp
      namespace: logistics-ops
      port: 8080
      tools:
        - name: handle-delivery-delay
          description: "Given an SAP delivery ID and Salesforce case ID, retrieve delay details from SAP, update the Salesforce case, and notify the logistics Slack channel."
          inputParameters:
            - name: delivery_id
              in: body
              type: string
              description: "SAP delivery document ID."
            - name: case_id
              in: body
              type: string
              description: "Salesforce case ID for the customer order."
          steps:
            - name: get-delivery
              type: call
              call: sap-logistics.get-delivery
              with:
                delivery_id: "{{delivery_id}}"
            - name: update-case
              type: call
              call: sf-cases.update-case
              with:
                case_id: "{{case_id}}"
                status: "Delivery Delayed"
                description: "Delivery {{delivery_id}} delayed. Estimated new date: {{get-delivery.PlannedDeliveryDate}}"
            - name: notify-logistics
              type: call
              call: slack-logistics.post-message
              with:
                channel: "vehicle-logistics"
                text: "DELIVERY DELAY: {{delivery_id}} | Customer case: {{case_id}} | New ETA: {{get-delivery.PlannedDeliveryDate}}"
  consumes:
    - type: http
      namespace: sap-logistics
      baseUri: "https://tesla-s4.sap.com/sap/opu/odata/sap/API_OUTBOUND_DELIVERY_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: deliveries
          path: "/A_OutbDeliveryHeader('{{delivery_id}}')"
          inputParameters:
            - name: delivery_id
              in: path
          operations:
            - name: get-delivery
              method: GET
    - type: http
      namespace: sf-cases
      baseUri: "https://tesla.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case/{{case_id}}"
          inputParameters:
            - name: case_id
              in: path
          operations:
            - name: update-case
              method: PATCH
    - type: http
      namespace: slack-logistics
      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 Autopilot disengagement event statistics over a specified period.

naftiko: "0.5"
info:
  label: "Snowflake Autopilot Disengagement Query"
  description: "Queries Snowflake for Autopilot disengagement event statistics over a specified period."
  tags:
    - analytics
    - snowflake
    - autopilot
capability:
  exposes:
    - type: mcp
      namespace: autopilot-analytics
      port: 8080
      tools:
        - name: get-disengagement-stats
          description: "Given a time range, return Autopilot disengagement statistics from Snowflake. Use for safety metrics reporting."
          inputParameters:
            - name: time_range
              in: body
              type: string
              description: "Time range for the query (e.g. last_7d)."
          call: "snowflake-ap.run-query"
          with:
            time_range: "{{time_range}}"
          outputParameters:
            - name: stats
              type: object
              mapping: "$.data"
  consumes:
    - type: http
      namespace: snowflake-ap
      baseUri: "https://tesla.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Queries Snowflake for battery production KPIs (cell yield, pack throughput, scrap rate) and posts a shift-start report to the manufacturing operations Slack channel.

naftiko: "0.5"
info:
  label: "Snowflake Battery Production KPI Report"
  description: "Queries Snowflake for battery production KPIs (cell yield, pack throughput, scrap rate) and posts a shift-start report to the manufacturing operations Slack channel."
  tags:
    - manufacturing
    - snowflake
    - slack
    - reporting
    - battery
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: battery-analytics
      port: 8080
      tools:
        - name: publish-battery-kpi-report
          description: "Given a Snowflake database, schema, and shift date, query battery production KPI views and post a shift report to the #manufacturing-ops Slack channel. Use at the start of each production shift."
          inputParameters:
            - name: database
              in: body
              type: string
              description: "Snowflake database containing battery production KPIs."
            - name: schema
              in: body
              type: string
              description: "Snowflake schema for battery manufacturing analytics."
            - name: shift_date
              in: body
              type: string
              description: "Date of the shift being reported in YYYY-MM-DD format."
          steps:
            - name: query-kpis
              type: call
              call: snowflake-battery.query-kpis
              with:
                database: "{{database}}"
                schema: "{{schema}}"
                shift_date: "{{shift_date}}"
            - name: post-shift-report
              type: call
              call: slack-battery.post-message
              with:
                channel: "manufacturing-ops"
                text: "Battery KPI report for shift {{shift_date}}: Data retrieved from {{database}}.{{schema}}. Review yield, throughput, and scrap metrics in Snowflake dashboard."
  consumes:
    - type: http
      namespace: snowflake-battery
      baseUri: "https://tesla.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: kpi-views
          path: "/databases/{{database}}/schemas/{{schema}}/tables"
          inputParameters:
            - name: database
              in: path
            - name: schema
              in: path
          operations:
            - name: query-kpis
              method: GET
    - type: http
      namespace: slack-battery
      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

Generates weekly Supercharger network utilization analytics from Snowflake and posts the digest to the charging infrastructure Slack channel.

naftiko: "0.5"
info:
  label: "Snowflake Charging Network Analytics Digest"
  description: "Generates weekly Supercharger network utilization analytics from Snowflake and posts the digest to the charging infrastructure Slack channel."
  tags:
    - infrastructure
    - snowflake
    - slack
    - charging
capability:
  exposes:
    - type: mcp
      namespace: charging-analytics
      port: 8080
      tools:
        - name: handle-charging-digest
          description: "Given a week identifier, query Supercharger utilization analytics from Snowflake and post to the charging infrastructure Slack channel."
          inputParameters:
            - name: week_start
              in: body
              type: string
              description: "Start date of the reporting week (YYYY-MM-DD)."
          steps:
            - name: query-utilization
              type: call
              call: snowflake-charging.run-query
              with:
                week_start: "{{week_start}}"
            - name: post-digest
              type: call
              call: slack-charging.post-message
              with:
                channel: "charging-infrastructure"
                text: "Weekly Charging Digest ({{week_start}}): Sessions: {{query-utilization.total_sessions}} | Avg utilization: {{query-utilization.avg_utilization}}% | Peak sites: {{query-utilization.peak_sites}}"
  consumes:
    - type: http
      namespace: snowflake-charging
      baseUri: "https://tesla.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: slack-charging
      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

Refreshes the customer satisfaction analytics pipeline in Snowflake and notifies the CX team in Slack when the dashboard is updated.

naftiko: "0.5"
info:
  label: "Snowflake Customer Satisfaction Dashboard Refresh"
  description: "Refreshes the customer satisfaction analytics pipeline in Snowflake and notifies the CX team in Slack when the dashboard is updated."
  tags:
    - analytics
    - snowflake
    - slack
    - customer-experience
capability:
  exposes:
    - type: mcp
      namespace: cx-analytics
      port: 8080
      tools:
        - name: handle-csat-refresh
          description: "Trigger a Snowflake pipeline refresh for customer satisfaction data and notify the CX team in Slack."
          inputParameters:
            - name: pipeline_name
              in: body
              type: string
              description: "Snowflake pipeline name for CSAT data."
          steps:
            - name: run-refresh
              type: call
              call: snowflake-cx.run-query
              with:
                pipeline_name: "{{pipeline_name}}"
            - name: notify-cx
              type: call
              call: slack-cx.post-message
              with:
                channel: "cx-analytics"
                text: "CSAT Dashboard Refreshed: {{pipeline_name}} | Records: {{run-refresh.rows_produced}} | Status: Complete"
  consumes:
    - type: http
      namespace: snowflake-cx
      baseUri: "https://tesla.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: slack-cx
      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

Runs a daily Snowflake query for Powerwall and Megapack energy production stats and posts the digest to the energy team Slack channel.

naftiko: "0.5"
info:
  label: "Snowflake Energy Production Daily Digest"
  description: "Runs a daily Snowflake query for Powerwall and Megapack energy production stats and posts the digest to the energy team Slack channel."
  tags:
    - energy
    - snowflake
    - slack
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: energy-digest
      port: 8080
      tools:
        - name: handle-energy-digest
          description: "Given a date, query energy production metrics from Snowflake and post a daily digest to the energy team Slack channel."
          inputParameters:
            - name: report_date
              in: body
              type: string
              description: "Date for the energy production report (YYYY-MM-DD)."
          steps:
            - name: query-production
              type: call
              call: snowflake-energy.run-query
              with:
                report_date: "{{report_date}}"
            - name: post-digest
              type: call
              call: slack-energy.post-message
              with:
                channel: "energy-team"
                text: "Energy Production Digest ({{report_date}}): Powerwall: {{query-production.powerwall_kwh}} kWh | Megapack: {{query-production.megapack_kwh}} kWh | Solar: {{query-production.solar_kwh}} kWh"
  consumes:
    - type: http
      namespace: snowflake-energy
      baseUri: "https://tesla.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: slack-energy
      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 current energy storage deployment metrics across Megapack installations.

naftiko: "0.5"
info:
  label: "Snowflake Energy Storage Query"
  description: "Queries Snowflake for current energy storage deployment metrics across Megapack installations."
  tags:
    - analytics
    - snowflake
    - energy
capability:
  exposes:
    - type: mcp
      namespace: energy-analytics
      port: 8080
      tools:
        - name: get-storage-metrics
          description: "Given a region, return Megapack energy storage deployment metrics from Snowflake. Use for energy operations dashboards."
          inputParameters:
            - name: region
              in: body
              type: string
              description: "Geographic region for Megapack installations."
          call: "snowflake-energy.run-query"
          with:
            region: "{{region}}"
          outputParameters:
            - name: results
              type: array
              mapping: "$.data"
  consumes:
    - type: http
      namespace: snowflake-energy
      baseUri: "https://tesla.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Generates a weekly fleet telematics summary from Snowflake for enterprise customers and posts it to the fleet management Slack channel.

naftiko: "0.5"
info:
  label: "Snowflake Fleet Telematics Weekly Summary"
  description: "Generates a weekly fleet telematics summary from Snowflake for enterprise customers and posts it to the fleet management Slack channel."
  tags:
    - fleet
    - snowflake
    - slack
    - telematics
capability:
  exposes:
    - type: mcp
      namespace: fleet-analytics
      port: 8080
      tools:
        - name: handle-fleet-summary
          description: "Given a fleet account ID and week, generate a telematics summary from Snowflake and post to the fleet management Slack channel."
          inputParameters:
            - name: fleet_account_id
              in: body
              type: string
              description: "Fleet customer account ID."
            - name: week_start
              in: body
              type: string
              description: "Start of the reporting week (YYYY-MM-DD)."
          steps:
            - name: query-telematics
              type: call
              call: snowflake-fleet.run-query
              with:
                fleet_account_id: "{{fleet_account_id}}"
                week_start: "{{week_start}}"
            - name: post-summary
              type: call
              call: slack-fleet.post-message
              with:
                channel: "fleet-management"
                text: "Fleet Weekly ({{week_start}}): Account {{fleet_account_id}} | Vehicles: {{query-telematics.vehicle_count}} | Miles: {{query-telematics.total_miles}} | Efficiency: {{query-telematics.avg_efficiency}} mi/kWh"
  consumes:
    - type: http
      namespace: snowflake-fleet
      baseUri: "https://tesla.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: slack-fleet
      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

Generates a daily FSD safety metrics report from Snowflake and posts it to the autonomous driving team Slack channel.

naftiko: "0.5"
info:
  label: "Snowflake FSD Safety Report to Slack"
  description: "Generates a daily FSD safety metrics report from Snowflake and posts it to the autonomous driving team Slack channel."
  tags:
    - ai
    - snowflake
    - slack
    - safety
capability:
  exposes:
    - type: mcp
      namespace: fsd-safety
      port: 8080
      tools:
        - name: handle-fsd-safety-report
          description: "Given a date range, query FSD safety metrics from Snowflake and post the report to the autonomous driving Slack channel."
          inputParameters:
            - name: date_from
              in: body
              type: string
              description: "Start date for the safety report (YYYY-MM-DD)."
            - name: date_to
              in: body
              type: string
              description: "End date for the safety report (YYYY-MM-DD)."
          steps:
            - name: query-safety
              type: call
              call: snowflake-fsd.run-query
              with:
                date_from: "{{date_from}}"
                date_to: "{{date_to}}"
            - name: post-report
              type: call
              call: slack-fsd.post-message
              with:
                channel: "fsd-safety"
                text: "FSD Safety Report ({{date_from}} to {{date_to}}): Disengagements: {{query-safety.disengagement_count}} | Miles driven: {{query-safety.total_miles}} | Safety score: {{query-safety.safety_score}}"
  consumes:
    - type: http
      namespace: snowflake-fsd
      baseUri: "https://tesla.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: slack-fsd
      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 Supercharger station utilization rates by region.

naftiko: "0.5"
info:
  label: "Snowflake Supercharger Utilization Query"
  description: "Queries Snowflake for Supercharger station utilization rates by region."
  tags:
    - analytics
    - snowflake
    - supercharger
capability:
  exposes:
    - type: mcp
      namespace: charger-analytics
      port: 8080
      tools:
        - name: get-utilization
          description: "Given a region code, return Supercharger utilization rates from Snowflake. Use for infrastructure capacity planning."
          inputParameters:
            - name: region
              in: body
              type: string
              description: "Region code for Supercharger stations."
          call: "snowflake-charger.run-query"
          with:
            region: "{{region}}"
          outputParameters:
            - name: utilization
              type: array
              mapping: "$.data"
  consumes:
    - type: http
      namespace: snowflake-charger
      baseUri: "https://tesla.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST

Checks Snowflake for stale or failed production analytics pipeline tasks and alerts the data engineering team in Slack if any are detected.

naftiko: "0.5"
info:
  label: "Snowflake Vehicle Production Analytics Pipeline Check"
  description: "Checks Snowflake for stale or failed production analytics pipeline tasks and alerts the data engineering team in Slack if any are detected."
  tags:
    - data
    - snowflake
    - slack
    - monitoring
    - manufacturing
    - data-engineering
capability:
  exposes:
    - type: mcp
      namespace: production-data-ops
      port: 8080
      tools:
        - name: check-production-pipeline
          description: "Given a Snowflake database and schema for production analytics, query task run history for failures and post a status update to the #data-engineering Slack channel. Use as a daily pre-shift check for Gigafactory production data feeds."
          inputParameters:
            - name: database
              in: body
              type: string
              description: "Snowflake database containing production analytics tasks."
            - name: schema
              in: body
              type: string
              description: "Snowflake schema for the vehicle production data pipeline."
          steps:
            - name: check-tasks
              type: call
              call: snowflake-prod.query-tasks
              with:
                database: "{{database}}"
                schema: "{{schema}}"
            - name: post-status
              type: call
              call: slack-de.post-message
              with:
                channel: "data-engineering"
                text: "Production pipeline health for {{database}}.{{schema}}: Task history retrieved. Review any failures before production reporting begins."
  consumes:
    - type: http
      namespace: snowflake-prod
      baseUri: "https://tesla.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: task-history
          path: "/databases/{{database}}/schemas/{{schema}}/tasks"
          inputParameters:
            - name: database
              in: path
            - name: schema
              in: path
          operations:
            - name: query-tasks
              method: GET
    - type: http
      namespace: slack-de
      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 safety incidents, creates Jira tickets for follow-up, and posts a summary to the safety team Slack channel.

naftiko: "0.5"
info:
  label: "Snowflake Vehicle Safety Incident Report"
  description: "Queries Snowflake for vehicle safety incidents, creates Jira tickets for follow-up, and posts a summary to the safety team Slack channel."
  tags:
    - safety
    - snowflake
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: vehicle-safety
      port: 8080
      tools:
        - name: handle-safety-incident-report
          description: "Given a date range, query vehicle safety incidents from Snowflake, create Jira follow-up tickets, and post a summary to the safety Slack channel."
          inputParameters:
            - name: date_from
              in: body
              type: string
              description: "Start date (YYYY-MM-DD)."
            - name: date_to
              in: body
              type: string
              description: "End date (YYYY-MM-DD)."
          steps:
            - name: query-incidents
              type: call
              call: snowflake-safety.run-query
              with:
                date_from: "{{date_from}}"
                date_to: "{{date_to}}"
            - name: create-ticket
              type: call
              call: jira-safety.create-issue
              with:
                project_key: "SAFE"
                issuetype: "Task"
                summary: "Safety incident review: {{date_from}} to {{date_to}} — {{query-incidents.incident_count}} incidents"
            - name: notify-safety
              type: call
              call: slack-safety.post-message
              with:
                channel: "vehicle-safety"
                text: "Safety Report ({{date_from}} to {{date_to}}): {{query-incidents.incident_count}} incidents | Jira: {{create-ticket.key}}"
  consumes:
    - type: http
      namespace: snowflake-safety
      baseUri: "https://tesla.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: jira-safety
      baseUri: "https://tesla.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-safety
      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

Initiates the annual performance review cycle in Workday, creates Jira tracking tasks, and notifies HR business partners in Slack.

naftiko: "0.5"
info:
  label: "Workday Annual Review Cycle Launcher"
  description: "Initiates the annual performance review cycle in Workday, creates Jira tracking tasks, and notifies HR business partners in Slack."
  tags:
    - hr
    - workday
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: review-cycle
      port: 8080
      tools:
        - name: handle-review-cycle-launch
          description: "Given a review cycle name and target date, create Jira tracking tasks and notify HR business partners in Slack."
          inputParameters:
            - name: cycle_name
              in: body
              type: string
              description: "Name of the performance review cycle."
            - name: target_date
              in: body
              type: string
              description: "Target completion date (YYYY-MM-DD)."
          steps:
            - name: create-tracking
              type: call
              call: jira-hr.create-issue
              with:
                project_key: "HR"
                issuetype: "Epic"
                summary: "Performance Review Cycle: {{cycle_name}} — Due {{target_date}}"
            - name: notify-hrbp
              type: call
              call: slack-hrbp.post-message
              with:
                channel: "hr-business-partners"
                text: "REVIEW CYCLE LAUNCHED: {{cycle_name}} | Due: {{target_date}} | Tracking: {{create-tracking.key}} | Please ensure all managers complete reviews by the deadline."
  consumes:
    - type: http
      namespace: jira-hr
      baseUri: "https://tesla.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-hrbp
      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

Checks the benefits enrollment status for an employee in Workday.

naftiko: "0.5"
info:
  label: "Workday Benefits Enrollment Status"
  description: "Checks the benefits enrollment status for an employee in Workday."
  tags:
    - hr
    - workday
    - benefits
capability:
  exposes:
    - type: mcp
      namespace: benefits-ops
      port: 8080
      tools:
        - name: get-enrollment-status
          description: "Given a Workday employee ID, return current benefits enrollment status. Use for HR onboarding validation."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "Workday employee ID."
          call: "workday-benefits.get-enrollment"
          with:
            employee_id: "{{employee_id}}"
          outputParameters:
            - name: enrollment
              type: object
              mapping: "$"
  consumes:
    - type: http
      namespace: workday-benefits
      baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/tesla"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: enrollments
          path: "/benefitEnrollments/{{employee_id}}"
          inputParameters:
            - name: employee_id
              in: path
          operations:
            - name: get-enrollment
              method: GET

Retrieves compensation band details for a given job profile from Workday.

naftiko: "0.5"
info:
  label: "Workday Compensation Band Lookup"
  description: "Retrieves compensation band details for a given job profile from Workday."
  tags:
    - hr
    - workday
    - compensation
capability:
  exposes:
    - type: mcp
      namespace: hr-ops
      port: 8080
      tools:
        - name: get-comp-band
          description: "Given a Workday job profile ID, return the compensation band range. Use for offer approvals and equity reviews."
          inputParameters:
            - name: job_profile_id
              in: body
              type: string
              description: "Workday job profile ID."
          call: "workday-hr.get-compensation"
          with:
            job_profile_id: "{{job_profile_id}}"
          outputParameters:
            - name: band
              type: object
              mapping: "$"
  consumes:
    - type: http
      namespace: workday-hr
      baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/tesla"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: compensation
          path: "/compensationBands/{{job_profile_id}}"
          inputParameters:
            - name: job_profile_id
              in: path
          operations:
            - name: get-compensation
              method: GET

Orchestrates contractor onboarding from Workday by provisioning limited access and notifying the hiring manager in Slack.

naftiko: "0.5"
info:
  label: "Workday Contractor Onboarding Orchestrator"
  description: "Orchestrates contractor onboarding from Workday by provisioning limited access and notifying the hiring manager in Slack."
  tags:
    - hr
    - workday
    - slack
    - contractors
capability:
  exposes:
    - type: mcp
      namespace: contractor-ops
      port: 8080
      tools:
        - name: handle-contractor-onboarding
          description: "Given a Workday contingent worker ID, retrieve their details and notify the hiring manager in Slack for access provisioning."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "Workday contingent worker ID."
            - name: manager_channel
              in: body
              type: string
              description: "Slack channel for the hiring manager."
          steps:
            - name: get-worker
              type: call
              call: workday-contractor.get-worker
              with:
                worker_id: "{{worker_id}}"
            - name: notify-manager
              type: call
              call: slack-contractor.post-message
              with:
                channel: "{{manager_channel}}"
                text: "CONTRACTOR START: {{get-worker.fullName}} ({{worker_id}}) | Role: {{get-worker.jobTitle}} | Please provision limited badge and system access."
  consumes:
    - type: http
      namespace: workday-contractor
      baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/tesla"
      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: slack-contractor
      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

Pulls diversity and inclusion metrics from Workday, generates a report, and posts it to the HR leadership Slack channel.

naftiko: "0.5"
info:
  label: "Workday Diversity Metrics Quarterly Report"
  description: "Pulls diversity and inclusion metrics from Workday, generates a report, and posts it to the HR leadership Slack channel."
  tags:
    - hr
    - workday
    - slack
    - dei
capability:
  exposes:
    - type: mcp
      namespace: dei-ops
      port: 8080
      tools:
        - name: handle-diversity-report
          description: "Given a quarter identifier, pull diversity metrics from Workday and post the report to HR leadership in Slack."
          inputParameters:
            - name: quarter
              in: body
              type: string
              description: "Quarter identifier (e.g. Q1-2026)."
          steps:
            - name: get-metrics
              type: call
              call: workday-dei.get-report
              with:
                quarter: "{{quarter}}"
            - name: post-report
              type: call
              call: slack-dei.post-message
              with:
                channel: "hr-leadership"
                text: "DEI Quarterly Report ({{quarter}}): Headcount: {{get-metrics.total_headcount}} | Gender diversity: {{get-metrics.gender_ratio}} | Ethnic diversity: {{get-metrics.ethnic_ratio}}"
  consumes:
    - type: http
      namespace: workday-dei
      baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/tesla"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: reports
          path: "/diversityMetrics"
          inputParameters:
            - name: quarter
              in: query
          operations:
            - name: get-report
              method: GET
    - type: http
      namespace: slack-dei
      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

Fetches active headcount by department from Workday and posts a monthly report to the finance Slack channel for workforce planning and cost center budgeting.

naftiko: "0.5"
info:
  label: "Workday Employee Headcount Report"
  description: "Fetches active headcount by department from Workday and posts a monthly report to the finance Slack channel for workforce planning and cost center budgeting."
  tags:
    - hr
    - finance
    - workday
    - slack
    - reporting
    - headcount
capability:
  exposes:
    - type: mcp
      namespace: workforce-reporting
      port: 8080
      tools:
        - name: publish-headcount-report
          description: "Fetch active headcount by department and team from Workday and post the summary to the #finance Slack channel. Use monthly for headcount planning or on-demand for executive workforce reviews."
          inputParameters:
            - name: as_of_date
              in: body
              type: string
              description: "Report as-of date in YYYY-MM-DD format."
          steps:
            - name: get-headcount
              type: call
              call: workday-hc.get-workers
              with:
                as_of_date: "{{as_of_date}}"
            - name: post-report
              type: call
              call: slack-finance.post-message
              with:
                channel: "finance"
                text: "Workday headcount as of {{as_of_date}}: Total active employees: {{get-headcount.total}}. Department breakdown available in Workday."
  consumes:
    - type: http
      namespace: workday-hc
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers"
          inputParameters:
            - name: as_of_date
              in: query
          operations:
            - name: get-workers
              method: GET
    - type: http
      namespace: slack-finance
      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

When an engineer is terminated in Workday, removes their GitHub organization membership, closes open Jira assignments, and notifies HR operations in Slack.

naftiko: "0.5"
info:
  label: "Workday Engineer Offboarding"
  description: "When an engineer is terminated in Workday, removes their GitHub organization membership, closes open Jira assignments, and notifies HR operations in Slack."
  tags:
    - hr
    - workday
    - github
    - jira
    - slack
    - offboarding
capability:
  exposes:
    - type: mcp
      namespace: hr-offboarding
      port: 8080
      tools:
        - name: offboard-engineer
          description: "Given a Workday worker ID, GitHub username, and Jira account ID, remove the engineer from the GitHub organization, search for open Jira issues, and notify #hr-ops in Slack. Use on confirmed engineer terminations from Workday."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "Workday worker ID of the departing engineer."
            - name: github_org
              in: body
              type: string
              description: "GitHub organization to remove the engineer from."
            - name: github_username
              in: body
              type: string
              description: "GitHub username of the departing engineer."
            - name: jira_account_id
              in: body
              type: string
              description: "Jira account ID to search for open assignments."
          steps:
            - name: remove-github-member
              type: call
              call: github-remove.remove-member
              with:
                org: "{{github_org}}"
                username: "{{github_username}}"
            - name: find-open-issues
              type: call
              call: jira-offboard.search-issues
              with:
                jql: "assignee={{jira_account_id}} AND status!=Done"
            - name: notify-hr
              type: call
              call: slack-offboard.post-message
              with:
                channel: "hr-ops"
                text: "Engineer offboarding: {{github_username}} ({{worker_id}}) removed from GitHub org {{github_org}}. Open Jira issues: {{find-open-issues.total}} — reassign before departure."
  consumes:
    - type: http
      namespace: github-remove
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: org-members
          path: "/orgs/{{org}}/members/{{username}}"
          inputParameters:
            - name: org
              in: path
            - name: username
              in: path
          operations:
            - name: remove-member
              method: DELETE
    - type: http
      namespace: jira-offboard
      baseUri: "https://tesla.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issue-search
          path: "/issue/search"
          inputParameters:
            - name: jql
              in: query
          operations:
            - name: search-issues
              method: GET
    - type: http
      namespace: slack-offboard
      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

When a leave request is submitted in Workday, validates team coverage and notifies the manager in Slack for approval.

naftiko: "0.5"
info:
  label: "Workday Leave Request Manager Notification"
  description: "When a leave request is submitted in Workday, validates team coverage and notifies the manager in Slack for approval."
  tags:
    - hr
    - workday
    - slack
    - leave-management
capability:
  exposes:
    - type: mcp
      namespace: leave-ops
      port: 8080
      tools:
        - name: handle-leave-request
          description: "Given a Workday employee ID and leave request details, check team coverage and notify the manager in Slack."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "Workday employee ID requesting leave."
            - name: leave_dates
              in: body
              type: string
              description: "Requested leave dates."
          steps:
            - name: get-worker
              type: call
              call: workday-leave.get-worker
              with:
                employee_id: "{{employee_id}}"
            - name: notify-manager
              type: call
              call: slack-hr.post-message
              with:
                channel: "manager-approvals"
                text: "LEAVE REQUEST: {{get-worker.fullName}} ({{employee_id}}) requests time off: {{leave_dates}}. Please review in Workday."
  consumes:
    - type: http
      namespace: workday-leave
      baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/tesla"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{employee_id}}"
          inputParameters:
            - name: employee_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: slack-hr
      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

When a new engineer is hired in Workday, creates a Jira onboarding task, provisions GitHub organization access, and sends a Slack welcome message to the team channel.

naftiko: "0.5"
info:
  label: "Workday New Engineer Onboarding"
  description: "When a new engineer is hired in Workday, creates a Jira onboarding task, provisions GitHub organization access, and sends a Slack welcome message to the team channel."
  tags:
    - hr
    - workday
    - jira
    - github
    - slack
    - onboarding
capability:
  exposes:
    - type: mcp
      namespace: hr-ops
      port: 8080
      tools:
        - name: onboard-engineer
          description: "Given a Workday worker ID and team slug, fetch new hire details, open a Jira HR onboarding task, invite the engineer to the GitHub organization, and post a Slack welcome message to the team channel. Use when a new engineer hire is confirmed in Workday."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "Workday worker ID for the new engineer."
            - name: github_org
              in: body
              type: string
              description: "GitHub organization to invite the new engineer to."
            - name: github_username
              in: body
              type: string
              description: "GitHub username of the new hire."
            - name: slack_channel
              in: body
              type: string
              description: "Slack channel for the engineer's team."
          steps:
            - name: get-worker
              type: call
              call: workday-workers.get-worker
              with:
                worker_id: "{{worker_id}}"
            - name: create-onboarding-task
              type: call
              call: jira-hr.create-issue
              with:
                project_key: "HR"
                issuetype: "Task"
                summary: "Engineer onboarding: {{get-worker.fullName}}"
                description: "Provision access for {{get-worker.fullName}} ({{worker_id}}). Start: {{get-worker.hireDate}}. GitHub: {{github_username}}"
            - name: invite-github
              type: call
              call: github-org.invite-member
              with:
                org: "{{github_org}}"
                username: "{{github_username}}"
            - name: post-welcome
              type: call
              call: slack-hr.post-message
              with:
                channel: "{{slack_channel}}"
                text: "Please welcome {{get-worker.fullName}} to the team! Onboarding task: {{create-onboarding-task.key}}. GitHub invite sent."
  consumes:
    - type: http
      namespace: workday-workers
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: jira-hr
      baseUri: "https://tesla.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: github-org
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: org-invitations
          path: "/orgs/{{org}}/invitations"
          inputParameters:
            - name: org
              in: path
          operations:
            - name: invite-member
              method: POST
    - type: http
      namespace: slack-hr
      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

When a new hire starts in Workday, triggers equipment provisioning and notifies the IT team in Slack.

naftiko: "0.5"
info:
  label: "Workday New Hire Equipment Provisioning"
  description: "When a new hire starts in Workday, triggers equipment provisioning and notifies the IT team in Slack."
  tags:
    - hr
    - workday
    - slack
    - onboarding
capability:
  exposes:
    - type: mcp
      namespace: it-provisioning
      port: 8080
      tools:
        - name: handle-equipment-provisioning
          description: "Given a Workday employee ID for a new hire, retrieve their details and notify IT for equipment provisioning in Slack."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "Workday employee ID of the new hire."
            - name: start_date
              in: body
              type: string
              description: "Employee start date (YYYY-MM-DD)."
          steps:
            - name: get-worker
              type: call
              call: workday-onboard.get-worker
              with:
                employee_id: "{{employee_id}}"
            - name: notify-it
              type: call
              call: slack-it.post-message
              with:
                channel: "it-provisioning"
                text: "NEW HIRE EQUIPMENT: {{get-worker.fullName}} ({{employee_id}}) | Start: {{start_date}} | Role: {{get-worker.jobTitle}} | Please provision laptop and access badges."
  consumes:
    - type: http
      namespace: workday-onboard
      baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/tesla"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{employee_id}}"
          inputParameters:
            - name: employee_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: slack-it
      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

Returns the number of open job requisitions in Workday for workforce planning.

naftiko: "0.5"
info:
  label: "Workday Open Requisitions Count"
  description: "Returns the number of open job requisitions in Workday for workforce planning."
  tags:
    - hr
    - workday
    - recruiting
capability:
  exposes:
    - type: mcp
      namespace: talent-ops
      port: 8080
      tools:
        - name: get-open-reqs
          description: "Given a department name, return the count of open requisitions in Workday. Use for headcount planning dashboards."
          inputParameters:
            - name: department
              in: body
              type: string
              description: "Department name to filter requisitions."
          call: "workday-recruit.get-requisitions"
          with:
            department: "{{department}}"
          outputParameters:
            - name: count
              type: number
              mapping: "$.total"
  consumes:
    - type: http
      namespace: workday-recruit
      baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/tesla"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: requisitions
          path: "/jobRequisitions"
          inputParameters:
            - name: department
              in: query
          operations:
            - name: get-requisitions
              method: GET

When an organizational change is made in Workday, updates team mappings in Jira and notifies affected teams in Slack.

naftiko: "0.5"
info:
  label: "Workday Org Restructure Notification"
  description: "When an organizational change is made in Workday, updates team mappings in Jira and notifies affected teams in Slack."
  tags:
    - hr
    - workday
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: org-ops
      port: 8080
      tools:
        - name: handle-org-restructure
          description: "Given a Workday supervisory org ID and the new structure details, update Jira project team and notify in Slack."
          inputParameters:
            - name: org_id
              in: body
              type: string
              description: "Workday supervisory organization ID."
            - name: change_description
              in: body
              type: string
              description: "Description of the organizational change."
          steps:
            - name: get-org
              type: call
              call: workday-org.get-org
              with:
                org_id: "{{org_id}}"
            - name: create-task
              type: call
              call: jira-org.create-issue
              with:
                project_key: "OPS"
                issuetype: "Task"
                summary: "Org restructure: {{get-org.name}} — {{change_description}}"
            - name: notify-teams
              type: call
              call: slack-org.post-message
              with:
                channel: "org-announcements"
                text: "ORG UPDATE: {{get-org.name}} | {{change_description}} | Tracking: {{create-task.key}}"
  consumes:
    - type: http
      namespace: workday-org
      baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/tesla"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: orgs
          path: "/supervisoryOrganizations/{{org_id}}"
          inputParameters:
            - name: org_id
              in: path
          operations:
            - name: get-org
              method: GET
    - type: http
      namespace: jira-org
      baseUri: "https://tesla.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-org
      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

Initiates a performance review cycle in Workday for a given department, creates tracking tasks in Jira for HR, and notifies managers via Slack to complete reviews.

naftiko: "0.5"
info:
  label: "Workday Performance Review Cycle Initiation"
  description: "Initiates a performance review cycle in Workday for a given department, creates tracking tasks in Jira for HR, and notifies managers via Slack to complete reviews."
  tags:
    - hr
    - workday
    - jira
    - slack
    - performance-management
capability:
  exposes:
    - type: mcp
      namespace: perf-ops
      port: 8080
      tools:
        - name: initiate-review-cycle
          description: "Given a Workday department ID and review cycle name, fetch the active worker list, create a Jira HR tracking task for the cycle, and notify department managers via Slack to complete performance reviews. Use at the start of each semi-annual review period."
          inputParameters:
            - name: department_id
              in: body
              type: string
              description: "Workday department ID for the review cycle."
            - name: cycle_name
              in: body
              type: string
              description: "Name of the performance review cycle (e.g. H1-2026 Review)."
            - name: deadline
              in: body
              type: string
              description: "Review submission deadline in YYYY-MM-DD format."
            - name: manager_channel
              in: body
              type: string
              description: "Slack channel for the department managers."
          steps:
            - name: get-department-workers
              type: call
              call: workday-dept.get-workers
              with:
                department_id: "{{department_id}}"
            - name: create-tracking-task
              type: call
              call: jira-perf.create-issue
              with:
                project_key: "HR"
                issuetype: "Task"
                summary: "{{cycle_name}}: Department {{department_id}} review cycle"
                description: "Performance review cycle {{cycle_name}} for department {{department_id}}. Workers in scope: {{get-department-workers.total}}. Deadline: {{deadline}}"
            - name: notify-managers
              type: call
              call: slack-perf.post-message
              with:
                channel: "{{manager_channel}}"
                text: "{{cycle_name}} performance reviews are now open for department {{department_id}}. {{get-department-workers.total}} employees in scope. Deadline: {{deadline}}. Tracking task: {{create-tracking-task.key}}"
  consumes:
    - type: http
      namespace: workday-dept
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers"
          inputParameters:
            - name: department_id
              in: query
          operations:
            - name: get-workers
              method: GET
    - type: http
      namespace: jira-perf
      baseUri: "https://tesla.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack-perf
      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 Workday for open job requisitions by department and posts a recruiting pipeline summary to the HR Slack channel for weekly talent acquisition reviews.

naftiko: "0.5"
info:
  label: "Workday Recruiting Pipeline Summary"
  description: "Queries Workday for open job requisitions by department and posts a recruiting pipeline summary to the HR Slack channel for weekly talent acquisition reviews."
  tags:
    - hr
    - workday
    - slack
    - recruiting
    - talent-acquisition
capability:
  exposes:
    - type: mcp
      namespace: recruiting-ops
      port: 8080
      tools:
        - name: digest-recruiting-pipeline
          description: "Fetch open job requisitions from Workday grouped by department and post a recruiting pipeline summary to the #hr Slack channel. Use weekly for talent acquisition reviews or on-demand for department hiring status checks."
          inputParameters:
            - name: department_id
              in: body
              type: string
              description: "Workday department ID to filter open requisitions (omit for all departments)."
          steps:
            - name: get-requisitions
              type: call
              call: workday-recruiting.get-requisitions
              with:
                department_id: "{{department_id}}"
                status: "open"
            - name: post-digest
              type: call
              call: slack-recruiting.post-message
              with:
                channel: "hr"
                text: "Recruiting pipeline for department {{department_id}}: {{get-requisitions.total}} open requisitions in Workday. Review candidate pipelines for priority roles."
  consumes:
    - type: http
      namespace: workday-recruiting
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: job-requisitions
          path: "/jobRequisitions"
          inputParameters:
            - name: department_id
              in: query
            - name: status
              in: query
          operations:
            - name: get-requisitions
              method: GET
    - type: http
      namespace: slack-recruiting
      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

When an employee termination is processed in Workday, revokes system access and notifies IT security in Slack.

naftiko: "0.5"
info:
  label: "Workday Termination to Access Revocation"
  description: "When an employee termination is processed in Workday, revokes system access and notifies IT security in Slack."
  tags:
    - hr
    - workday
    - slack
    - security
capability:
  exposes:
    - type: mcp
      namespace: offboarding-ops
      port: 8080
      tools:
        - name: handle-termination-revocation
          description: "Given a Workday employee ID for a terminated employee, retrieve their details, revoke access, and notify IT security in Slack."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "Workday employee ID of the terminated employee."
          steps:
            - name: get-worker
              type: call
              call: workday-term.get-worker
              with:
                employee_id: "{{employee_id}}"
            - name: notify-security
              type: call
              call: slack-security.post-message
              with:
                channel: "it-security"
                text: "ACCESS REVOCATION: Employee {{get-worker.fullName}} ({{employee_id}}) terminated. All system access must be revoked immediately."
  consumes:
    - type: http
      namespace: workday-term
      baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/tesla"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{employee_id}}"
          inputParameters:
            - name: employee_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: slack-security
      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