Tesla Capabilities
Naftiko 0.5 capability definitions for Tesla - 100 capabilities showing integration workflows and service orchestrations.
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