Automotive Industry Signals

Companies engaged in the design, manufacturing, and sale of motor vehicles, including connected vehicle technologies and mobility solutions.

This is a Naftiko Signals aggregate read of the Automotive industry — mined from public workforce signals (job postings, press releases, newsroom content) across 43 companies and matched against Naftiko’s curated vocabulary of services, tools, concepts, and standards across the 44 Naftiko signal groups.

Across 43 companies in Automotive we detected 1876 areas, 339 services, 213 tools, and 214 standards — producing an aggregate signal score of 8464.

How to read this page: Impact Report is the narrative read-out for the industry. Companies lists the 43 organizations included in the aggregate. Capabilities are Naftiko agent workflows common to Automotive — each one runnable in the Naftiko Framework. Navigation ranks the strategic moves we’d recommend for any company in this vertical. Signals is the aggregate score across every Naftiko signal group, each row linking to its definition. Areas, Services, Tools, and Standards are the raw aggregate detections behind the score. Why? explains the methodology and audience.

Take Control Of Your Signals — Become a Naftiko Design Partner Today!
What’s next for you? Pick your role — we’ll point you at the right capability and next step.

Automotive Industry Technology Investment Report

Prepared by Naftiko May 2026

Executive Summary

The Automotive industry encompasses 9 companies — BMW, Ford, GM, Honda, Hyundai, Mercedes-Benz, Tesla, Toyota Motor Corporation, and Volkswagen — spanning vehicle manufacturing and connected vehicles and mobility. Across 11 technology layers and 41 scoring areas, the three highest-scoring layers in absolute terms are Productivity (anchored by a Services breadth of 1,288 across the peer group), Retrieval & Grounding (Data scoring 641), and Foundational Layer (Cloud at 598, AI at 323). These three dimensions reveal an industry whose enterprise software estate, data infrastructure, and cloud substrate are mature — and whose AI deployment, model governance, and capability orchestration disciplines are still in early innings of catching up.

The most important strategic insight in this dataset is that no single company leads on every layer. Ford (total signal score 1,671) leads infrastructure: Operations (89), Cloud (125, near-tied with Volkswagen), Code (56), Containers (32), Integrations (47), Observability (59), and Data (136). Volkswagen (1,478) leads breadth: Cloud (127), Services (235), Virtualization (29), Event-Driven (18, tied with Toyota). Toyota Motor Corporation (1,462) leads safety-and-compliance: AI (66), Security (84), Governance (46), Regulatory Posture (17). BMW (1,377) leads MLOps: Multimodal Infrastructure (18), Model Registry & Versioning (17), AI Review & Approval (22), AI FinOps (9), Provider Strategy (17), Partnerships & Ecosystem (19), and CNCF (29). Hyundai (1,037) and Honda (819) are mid-tier across most layers. Tesla (620) is below the top tier on nearly every measure despite the company’s public AI identity — its Code (13), Containers (8), and Security (20) scores are the most striking gaps for a company whose vehicles run more than 100 million lines of software. GM and Mercedes-Benz were analyzed but show no measurable signal across our scoring areas in this pull.


Layer 1: Foundational Layer

The Foundational Layer evaluates the core capabilities that determine an organization’s capacity to build and scale AI-ready software — covering AI adoption, cloud infrastructure, open-source tooling, programming language breadth, and code practices.

Artificial Intelligence — Top Company: Toyota Motor Corporation (66)

Toyota Motor Corporation leads the automotive peer group in AI adoption with a score of 66, with BMW close behind at 64. Volkswagen (55) and Ford (53) round out the leading tier. Hyundai and Tesla are tied at 31, with Honda at 23. Tesla’s score — despite the company’s public positioning as an AI-first manufacturer — sits below Volkswagen, BMW, and Ford, suggesting Tesla’s AI investments are concentrated in proprietary autonomous-driving systems rather than enterprise AI platforms that generate broad signal. The peer group’s AI tooling is anchored by TensorFlow, Semantic Kernel, NumPy, and Kubeflow on the model side, with Dynatrace, Azure Machine Learning, Bloomberg AIM, and Hugging Face on the platform side. Toyota and BMW’s shared leadership reflects sustained, multi-year investment in AI engineering capability rather than marketing positioning.

Cloud — Top Company: Volkswagen (127)

Volkswagen leads Cloud at 127, with Ford (125) and Toyota Motor Corporation (122) in a tight three-way upper tier. BMW (81) is materially behind, and Hyundai (61), Honda (48), and Tesla (34) trail. The near-three-way tie at the top reflects independently converged hyperscaler-native architectures across the leading global automakers. Datadog, Azure Functions, Oracle Cloud, and Salesforce are universally deployed; Terraform is the standard infrastructure-as-code tool. BMW’s 81 — well below the top three despite its strong AI scores — reflects an architectural philosophy that prioritizes AI system design over raw cloud-footprint expansion.

Open-Source — Top Company: Ford (41)

Ford leads Open-Source at 41, with Volkswagen (36) and Toyota Motor Corporation (36) tied for second. Hyundai (30) and BMW (29) round out the leading group. Honda (22) and Tesla (22) trail. Ford’s open-source leadership reflects its Model e software strategy and commitment to open developer ecosystems for in-vehicle technology. GitLab, GitHub, and Azure DevOps are the standard collaboration platforms across the peer group. Tesla’s 22 is notable: a company claiming software-defined vehicle differentiation has a moderate open-source score, consistent with its closed hardware-software integration strategy.

Languages — Top Company: Ford (42)

Ford leads Languages at 42, with BMW (40) essentially tied. Volkswagen (39) and Toyota Motor Corporation (39) follow. Hyundai (30) and Honda (28) cluster in the mid-tier. Tesla (26) trails. The tight clustering at the top four companies reflects near-universal polyglot engineering capability among the major global automakers — a natural consequence of teams that must span embedded systems, cloud services, and mobile applications simultaneously. React Native, TensorFlow, Matplotlib, Apache Ant, and Pandas are the universal tools.

Code — Top Company: Ford (56)

Ford leads Code at 56 — a significant margin ahead of Volkswagen (41), Toyota Motor Corporation (41), and BMW (39). Hyundai (28), Honda (24), and Tesla (13) follow in descending order. Ford’s Code lead is the highest absolute Code score in the automotive dataset and reflects investment in CI/CD pipelines, code-quality tooling, and developer productivity infrastructure. GitLab and GitHub are universal; SonarQube is the standard quality-gate tool. Tesla’s 13 is the most striking gap relative to expectation: a company whose vehicles ship more software than any competitor has the lowest Code signal in the peer group, pointing to deeply proprietary, vertically integrated practices rather than shared developer tooling.


Layer 2: Retrieval & Grounding

The Retrieval & Grounding layer assesses how organizations structure and surface their data for AI consumption — covering data infrastructure, databases, virtualization, specifications, and context engineering.

Data — Top Company: Ford (136)

Ford leads Data at 136, with Volkswagen (109), Toyota Motor Corporation (106), and BMW (103) closely grouped. Hyundai (75) and Honda (53) follow. Tesla (38) trails the upper tier by a wide margin. The strong Data scores across the top four reflect companies managing vehicle telemetry, manufacturing data, dealer networks, and customer records at global scale. Elasticsearch, ClickHouse, Pandas, and NumPy form the universal analytics stack, with Datadog, Azure Log Analytics, Bloomberg Intelligence, and Crystal Reports anchoring data presentation. The Data gap between Honda (53) and the top-four cluster reflects a company that has not yet centralized its data infrastructure to the same degree.

Databases — Top Company: Ford (36)

Ford leads Databases at 36, with Volkswagen (33) and BMW (29) following. Toyota Motor Corporation (27), Hyundai (25), Tesla (17), and Honda (15) trail. The moderate absolute Databases scores reflect an industry managing heterogeneous database environments — relational systems for dealer management, time-series databases for vehicle telemetry, graph databases for supply chain — without having yet standardized on unified database architectures that would support AI retrieval at scale. Microsoft Entity Framework, Oracle Cloud, and Teradata anchor the relational tier; Apache AGE (graph) shows up across the peer group.

Virtualization — Top Company: Volkswagen (29)

Volkswagen leads Virtualization at 29, with Ford (25) and Toyota Motor Corporation (23) following. Hyundai (15) and Honda (13) trail, with BMW (12) and Tesla (6) at the low end. The Virtualization lead for Volkswagen — notably higher than its immediate competitors despite BMW and Toyota leading in AI and governance — suggests Volkswagen’s cloud transformation invested more heavily in virtualized infrastructure layers, consistent with its AWS partnership for the Volkswagen Automotive Cloud. BMW’s low Virtualization score (12) reinforces its pattern of prioritizing AI model infrastructure over raw compute virtualization breadth.

Specifications — Top Company: Toyota Motor Corporation (10)

Toyota Motor Corporation leads Specifications at 10, with BMW (8) and Ford (8) tied for second. Hyundai (1) trails significantly, with Volkswagen, Honda, and Tesla showing no signal. The Specifications gap between Toyota / Ford / BMW and the rest is one of the more consequential findings in the automotive dataset. Toyota’s investment in formal API and interface specifications likely reflects its Woven platform’s developer ecosystem strategy and the Toyota Developer Portal; Ford’s reflects its BlueOval Intelligence platform. Protocol Buffers, OpenAPI, and Swagger anchor the standards layer; Ambassador, Kong, MuleSoft, and Postman are the platform tier. The near-zero scores for Volkswagen and Honda represent a meaningful gap given both companies’ connected vehicle ambitions.

Context Engineering

Context Engineering signals are universal across the automotive peer group: Datadog, Dynatrace, Azure Machine Learning, Bloomberg AIM, and Hugging Face appear at near-universal adoption rates, reflecting a fully standardized enterprise services layer. Semantic Kernel, TensorFlow, NumPy, and Kubeflow are the universal context-engineering tools. The absence of differentiated company scores reflects an industry at the beginning of deliberate AI context design — the services and tooling infrastructure is in place but not yet organized around AI interaction architecture patterns.


Layer 3: Customization & Adaptation

The Customization & Adaptation layer examines how organizations build AI beyond general-purpose baselines — covering training data pipelines, model versioning, multimodal capabilities, and domain-specific model development.

Data Pipelines — Top Company: Ford (15)

Ford leads Data Pipelines at 15 — a significant margin ahead of Volkswagen (8), BMW (6), Toyota Motor Corporation (5), and Hyundai (4). Honda (2) and Tesla (1) trail despite Tesla’s large-scale autonomous-driving training pipelines. Ford’s lead is consistent with its broader infrastructure leadership and suggests structured, production-grade ML data pipelines rather than purely ad hoc training workflows. Apache Hop, Apache NiFi, Kafka Connect, Apache Tez, and Apache Airflow form the streaming-and-orchestration stack; Oracle GoldenGate, Power Query, SAP BW, and Azure Databricks anchor the data-movement tier. The low scores across most of the peer group — including Tesla — indicate that formal ML data-pipeline governance is not yet mature in automotive even as model training activities scale.

Model Registry & Versioning — Top Company: BMW (17)

BMW leads Model Registry & Versioning at 17, with Volkswagen (16) close behind. Toyota Motor Corporation (15) and Ford (13) follow. Tesla (8), Hyundai (7), and Honda (4) trail. BMW’s lead — combined with its Multimodal Infrastructure and AI Review & Approval leadership — confirms a company building the full MLOps stack rather than just training models. For an industry where AI systems will be integrated into safety-critical vehicle functions subject to UNECE WP.29 autonomous-driving regulation, formal model versioning and lineage tracking is not optional — it is a regulatory prerequisite. Azure Machine Learning, Hugging Face, and Databricks are the universal registry-and-lineage platforms; TensorFlow, NumPy, and Kubeflow form the tooling stack. BMW and Volkswagen’s lead positions them ahead of the compliance curve.

Multimodal Infrastructure — Top Company: BMW (18)

BMW leads Multimodal Infrastructure at 18, with Toyota Motor Corporation (13) and Volkswagen (10) following. Ford (9), Tesla (8), and Hyundai (7) cluster behind. Honda (5) trails. BMW’s lead is the most strategically significant score in this layer: automotive AI use cases are inherently multimodal — combining camera, radar, LiDAR, GPS, and CAN bus data with voice commands, navigation data, and cloud connectivity. Hugging Face, Gemini, GitHub Copilot, and OpenAI anchor the multimodal model tier; TensorFlow, Semantic Kernel, PyTorch, and Flux anchor the tooling layer. BMW’s investment reflects a deliberate architectural commitment to AI systems that process the full sensor array of modern vehicles, not merely text-or-image-single-modal systems.

Domain Specialization — Top Company: Ford (3)

Ford scores 3 in Domain Specialization, with Volkswagen, Toyota Motor Corporation, and BMW each at 2. The rest of the peer group shows no signal. As in other industries, near-zero Domain Specialization scores indicate that no automotive company has publicly committed to building or procuring AI models specifically trained on automotive-domain knowledge — vehicle systems engineering, powertrain physics, driving behavior modeling, or manufacturing quality science. The automotive industry generates some of the richest real-world sensor data on the planet and holds proprietary datasets that could support highly differentiated domain-adapted models. The near-zero scores suggest this opportunity remains unmaterialized.


Layer 4: Efficiency & Specialization

The Efficiency & Specialization layer measures how organizations deploy AI and technology to improve operational throughput — covering automation, containerization, platform engineering, and operational tooling.

Automation — Top Company: Ford (71)

Ford leads Automation at 71, with Volkswagen (63) and Toyota Motor Corporation (55) following. BMW (52), Hyundai (40), and Honda (32) round out the upper tier. Tesla (24) trails. Ford’s Automation leadership is consistent across infrastructure, operations, and workflow dimensions — the company has built industrial-strength automation practices that extend from infrastructure provisioning through manufacturing workflow management. PowerShell, Terraform, Apache Ant, SonarQube, and Buildpacks form the universal automation stack; GitLab, TeamCity, ServiceNow, Azure DevOps, and Microsoft Excel anchor the platform tier. The gap between Honda (32) and the top tier suggests Honda’s automation investment has not kept pace with the industry’s cloud-native transformation.

Containers — Top Company: Ford (32)

Ford leads Containers at 32, with Volkswagen (29), Toyota Motor Corporation (28), and BMW (28) essentially tied. Hyundai (22), Honda (12), and Tesla (8) trail. The tight cluster at the top four reflects an automotive industry that has standardized container deployment across enterprise and platform engineering teams. Kubeflow, Buildpacks, Pixie, Kubernetes, and Lima are the universal tools; Red Hat, Azure Kubernetes Service, Ambassador, and Amazon ECS form the platform tier. Honda’s 12 and Tesla’s 8 are the most notable gaps — Honda suggests incomplete cloud-native transformation, while Tesla’s low Container score is surprising for a company that claims software-defined vehicle differentiation.

Platform — Top Company: Ford (42)

Ford leads Platform at 42, with Toyota Motor Corporation (36) and Volkswagen (33) following. BMW (31) is close. Hyundai (27), Honda (23), and Tesla (22) cluster in the mid-tier. Ford’s platform lead is consistent with its broader infrastructure investment and reflects the company’s investment in internal developer platforms as a foundation for software-defined vehicle services. Datadog, GitHub, New Relic, Microsoft Azure, and Google Cloud Platform anchor the platform tier. The near-parity between Honda and Tesla (23 and 22) reveals that despite their very different public technology postures, both have similar platform maturity in enterprise technology infrastructure.

Operations — Top Company: Ford (89)

Ford leads Operations at 89 — the highest Operations score in the automotive dataset and notably high in absolute terms. Volkswagen (75), Toyota Motor Corporation (74), and BMW (65) follow in a tight upper tier. Hyundai (54), Honda (39), and Tesla (35) complete the range. The consistency of strong Operations scores across the top five companies (Ford through Hyundai, 54–89) reflects an automotive industry that has genuinely operationalized cloud-native practices rather than maintaining them as experimental capabilities. GitLab, GitHub, TeamCity, HubSpot, and ServiceNow are the universal operational platforms; Terraform, SonarQube, Kubernetes, werf, and Docker form the tooling stack. Tesla’s score of 35 is the clearest signal of an operational gap: a company competing on software-defined vehicles needs stronger operational infrastructure than traditional automakers, not weaker.


Layer 5: Productivity

The Productivity layer evaluates how organizations use technology to accelerate developer and business output — covering SaaS adoption, code tooling, and enterprise services breadth.

Software As A Service (SaaS) — Top Company: Volkswagen (6)

Volkswagen leads SaaS at 6, with Ford (4), Toyota Motor Corporation (3), and BMW (3) following. The low absolute SaaS scores reflect the narrow definition of this area relative to the Services measure below. The broader software-as-a-service footprint is captured in the Services scoring area. Productiv, Spot, Microsoft Office 365, Google Workspace, and Vendr anchor the SaaS-management tier across the peer group.

Code — Top Company: Ford (56)

Ford leads Code at 56, mirroring its Foundational Layer Code score. Volkswagen (41), Toyota Motor Corporation (41), and BMW (39) follow. Hyundai (28), Honda (24), and Tesla (13) complete the range. Ford’s score is the highest in the automotive dataset by a significant margin — suggesting Ford’s software-defined vehicle strategy has translated into genuine investment in developer productivity tooling, testing infrastructure, and code quality practices. Tesla’s 13 remains the most striking gap: the company with the most software-intensive vehicles in mass production has the lowest Code score in the peer group.

Services — Top Company: Volkswagen (235)

Volkswagen leads Services at 235, with Ford (226), BMW (218), and Toyota Motor Corporation (201) closely grouped. Hyundai (165), Honda (140), and Tesla (103) complete the range. The high Services scores across the top four companies reflect the full scope of automotive enterprise software footprints — CRM, ITSM, observability, marketing, and developer collaboration platforms — creating broad surface area for AI orchestration. Oracle Integration, Azure Kubernetes Service, Ambassador, Kong, and Apple anchor the platform tier; Apache SkyWalking, Spring Boot, Apache Web Services, Apache Axis, and Spring Cloud Stream form the runtime stack. Volkswagen’s lead in Services combined with its Cloud lead positions it as the company with the most connected enterprise software estate for AI layering.


Layer 6: Integration & Interoperability

The Integration & Interoperability layer measures how well organizations connect their systems — covering APIs, integration patterns, event-driven architecture, design patterns, specifications, Apache ecosystem, and CNCF tooling.

API — Top Company: Ford (23)

Ford leads API at 23, with Toyota Motor Corporation (21) close behind. BMW (17) follows, with Volkswagen (8), Hyundai (7), Tesla (4), and Honda (4) trailing. Ford’s API leadership reflects its BlueOval Intelligence platform and developer ecosystem programs; Toyota’s score reflects the Woven platform and the Toyota Developer Portal. The gap between Ford / Toyota / BMW and Volkswagen (8) is notable given Volkswagen’s leadership in Cloud and Services — it suggests Volkswagen has not yet translated its large enterprise software footprint into a formal API platform strategy. Ambassador, Kong, MuleSoft, Postman, and Amazon API Gateway anchor the platform tier; REST, OpenAPI, GraphQL, and SOA shape the standards layer.

Integrations — Top Company: Ford (47)

Ford leads Integrations at 47 — the highest integration score in the automotive dataset. Volkswagen (34), Toyota Motor Corporation (31), and BMW (26) follow. Hyundai (20), Honda (15), and Tesla (10) trail. Ford’s score reflects deep connectivity between enterprise systems — manufacturing execution, dealer management, CRM, supply chain, and vehicle telematics — integrated through a coherent data fabric rather than point-to-point connections. Oracle Integration, Microsoft Power Automate, WebSphere, Oracle GoldenGate, and Power Query anchor the integration platform tier; Apache Hop, Apache NiFi, Apache Streams, Kafka Connect, and Apache Airflow form the streaming stack.

Event-Driven — Top Company: Volkswagen (18)

Volkswagen and Toyota Motor Corporation share the top Event-Driven score at 18. Ford (17) is essentially tied. BMW (10) follows, with Hyundai (7), Honda (5), and Tesla (5) trailing. Event-driven architecture is particularly relevant for automotive: vehicle telemetry, connected-car events, and manufacturing sensor data are inherently event-driven. The near-three-way tie between Volkswagen, Toyota, and Ford reflects companies that have invested in event streaming infrastructure — Kafka Connect, Apache Storm, Apache Kafka, Spring Cloud Stream, and RabbitMQ — as a foundation for real-time automotive data processing. Event Sourcing, Event-driven Architecture, Pub/Sub, and CQRS anchor the standards layer. BMW’s 10 suggests its event-driven investment is more selective, concentrated in AI inference pipelines rather than broad event infrastructure.

Patterns — Top Company: Ford (17)

Ford leads Patterns at 17, with Volkswagen (15) and Toyota Motor Corporation (15) essentially tied. BMW (13) follows. Hyundai (9), Honda (7), and Tesla (5) complete the range. The tight clustering at the top four reflects broad investment in architectural design patterns as a standard engineering practice. Apache SkyWalking, Spring Boot, Spring Cloud Stream, Apache ShenYu, and gRPC anchor the platform tier; Dependency Injection, Integration Patterns, Domain-Driven Design, Design Patterns, and Database Schema Design shape the standards layer. Tesla’s Patterns score of 5 is another signal that its software engineering patterns are deeply proprietary rather than following enterprise architectural conventions.

Specifications — Top Company: Toyota Motor Corporation (10)

Toyota Motor Corporation, BMW (8), and Ford (8) lead Specifications. The rest of the peer group trails. The consistent Specifications gap between Toyota / Ford / BMW and the rest of the peer group reinforces the API program differentiation observed above. For connected-vehicle platforms that need to interoperate with insurance, navigation, third-party apps, and smart-city infrastructure, weak Specifications investment is a strategic limitation. Protocol Buffers, OpenAPI, and Swagger anchor the standards layer.

Apache — Top Company: Ford (14)

Ford leads Apache ecosystem adoption at 14 — materially ahead of Toyota Motor Corporation (7), Volkswagen (5), and BMW (5). Hyundai (3), Tesla (2), and Honda (1) trail. Ford’s Apache lead likely reflects Kafka and Spark deployment for vehicle telemetry streaming and large-scale data processing — consistent with its Data and Operations leadership. Apache Spark, Kafka Connect, Apache APR, Apache, and PySpark form the universal Apache toolchain. The low Apache scores for BMW, Volkswagen, and Toyota suggest those companies are relying more on cloud-native streaming services (AWS Kinesis, Google Cloud Pub/Sub, Azure Event Hubs) rather than self-managed Apache deployments.

CNCF — Top Company: BMW (29)

BMW leads CNCF at 29, with Volkswagen (28) essentially tied. Ford (25) follows. Hyundai (20) and Toyota Motor Corporation (18) are in the mid-tier. Honda (10), Tesla (7), and the rest trail. BMW’s CNCF leadership — particularly ahead of Ford and Toyota — is consistent with its investment in Kubernetes-native AI infrastructure. Kubeflow, Buildpacks, SPIRE, Pixie, and Open Policy Agent form the universal CNCF toolchain. The gap between BMW / Volkswagen and Honda (10) reflects a genuine cloud-native architecture divide within the automotive peer group.


Layer 7: Statefulness

The Statefulness layer examines how organizations maintain context and continuity across AI interactions and system transactions — covering observability, governance, security, and data persistence.

Observability — Top Company: Ford (59)

Ford leads Observability at 59, with Volkswagen (49) and Toyota Motor Corporation (42) following. BMW (38), Hyundai (33), and Honda (29) cluster in the mid-tier. Tesla (20) trails. Datadog, Azure Log Analytics, Dynatrace, New Relic, and SolarWinds form the universal commercial observability stack; Apache SkyWalking, Prometheus, Pixie, OpenTelemetry, and Spring Boot Admin Console anchor the open-source tier. The Observability gap between Ford (59) and Tesla (20) is one of the more significant operational signals in the dataset: strong observability is the prerequisite for safe AI operations, and a company with large-scale autonomous-driving aspirations needs deeper observability than Tesla’s score reflects.

Governance — Top Company: Toyota Motor Corporation (46)

Toyota Motor Corporation leads Governance at 46, with Ford (41), Volkswagen (39), and BMW (38) following in a tight upper tier. Hyundai (29) and Honda (29) cluster behind, with Tesla (15) trailing. Toyota’s governance leadership — combined with its Security and Regulatory Posture leads — reflects the company’s quality-management culture applied to technology governance. Open Policy Agent, Apache Atlas, Apache Ranger, Cloud Custodian, and Apache Archiva anchor the policy-and-lineage tier; Informatica, EMC, SimCorp Dimension, Microsoft Purview, and SailPoint form the platform layer. Tesla’s 15 is the most striking gap in the Statefulness layer: a company deploying Full Self-Driving software to hundreds of thousands of vehicles needs stronger governance infrastructure than it currently signals.

Security — Top Company: Toyota Motor Corporation (84)

Toyota Motor Corporation leads Security at 84 — the highest Security score in the automotive dataset. Ford (77) follows. Volkswagen (63), BMW (51), Hyundai (47), Honda (23), and Tesla (20) complete the range. Toyota and Ford’s security depth, well ahead of the peer group, reflects companies that have embedded security into their cloud and software development practices rather than treating it as a bolt-on compliance function. Palo Alto Networks, Microsoft Endpoint Manager, Cloudflare, SolarWinds, and Citrix NetScaler anchor the network-and-endpoint tier; SonarQube, Dex, SPIRE, Open Policy Agent, and Keycloak form the identity-and-policy stack. Honda’s 23 and Tesla’s 20 are the most concerning gaps: both companies have connected-vehicle platforms that create significant cyber-attack surfaces, and insufficient security depth creates customer and regulatory risk.

Data — Top Company: Ford (136)

Data scores under Statefulness mirror the Retrieval & Grounding layer exactly — Ford (136), Volkswagen (109), Toyota (106), BMW (103), Hyundai (75), Honda (53), Tesla (38) — confirming that data infrastructure investment is the most consistent cross-layer capability pattern in automotive. The strong data scores for the top four companies represent the foundational advantage that makes AI deployment viable: companies with rich, accessible vehicle telemetry, manufacturing data, and customer interaction records can build AI systems that learn from real-world automotive context at scale.


Layer 8: Measurement & Accountability

The Measurement & Accountability layer measures how organizations evaluate the impact and reliability of their technology investments — covering testing, observability, developer experience, and ROI/business metrics.

Testing & Quality — Top Company: Ford (25)

Ford leads Testing & Quality at 25, with Volkswagen (17), Toyota Motor Corporation (16), and BMW (16) following. Hyundai (12), Honda (8), and Tesla (5) trail. Jest, Selenium, Playwright, JUnit, and Cucumber form the universal testing toolchain. Ford’s lead reflects investment in formal testing infrastructure that extends beyond unit testing into integration and end-to-end practices. The relatively low absolute scores across the peer group — even at Ford’s lead — suggest that AI-specific testing practices (model validation, bias testing, integration testing for AI service endpoints) are still nascent across automotive.

Observability — Top Company: Ford (59)

Observability under Measurement & Accountability mirrors the Statefulness layer with the same per-company scores. The cross-layer consistency reinforces that observability is the connective tissue of any modern technology operation — and that Ford’s lead at 59 versus Tesla’s 20 has compounding impact across both runtime safety (Statefulness) and post-hoc accountability (Measurement) dimensions.

Developer Experience — Top Company: Ford (28)

Ford leads Developer Experience at 28, with Volkswagen (20) and Toyota Motor Corporation (20) tied for second. BMW (17), Hyundai (12), Honda (10), and Tesla (8) trail. GitHub Copilot, Apigee, Sentry System, Amazon Q anchor the developer-experience platform tier; Backstage and Litmus form the internal developer platform stack. Ford’s lead is consistent with its broader Code, Operations, and Platform investments — together they signal a company that has made developer productivity a first-class strategic priority.

ROI & Business Metrics — Top Company: Ford (50)

Ford leads ROI & Business Metrics at 50, with Toyota Motor Corporation (47), BMW (46), and Volkswagen (43) closely grouped. Hyundai (32), Honda (29), and Tesla (22) trail. Google Analytics, Bloomberg Intelligence, Crystal Reports, Datadog, and Azure Log Analytics anchor the analytics platform tier; Elasticsearch, ClickHouse, Apache ORC, Apache Spark, and Apache Streams form the data-warehouse stack. The tight clustering among the top four companies reflects an industry where AI investment is being measured in cycle-time compression, defect-rate reduction, dealer-conversion lift, and cost-per-recall — not activity metrics.


Layer 9: Governance & Risk

The Governance & Risk layer evaluates the disciplines required to deploy AI safely in regulated environments — covering regulatory posture, AI review and approval, security, governance, and privacy.

Regulatory Posture — Top Company: Toyota Motor Corporation (17)

Toyota Motor Corporation leads Regulatory Posture at 17, with BMW (13) and Ford (13) tied for second. Volkswagen (12) and Hyundai (8) follow. Honda (5) and Tesla (4) trail. Toyota’s lead reflects a quality-management culture that treats regulatory engagement as a first-class engineering discipline. NIST, Regulation, Standard Operating Procedures, Regulatory, and LICENSE.md anchor the standards layer; EMC, Microsoft Purview, SailPoint, Nessus, and Bloomberg Buyside Enterprise Solutions form the platform tier. The relatively low absolute scores across the peer group reflect an industry that has begun investing in regulatory infrastructure but is still building it out.

AI Review & Approval — Top Company: BMW (22)

BMW leads AI Review & Approval at 22, with Toyota Motor Corporation (19), Ford (17), and Volkswagen (12) following. Hyundai (10), Tesla (9), and Honda (5) trail. BMW’s lead — combined with its Multimodal Infrastructure and Model Registry leads — reinforces a company that is building the full MLOps stack rather than just experimenting with models. For an industry where AI systems will be deployed in safety-critical vehicle functions, formal review-and-approval gates are not optional.

Security — Top Company: Toyota Motor Corporation (84)

Security under Governance & Risk mirrors the Statefulness layer (Toyota 84 / Ford 77 / Volkswagen 63 / BMW 51 / Hyundai 47 / Honda 23 / Tesla 20). The cross-layer consistency confirms that security is treated as a fundamental capability across both runtime (Statefulness) and risk (Governance) dimensions — and that the Toyota / Ford lead is the clearest competitive moat in this industry.

Governance — Top Company: Toyota Motor Corporation (46)

Governance scores under this layer mirror Layer 7. Toyota’s continued lead — combined with its Security and Regulatory Posture leads — positions it as the automotive industry’s clearest “compliance-first” company. SECURITY.md, NIST, Standard Operating Procedures, Regulatory, and LICENSE.md anchor the standards layer.

Privacy & Data Rights — Top Company: BMW (7)

BMW leads Privacy & Data Rights at 7, with Volkswagen (6), Toyota Motor Corporation (6), and Ford (6) tied behind. Hyundai (4), Honda (3), and Tesla (3) trail. The low absolute scores across the peer group reflect an industry that has not yet built deep privacy-and-data-rights infrastructure — a meaningful gap given GDPR, CCPA, HIPAA, and PCI Compliance standards already in scope. Veritas InfoScale and Veritas NetBackup anchor the data-protection tier; Zot is the registry-side privacy tool.


Layer 10: Economics & Sustainability

The Economics & Sustainability layer evaluates how organizations manage the financial and human capital dimensions of their technology investments — covering AI FinOps, provider strategy, partnerships, talent design, and data centers.

AI FinOps — Top Company: BMW (9)

BMW leads AI FinOps at 9, with Volkswagen (8), Toyota Motor Corporation (7), and Ford (7) following. Hyundai (5), Honda (3), and Tesla (3) trail. BMW’s lead — combined with its Provider Strategy and Partnerships & Ecosystem leads — reflects a company that is treating AI cost management as a strategic discipline. Vantage, Harness, nOps, Kion, and Zesty form the FinOps platform tier; Cloud Custodian anchors the policy layer; FinOps and OpenCost anchor the standards layer. The relatively low absolute scores across the peer group reflect a category that is still nascent industry-wide.

Provider Strategy — Top Company: BMW (17)

BMW leads Provider Strategy at 17, with Ford (15), Toyota Motor Corporation (13), and Volkswagen (10) following. Hyundai (8), Honda (5), and Tesla (4) trail. Provider Strategy reflects investment in deliberate sourcing and multi-cloud / multi-vendor risk-management posture. Azure Arc, Cisco Collaboration Hybrid Solutions, and Workday Suppliers anchor the multi-cloud / vendor-management tier; Cloud Custodian and Crossplane form the policy-and-control-plane stack.

Partnerships & Ecosystem — Top Company: BMW (19)

BMW leads Partnerships & Ecosystem at 19, with Volkswagen (17), Ford (16), and Toyota Motor Corporation (10) following. Hyundai (7), Honda (5), and Tesla (4) trail. BMW’s lead reflects deep public investment in technology partnerships across cloud providers, AI labs, and industrial-data partners. The relatively low absolute scores across the peer group reflect partnerships that are typically negotiated privately; the scoring captures only what surfaces in public-facing signals.

Talent & Organizational Design — Top Company: BMW (23)

BMW and Ford share the top Talent & Organizational Design score at 23, with Hyundai (19) and Volkswagen (19) tied for second. Toyota Motor Corporation (17), Honda (12), and Tesla (10) trail. BMW’s lead — combined with its broader MLOps and FinOps leadership — reflects deliberate investment in AI platform engineering roles, AI center-of-excellence structures, and career paths that bridge data science and enterprise engineering. Indeed anchors the talent-acquisition platform tier.

Data Centers

Data Centers signals show no differentiated company scores. The aggregate signal across the peer group reflects modest in-scope data-center investment relative to hyperscaler-cloud adoption.


Layer 11: Storytelling & Entertainment & Theater

The Storytelling layer measures how organizations communicate their technology and AI strategy externally — covering alignment, standardization, mergers and acquisitions, and experimentation.

Alignment — Top Company: Ford (30)

Ford leads Alignment at 30, with Volkswagen (27), Hyundai (25), and BMW (25) following. Toyota Motor Corporation (24), Honda (20), and Tesla (15) complete the range. Ford’s lead reflects sustained external communication investment around its software-defined vehicle strategy — the company has built coherent narratives for investors, regulators, and engineering talent audiences. The tight mid-tier cluster (Volkswagen through Honda, 20–27) reflects automotive companies broadly committed to narrative investment.

Standardization — Top Company: Ford (15)

Ford leads Standardization at 15, with Toyota Motor Corporation (13), BMW (11), and Volkswagen (10) following. Hyundai (8), Honda (6), and Tesla (4) trail. ISO, NIST, Technical Specifications, CODE_OF_CONDUCT.md, and Data Quality Standards anchor the standards layer.

Mergers & Acquisitions — Top Company: BMW (24)

BMW and Ford share the top Mergers & Acquisitions score at 24, with Volkswagen (21) and Toyota Motor Corporation (20) following. Hyundai (15), Honda (10), and Tesla (5) trail. The M&A scores reflect signals from public partnership announcements, investment-and-acquisition press, and corporate development activity — generally high across the top four global automakers.

Experimentation & Prototyping

Experimentation & Prototyping signals show no differentiated company scores. The aggregate signal across the peer group reflects modest in-scope experimentation investment that has not yet surfaced in differentiated public signals.


Industry Strategic Assessment

The Automotive industry has built a substantial cloud and data substrate across the top four global automakers — Ford, Volkswagen, Toyota, and BMW — but it has not yet converted that substrate into a coherent AI deployment, model-governance, and capability-orchestration framework. The Total Signal Score of 8,464 across 41 scoring areas reflects strong investment in foundational layers (Cloud 598, Data 641, Operations 442, Services 1,288) and growing investment in AI (323) and Governance (237). The gap between the foundational substrate and the AI orchestration layer is the central strategic story of this dataset: every leading automaker has the cloud and data infrastructure to run sophisticated AI in production, and none has yet built the full set of governance, model-registry, API, and capability disciplines required to do so safely at scale.

Three areas stand out where the industry collectively lags relative to its substrate. Specifications (29) is a strategic limitation — Ford and Toyota lead with formal API specification programs, but Volkswagen (4) and Honda (2) trail despite their connected-vehicle ambitions, and the peer group as a whole has not yet adopted the OpenAPI / AsyncAPI / JSON Schema discipline that connected vehicles need to interoperate with insurance, navigation, third-party apps, and smart-city infrastructure. Data Pipelines (41) sits at one-fifteenth of Data scoring (641) — the industry runs on batch data movement when AI inference runs on streams; closing that gap is the highest-leverage investment for connected-vehicle and manufacturing AI use cases. Privacy & Data Rights (36) lags AI investment (323) by nearly an order of magnitude — vehicle telemetry, biometric driver monitoring, and connected-services data create real privacy obligations that most of the peer group has not yet operationalized.

The two clearest competitive strengths are Toyota’s Security / Governance / Regulatory posture and BMW’s MLOps stack. Toyota Motor Corporation leads Security at 84, Governance at 46, and Regulatory Posture at 17 — a coherent posture that positions the company to deploy AI into safety-critical vehicle functions under UNECE WP.29 and FMVSS regulation faster than its peers. BMW leads Multimodal Infrastructure (18), Model Registry & Versioning (17), AI Review & Approval (22), AI FinOps (9), and CNCF (29) — the full MLOps stack required to run AI reliably and economically at scale. Ford’s broad infrastructure leadership — Operations, Cloud, Code, Containers, Integrations, Observability, Data Pipelines, Apache, Developer Experience — is the platform-first profile that makes it the most natural lighthouse design partner for any capability framework that wraps the existing automotive enterprise stack rather than replacing it.

The opportunity for Naftiko is clear: every leading automaker has the infrastructure and the AI ambition; what they lack is the capability-driven integration layer that turns vehicle telemetry, dealer systems, manufacturing data, and connected-vehicle services into governable, composable, AI-consumable surfaces. We are inviting Ford, Volkswagen, Toyota, and BMW design-partner conversations that explore how the Naftiko Framework can take their existing API estate and turn it into a governed capability fleet — one that AI agents can call, and that platform teams can audit, end-to-end.

Companies — Total:43

  • Allison Transmission Holdings
    Fortune 1000 company Allison Transmission Holdings. Public API documentation has not yet been catalogued in...
  • American Axle and Manufacturing
    American Axle & Manufacturing (AAM), now operating as Dauch Corporation following the February 2026 acquisition...
  • Asbury Automotive Group
    Asbury Automotive Group is one of the largest automotive retailers in the United States, operating...
  • Autoliv
    Autoliv is the world's largest automotive safety supplier, designing, manufacturing, and selling airbags, seatbelts, steering...
  • AutoNation
    AutoNation is the largest automotive retailer in the United States, operating over 250 new and...
  • BMW
    A German multinational manufacturer of luxury vehicles, motorcycles, and engines. Produces premium automobiles under the...
  • BorgWarner
    BorgWarner is a global automotive supplier designing and manufacturing propulsion systems, thermal management, battery systems,...
  • Carvana
    Carvana is an e-commerce platform for buying, selling, and financing used cars online, featuring home...
  • Cooper Standard Holdings
    Cooper Standard Holdings is a global automotive supplier headquartered in Northville, Michigan, that designs, engineers,...
  • Cummins
    Cummins is a global power leader that designs, manufactures, distributes, and services diesel and natural...
  • Dana
    Dana Incorporated is a global supplier of fully integrated drivetrain and electrified propulsion systems for...
  • Ford
    An American multinational automobile manufacturer and one of the largest automakers in the world. Produces...
  • Ford Motor
    Ford Motor Company is a global automotive manufacturer that designs, manufactures, markets, and services a...
  • Garrett Motion
    Profile for Garrett Motion in the API Evangelist network. Fortune F1000 (rank 739).
  • General Motors
    One of the world's largest automakers designing, manufacturing, and selling vehicles under brands like Chevrolet,...
  • Goodyear Tire & Rubber
    The Goodyear Tire & Rubber Company is a global tire manufacturer that provides developer APIs...
  • Group 1 Automotive
    Group 1 Automotive is an international Fortune 500 automotive retailer with automotive dealerships and collision...
  • Harley-Davidson
    Shop the Official Harley-Davidson site for new and used motorcycles, genuine parts and apparel. Locate...
  • Hertz
    In airports around the world and rental car locations near you, get a great selection...
  • Honda
    A Japanese multinational manufacturer of automobiles, motorcycles, and power equipment. The world's largest motorcycle manufacturer...
  • Hyundai
    A South Korean multinational automotive manufacturer and one of the world's largest car companies. Produces...
  • Lear
    Lear Corporation is a Fortune 500 global automotive technology leader in Seating and E-Systems, delivering...
  • Lithia Motors
    Lithia Motors is one of the largest automotive retailers in the United States, operating new...
  • LKQ Corporation
    LKQ Corporation is a Fortune 500 company and a leading provider of alternative and specialty...
  • Lyft
    Lyft is a transportation network company that develops, markets, and operates a mobile app offering...
  • Mercedes-Benz
    A German multinational automotive company and one of the world's most recognizable luxury vehicle manufacturers....
  • PACCAR
    PACCAR is a global technology leader in the design, manufacture, and customer support of premium...
  • Penske
    A diversified transportation services conglomerate operating truck leasing, logistics, automotive retail, and professional motorsports across...
  • Penske Automotive
    Penske Automotive Group is a Fortune 500 diversified international transportation services company that operates automotive...
  • Polaris
    Profile for Polaris in the API Evangelist network. Fortune F500 (rank 424).
  • REV Group
    Profile for REV Group in the API Evangelist network. Fortune F1000 (rank 892).
  • Rivian Automotive
    Rivian Automotive is an American electric vehicle manufacturer that designs and builds adventure-oriented electric trucks,...
  • Rush Enterprises
    Rush Enterprises is the largest network of commercial vehicle dealerships in North America, operating Rush...
  • Ryder System
    Ryder System, Inc. is a leading provider of supply chain, dedicated transportation, and fleet management...
  • Sonic Automotive
    Sonic Automotive is one of the largest automotive retailers in the United States, operating 100+...
  • Tesla
    An American electric vehicle and clean energy company that transformed the global automotive industry. Designs...
  • Thor Industries
    Thor Industries is the world's largest manufacturer of recreational vehicles, owning subsidiary brands including Airstream,...
  • Toyota Motor Corporation
    The world's largest automobile manufacturer by production volume, producing a wide range of vehicles from...
  • Visteon
    Visteon Corporation is a global automotive electronics supplier providing innovative cockpit electronics products and connected...
  • Volkswagen
    A German multinational automotive manufacturer and one of the world's largest automakers by revenue. Operates...
  • Vontier
    Vontier is a global mobility technology company serving convenience stores, fleet operators, and auto repair...
  • Wabash National
    Profile for Wabash National in the API Evangelist network. Fortune F1000 (rank 913).
  • Winnebago Industries
    Winnebago Industries is a leading North American manufacturer of outdoor lifestyle products under the Winnebago,...

Capabilities are Naftiko definitions for how industry-common services, tools, and standards can be combined to deliver business value using AI. Each capability defines the integrations, workflows, and orchestrations available across this vertical — run them with the Naftiko Framework or browse the shipped set in the Naftiko Fleet.

Sort
Expand
763 capabilities

Retrieves the latest pull request status for a Bitbucket repository, returning title, state, author, and reviewers.

naftiko: '0.5'
info:
  label: Bitbucket Pull Request Status
  description: Retrieves the latest pull request status for a Bitbucket repository, returning title, state, author, and reviewers.
  tags:
  - development
  - bitbucket
  - code-review
capability:
  exposes:
  - type: mcp
    namespace: code-review
    port: 8080
    tools:
    - name: get-latest-pr
      description: Look up the latest pull request for a Bitbucket repository.
      inputParameters:
      - name: workspace
        in: body
        type: string
        description: The Bitbucket workspace slug.
      - name: repo_slug
        in: body
        type: string
        description: The repository slug.
      call: bitbucket.get-latest-pr
      with:
        workspace: '{{workspace}}'
        repo_slug: '{{repo_slug}}'
      outputParameters:
      - name: title
        type: string
        mapping: $.values[0].title
      - name: state
        type: string
        mapping: $.values[0].state
      - name: author
        type: string
        mapping: $.values[0].author.display_name
  consumes:
  - type: http
    namespace: bitbucket
    baseUri: https://api.bitbucket.org/2.0
    authentication:
      type: bearer
      token: $secrets.bitbucket_token
    resources:
    - name: pull-requests
      path: /repositories/{{workspace}}/{{repo_slug}}/pullrequests?sort=-created_on&pagelen=1
      inputParameters:
      - name: workspace
        in: path
      - name: repo_slug
        in: path
      operations:
      - name: get-latest-pr
        method: GET
Open in Framework → View in Fleet → bitbucket-pull-request-status.yml

Creates a LinkedIn job posting for infrastructure engineering roles by pulling the job spec from SharePoint and publishing via the LinkedIn API.

naftiko: '0.5'
info:
  label: LinkedIn Job Posting Publisher
  description: Creates a LinkedIn job posting for infrastructure engineering roles by pulling the job spec from SharePoint and publishing via the LinkedIn API.
  tags:
  - hr
  - recruitment
  - linkedin
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: hr-recruitment
    port: 8080
    tools:
    - name: publish-job-posting
      description: Given a job spec document path in SharePoint, publish a LinkedIn job posting.
      inputParameters:
      - name: site_id
        in: body
        type: string
        description: SharePoint site ID containing job specs.
      - name: job_spec_path
        in: body
        type: string
        description: Path to the job specification document.
      - name: job_title
        in: body
        type: string
        description: The job title for the posting.
      - name: location
        in: body
        type: string
        description: Job location.
      steps:
      - name: get-job-spec
        type: call
        call: sharepoint.get-file
        with:
          site_id: '{{site_id}}'
          file_path: '{{job_spec_path}}'
      - name: post-to-linkedin
        type: call
        call: linkedin.create-job-posting
        with:
          title: '{{job_title}}'
          location: '{{location}}'
          description: '{{get-job-spec.content}}'
  consumes:
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: files
      path: /{{site_id}}/drive/root:/{{file_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: file_path
        in: path
      operations:
      - name: get-file
        method: GET
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: job-postings
      path: /simpleJobPostings
      operations:
      - name: create-job-posting
        method: POST
Open in Framework → View in Fleet → linkedin-job-posting-publisher.yml

Sends a message to a Microsoft Teams channel, used for automated engineering notifications.

naftiko: '0.5'
info:
  label: Microsoft Teams Channel Message
  description: Sends a message to a Microsoft Teams channel, used for automated engineering notifications.
  tags:
  - collaboration
  - microsoft-teams
  - notification
capability:
  exposes:
  - type: mcp
    namespace: team-comms
    port: 8080
    tools:
    - name: send-channel-message
      description: Post a message to a Microsoft Teams channel.
      inputParameters:
      - name: team_id
        in: body
        type: string
        description: The Microsoft Teams team ID.
      - name: channel_id
        in: body
        type: string
        description: The channel ID within the team.
      - name: message
        in: body
        type: string
        description: The message text to post.
      call: msteams.post-channel-message
      with:
        team_id: '{{team_id}}'
        channel_id: '{{channel_id}}'
        text: '{{message}}'
  consumes:
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → microsoft-teams-channel-message.yml

Triggers a new PagerDuty incident for critical infrastructure alerts, routing to the appropriate on-call engineering team.

naftiko: '0.5'
info:
  label: PagerDuty Incident Trigger
  description: Triggers a new PagerDuty incident for critical infrastructure alerts, routing to the appropriate on-call engineering team.
  tags:
  - incident-management
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: pagerduty
    port: 8080
    tools:
    - name: trigger-incident
      description: Create a new PagerDuty incident.
      inputParameters:
      - name: service_id
        in: body
        type: string
        description: The PagerDuty service ID to trigger against.
      - name: title
        in: body
        type: string
        description: Incident title.
      - name: urgency
        in: body
        type: string
        description: 'Incident urgency: high or low.'
      call: pagerduty.create-incident
      with:
        service_id: '{{service_id}}'
        title: '{{title}}'
        urgency: '{{urgency}}'
      outputParameters:
      - name: incident_id
        type: string
        mapping: $.incident.id
      - name: incident_url
        type: string
        mapping: $.incident.html_url
  consumes:
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: incidents
      path: /incidents
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → pagerduty-incident-trigger.yml

Sends an SMS notification to a specified phone number using Twilio, typically for infrastructure alert escalation.

naftiko: '0.5'
info:
  label: Twilio SMS Notification
  description: Sends an SMS notification to a specified phone number using Twilio, typically for infrastructure alert escalation.
  tags:
  - notifications
  - twilio
capability:
  exposes:
  - type: mcp
    namespace: twilio-sms
    port: 8080
    tools:
    - name: send-sms
      description: Send an SMS message to a phone number.
      inputParameters:
      - name: to
        in: body
        type: string
        description: Recipient phone number in E.164 format.
      - name: message
        in: body
        type: string
        description: The SMS message body.
      call: twilio.send-message
      with:
        to: '{{to}}'
        from: $secrets.twilio_from_number
        body: '{{message}}'
      outputParameters:
      - name: message_sid
        type: string
        mapping: $.sid
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: twilio
    baseUri: https://api.twilio.com/2010-04-01/Accounts/$secrets.twilio_account_sid
    authentication:
      type: basic
      username: $secrets.twilio_account_sid
      password: $secrets.twilio_auth_token
    resources:
    - name: messages
      path: /Messages.json
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → twilio-sms-notification.yml

Retrieves application performance metrics from New Relic for a given application ID, returning response time, throughput, and error rate.

naftiko: '0.5'
info:
  label: New Relic Application Performance Lookup
  description: Retrieves application performance metrics from New Relic for a given application ID, returning response time, throughput, and error rate.
  tags:
  - monitoring
  - new-relic
  - performance
capability:
  exposes:
  - type: mcp
    namespace: apm-monitoring
    port: 8080
    tools:
    - name: get-app-performance
      description: Look up New Relic APM metrics for an application.
      inputParameters:
      - name: app_id
        in: body
        type: string
        description: The New Relic application ID.
      call: newrelic.get-app-metrics
      with:
        app_id: '{{app_id}}'
      outputParameters:
      - name: response_time
        type: string
        mapping: $.application.application_summary.response_time
      - name: throughput
        type: string
        mapping: $.application.application_summary.throughput
      - name: error_rate
        type: string
        mapping: $.application.application_summary.error_rate
  consumes:
  - type: http
    namespace: newrelic
    baseUri: https://api.newrelic.com/v2
    authentication:
      type: apiKey
      key: $secrets.newrelic_api_key
    resources:
    - name: applications
      path: /applications/{{app_id}}.json
      inputParameters:
      - name: app_id
        in: path
      operations:
      - name: get-app-metrics
        method: GET
Open in Framework → View in Fleet → new-relic-application-performance-lookup.yml

Retrieves metadata for an S3 object, returning key, size, last modified date, and content type for infrastructure data files.

naftiko: '0.5'
info:
  label: Amazon S3 Object Retrieval
  description: Retrieves metadata for an S3 object, returning key, size, last modified date, and content type for infrastructure data files.
  tags:
  - cloud-storage
  - amazon-s3
  - data
capability:
  exposes:
  - type: mcp
    namespace: s3-storage
    port: 8080
    tools:
    - name: get-s3-object-info
      description: Look up an S3 object by bucket and key.
      inputParameters:
      - name: bucket
        in: body
        type: string
        description: The S3 bucket name.
      - name: key
        in: body
        type: string
        description: The object key.
      call: s3.head-object
      with:
        bucket: '{{bucket}}'
        key: '{{key}}'
      outputParameters:
      - name: content_type
        type: string
        mapping: $.ContentType
      - name: content_length
        type: integer
        mapping: $.ContentLength
      - name: last_modified
        type: string
        mapping: $.LastModified
  consumes:
  - type: http
    namespace: s3
    baseUri: https://{{bucket}}.s3.amazonaws.com
    authentication:
      type: aws-sigv4
      accessKeyId: $secrets.aws_access_key
      secretAccessKey: $secrets.aws_secret_key
    resources:
    - name: objects
      path: /{{key}}
      inputParameters:
      - name: bucket
        in: path
      - name: key
        in: path
      operations:
      - name: head-object
        method: HEAD
Open in Framework → View in Fleet → amazon-s3-object-retrieval.yml

Triggers an Informatica Cloud data integration task and returns the run ID and status for ETL monitoring.

naftiko: '0.5'
info:
  label: Informatica Data Pipeline Trigger
  description: Triggers an Informatica Cloud data integration task and returns the run ID and status for ETL monitoring.
  tags:
  - data-integration
  - informatica
  - etl
capability:
  exposes:
  - type: mcp
    namespace: data-integration
    port: 8080
    tools:
    - name: trigger-informatica-task
      description: Trigger an Informatica Cloud task by task ID.
      inputParameters:
      - name: task_id
        in: body
        type: string
        description: The Informatica Cloud task ID.
      - name: task_type
        in: body
        type: string
        description: The task type (e.g., DSS, MTT).
      call: informatica.start-task
      with:
        taskId: '{{task_id}}'
        taskType: '{{task_type}}'
  consumes:
  - type: http
    namespace: informatica
    baseUri: https://na1.dm-us.informaticacloud.com/saas/api/v2
    authentication:
      type: bearer
      token: $secrets.informatica_token
    resources:
    - name: jobs
      path: /job
      operations:
      - name: start-task
        method: POST
Open in Framework → View in Fleet → informatica-data-pipeline-trigger.yml

Creates an OpsGenie alert for infrastructure system issues, routing to the appropriate engineering team.

naftiko: '0.5'
info:
  label: OpsGenie Alert Creation
  description: Creates an OpsGenie alert for infrastructure system issues, routing to the appropriate engineering team.
  tags:
  - alerting
  - opsgenie
capability:
  exposes:
  - type: mcp
    namespace: opsgenie
    port: 8080
    tools:
    - name: create-alert
      description: Create a new OpsGenie alert.
      inputParameters:
      - name: message
        in: body
        type: string
        description: Alert message.
      - name: priority
        in: body
        type: string
        description: 'Priority level: P1 through P5.'
      - name: team
        in: body
        type: string
        description: Responder team name.
      call: opsgenie.create-alert
      with:
        message: '{{message}}'
        priority: '{{priority}}'
        team: '{{team}}'
      outputParameters:
      - name: request_id
        type: string
        mapping: $.requestId
      - name: result
        type: string
        mapping: $.result
  consumes:
  - type: http
    namespace: opsgenie
    baseUri: https://api.opsgenie.com/v2
    authentication:
      type: apiKey
      name: Authorization
      in: header
      value: GenieKey $secrets.opsgenie_api_key
    resources:
    - name: alerts
      path: /alerts
      operations:
      - name: create-alert
        method: POST
Open in Framework → View in Fleet → opsgenie-alert-creation.yml

Scans a Docker container image for known vulnerabilities using Snyk Container, returning findings and severity scores.

naftiko: '0.5'
info:
  label: Docker Image Vulnerability Scan
  description: Scans a Docker container image for known vulnerabilities using Snyk Container, returning findings and severity scores.
  tags:
  - security
  - snyk
capability:
  exposes:
  - type: mcp
    namespace: container-security
    port: 8080
    tools:
    - name: scan-image
      description: Scan a Docker image for vulnerabilities.
      inputParameters:
      - name: image
        in: body
        type: string
        description: The Docker image reference (e.g., registry/repo:tag).
      call: snyk.test-image
      with:
        image: '{{image}}'
      outputParameters:
      - name: vulnerability_count
        type: integer
        mapping: $.summary.totalVulnerabilities
      - name: critical_count
        type: integer
        mapping: $.summary.criticalVulnerabilities
  consumes:
  - type: http
    namespace: snyk
    baseUri: https://api.snyk.io/v1
    authentication:
      type: bearer
      token: $secrets.snyk_token
    resources:
    - name: test
      path: /test/docker
      operations:
      - name: test-image
        method: POST
Open in Framework → View in Fleet → docker-image-vulnerability-scan.yml

Sends an email via Microsoft Outlook Graph API for automated project communications.

naftiko: '0.5'
info:
  label: Microsoft Outlook Email Notification
  description: Sends an email via Microsoft Outlook Graph API for automated project communications.
  tags:
  - communication
  - microsoft-outlook
  - email
capability:
  exposes:
  - type: mcp
    namespace: email-comms
    port: 8080
    tools:
    - name: send-email
      description: Send an email via Microsoft Outlook.
      inputParameters:
      - name: to
        in: body
        type: string
        description: Recipient email address.
      - name: subject
        in: body
        type: string
        description: Email subject line.
      - name: body
        in: body
        type: string
        description: Email body content.
      call: outlook.send-mail
      with:
        to: '{{to}}'
        subject: '{{subject}}'
        body: '{{body}}'
  consumes:
  - type: http
    namespace: outlook
    baseUri: https://graph.microsoft.com/v1.0/me
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: mail
      path: /sendMail
      operations:
      - name: send-mail
        method: POST
Open in Framework → View in Fleet → microsoft-outlook-email-notification.yml

Lists files in an Autodesk Docs project folder, returning names, versions, and last-modified timestamps for BIM document management.

naftiko: '0.5'
info:
  label: Autodesk Docs File Listing
  description: Lists files in an Autodesk Docs project folder, returning names, versions, and last-modified timestamps for BIM document management.
  tags:
  - bim
  - autodesk
capability:
  exposes:
  - type: mcp
    namespace: autodesk-docs
    port: 8080
    tools:
    - name: list-files
      description: List files in an Autodesk Docs project folder.
      inputParameters:
      - name: project_id
        in: body
        type: string
        description: The Autodesk project ID.
      - name: folder_id
        in: body
        type: string
        description: The folder ID within the project.
      call: autodesk.list-folder-contents
      with:
        project_id: '{{project_id}}'
        folder_id: '{{folder_id}}'
      outputParameters:
      - name: items
        type: array
        mapping: $.data
      - name: count
        type: integer
        mapping: $.total
  consumes:
  - type: http
    namespace: autodesk
    baseUri: https://developer.api.autodesk.com/data/v1
    authentication:
      type: bearer
      token: $secrets.autodesk_token
    resources:
    - name: folder-contents
      path: /projects/{{project_id}}/folders/{{folder_id}}/contents
      inputParameters:
      - name: project_id
        in: path
      - name: folder_id
        in: path
      operations:
      - name: list-folder-contents
        method: GET
Open in Framework → View in Fleet → autodesk-docs-file-listing.yml

Invokes an AWS Lambda function synchronously, returning the function response payload for serverless infrastructure automation.

naftiko: '0.5'
info:
  label: AWS Lambda Function Invocation
  description: Invokes an AWS Lambda function synchronously, returning the function response payload for serverless infrastructure automation.
  tags:
  - serverless
  - aws-lambda
capability:
  exposes:
  - type: mcp
    namespace: aws-lambda
    port: 8080
    tools:
    - name: invoke-function
      description: Invoke an AWS Lambda function by name.
      inputParameters:
      - name: function_name
        in: body
        type: string
        description: The Lambda function name or ARN.
      - name: payload
        in: body
        type: string
        description: JSON payload to pass to the function.
      call: lambda.invoke
      with:
        function_name: '{{function_name}}'
        payload: '{{payload}}'
      outputParameters:
      - name: status_code
        type: integer
        mapping: $.StatusCode
      - name: response_payload
        type: string
        mapping: $.Payload
  consumes:
  - type: http
    namespace: lambda
    baseUri: https://lambda.us-east-1.amazonaws.com/2015-03-31
    authentication:
      type: aws-sigv4
      accessKeyId: $secrets.aws_access_key
      secretAccessKey: $secrets.aws_secret_key
    resources:
    - name: functions
      path: /functions/{{function_name}}/invocations
      inputParameters:
      - name: function_name
        in: path
      operations:
      - name: invoke
        method: POST
Open in Framework → View in Fleet → aws-lambda-function-invocation.yml

Retrieves Cloudflare DNS records for a given zone, returning record type, name, content, and TTL.

naftiko: '0.5'
info:
  label: Cloudflare DNS Record Lookup
  description: Retrieves Cloudflare DNS records for a given zone, returning record type, name, content, and TTL.
  tags:
  - networking
  - cloudflare
  - dns
capability:
  exposes:
  - type: mcp
    namespace: dns-management
    port: 8080
    tools:
    - name: get-dns-records
      description: Look up DNS records for a Cloudflare zone.
      inputParameters:
      - name: zone_id
        in: body
        type: string
        description: The Cloudflare zone ID.
      - name: record_name
        in: body
        type: string
        description: The DNS record name to filter by.
      call: cloudflare.list-dns-records
      with:
        zone_id: '{{zone_id}}'
        name: '{{record_name}}'
  consumes:
  - type: http
    namespace: cloudflare
    baseUri: https://api.cloudflare.com/client/v4
    authentication:
      type: bearer
      token: $secrets.cloudflare_token
    resources:
    - name: dns-records
      path: /zones/{{zone_id}}/dns_records?name={{name}}
      inputParameters:
      - name: zone_id
        in: path
      - name: name
        in: query
      operations:
      - name: list-dns-records
        method: GET
Open in Framework → View in Fleet → cloudflare-dns-record-lookup.yml

Triggers a Power BI dataset refresh for infrastructure analytics dashboards and returns refresh status.

naftiko: '0.5'
info:
  label: Power BI Dashboard Refresh
  description: Triggers a Power BI dataset refresh for infrastructure analytics dashboards and returns refresh status.
  tags:
  - analytics
  - power-bi
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: bi-reporting
    port: 8080
    tools:
    - name: refresh-dataset
      description: Trigger a Power BI dataset refresh by dataset ID.
      inputParameters:
      - name: dataset_id
        in: body
        type: string
        description: The Power BI dataset ID.
      - name: group_id
        in: body
        type: string
        description: The Power BI workspace (group) ID.
      call: powerbi.refresh-dataset
      with:
        group_id: '{{group_id}}'
        dataset_id: '{{dataset_id}}'
  consumes:
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: datasets
      path: /groups/{{group_id}}/datasets/{{dataset_id}}/refreshes
      inputParameters:
      - name: group_id
        in: path
      - name: dataset_id
        in: path
      operations:
      - name: refresh-dataset
        method: POST
Open in Framework → View in Fleet → power-bi-dashboard-refresh.yml

Creates a Zoom meeting for infrastructure project reviews and returns the join URL and meeting ID.

naftiko: '0.5'
info:
  label: Zoom Meeting Scheduler
  description: Creates a Zoom meeting for infrastructure project reviews and returns the join URL and meeting ID.
  tags:
  - collaboration
  - zoom
  - meetings
capability:
  exposes:
  - type: mcp
    namespace: meeting-scheduler
    port: 8080
    tools:
    - name: create-zoom-meeting
      description: Create a Zoom meeting with specified topic and duration.
      inputParameters:
      - name: topic
        in: body
        type: string
        description: The meeting topic.
      - name: duration
        in: body
        type: integer
        description: Meeting duration in minutes.
      - name: start_time
        in: body
        type: string
        description: Meeting start time in ISO 8601 format.
      call: zoom.create-meeting
      with:
        topic: '{{topic}}'
        duration: '{{duration}}'
        start_time: '{{start_time}}'
      outputParameters:
      - name: join_url
        type: string
        mapping: $.join_url
      - name: meeting_id
        type: string
        mapping: $.id
  consumes:
  - type: http
    namespace: zoom
    baseUri: https://api.zoom.us/v2
    authentication:
      type: bearer
      token: $secrets.zoom_token
    resources:
    - name: meetings
      path: /users/me/meetings
      operations:
      - name: create-meeting
        method: POST
Open in Framework → View in Fleet → zoom-meeting-scheduler.yml

Posts a message to a Slack channel for infrastructure team communications and automated notifications.

naftiko: '0.5'
info:
  label: Slack Channel Message
  description: Posts a message to a Slack channel for infrastructure team communications and automated notifications.
  tags:
  - messaging
  - slack
capability:
  exposes:
  - type: mcp
    namespace: slack
    port: 8080
    tools:
    - name: post-message
      description: Post a message to a Slack channel.
      inputParameters:
      - name: channel
        in: body
        type: string
        description: The Slack channel ID.
      - name: text
        in: body
        type: string
        description: Message text.
      call: slack.post-message
      with:
        channel: '{{channel}}'
        text: '{{text}}'
      outputParameters:
      - name: ts
        type: string
        mapping: $.ts
      - name: ok
        type: boolean
        mapping: $.ok
  consumes:
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → slack-channel-message.yml

Retrieves employee details from Workday by worker ID, returning name, department, title, and work email.

naftiko: '0.5'
info:
  label: Workday Employee Directory Lookup
  description: Retrieves employee details from Workday by worker ID, returning name, department, title, and work email.
  tags:
  - hr
  - workday
  - employee
capability:
  exposes:
  - type: mcp
    namespace: hr-directory
    port: 8080
    tools:
    - name: get-employee
      description: Look up an employee in Workday by worker ID.
      inputParameters:
      - name: worker_id
        in: body
        type: string
        description: The Workday worker ID.
      call: workday.get-worker
      with:
        worker_id: '{{worker_id}}'
      outputParameters:
      - name: full_name
        type: string
        mapping: $.fullName
      - name: department
        type: string
        mapping: $.department
      - name: title
        type: string
        mapping: $.jobTitle
      - name: email
        type: string
        mapping: $.workEmail
  consumes:
  - type: http
    namespace: workday
    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
Open in Framework → View in Fleet → workday-employee-directory-lookup.yml

Retrieves Oracle Cloud Infrastructure cost summary for a given date range and compartment, returning total cost and breakdown by service.

naftiko: '0.5'
info:
  label: Oracle Cloud Cost Report
  description: Retrieves Oracle Cloud Infrastructure cost summary for a given date range and compartment, returning total cost and breakdown by service.
  tags:
  - cloud
  - oracle-cloud
  - cost-management
  - finance
capability:
  exposes:
  - type: mcp
    namespace: cloud-finance
    port: 8080
    tools:
    - name: get-cost-report
      description: Retrieve OCI cost summary for a compartment and date range.
      inputParameters:
      - name: compartment_id
        in: body
        type: string
        description: The OCI compartment OCID.
      - name: start_date
        in: body
        type: string
        description: Start date in YYYY-MM-DD format.
      - name: end_date
        in: body
        type: string
        description: End date in YYYY-MM-DD format.
      call: oci.get-cost-summary
      with:
        compartment_id: '{{compartment_id}}'
        start_date: '{{start_date}}'
        end_date: '{{end_date}}'
  consumes:
  - type: http
    namespace: oci
    baseUri: https://usagecost.oraclecloud.com/20200107
    authentication:
      type: bearer
      token: $secrets.oci_token
    resources:
    - name: cost-summaries
      path: /usage
      operations:
      - name: get-cost-summary
        method: POST
Open in Framework → View in Fleet → oracle-cloud-cost-report.yml

Retrieves a HubSpot contact by email address, returning name, company, lifecycle stage, and lead status.

naftiko: '0.5'
info:
  label: HubSpot Contact Lookup
  description: Retrieves a HubSpot contact by email address, returning name, company, lifecycle stage, and lead status.
  tags:
  - marketing
  - hubspot
  - contacts
capability:
  exposes:
  - type: mcp
    namespace: marketing-crm
    port: 8080
    tools:
    - name: get-contact
      description: Look up a HubSpot contact by email.
      inputParameters:
      - name: email
        in: body
        type: string
        description: The contact email address.
      call: hubspot.get-contact-by-email
      with:
        email: '{{email}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.properties.firstname
      - name: company
        type: string
        mapping: $.properties.company
      - name: lifecycle_stage
        type: string
        mapping: $.properties.lifecyclestage
      - name: lead_status
        type: string
        mapping: $.properties.hs_lead_status
  consumes:
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com/crm/v3
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: contacts
      path: /objects/contacts/{{email}}?idProperty=email
      inputParameters:
      - name: email
        in: path
      operations:
      - name: get-contact-by-email
        method: GET
Open in Framework → View in Fleet → hubspot-contact-lookup.yml

Retrieves a Microsoft Project schedule summary by project ID, returning task count, percent complete, and next milestone.

naftiko: '0.5'
info:
  label: Microsoft Project Schedule Lookup
  description: Retrieves a Microsoft Project schedule summary by project ID, returning task count, percent complete, and next milestone.
  tags:
  - project-management
  - microsoft-project
  - scheduling
capability:
  exposes:
  - type: mcp
    namespace: pm-scheduling
    port: 8080
    tools:
    - name: get-project-schedule
      description: Look up a Microsoft Project schedule summary.
      inputParameters:
      - name: project_id
        in: body
        type: string
        description: The Microsoft Project project ID.
      call: msproject.get-project
      with:
        project_id: '{{project_id}}'
      outputParameters:
      - name: task_count
        type: integer
        mapping: $.taskCount
      - name: percent_complete
        type: string
        mapping: $.percentComplete
      - name: next_milestone
        type: string
        mapping: $.nextMilestone.name
  consumes:
  - type: http
    namespace: msproject
    baseUri: https://project.microsoft.com/api/v1
    authentication:
      type: bearer
      token: $secrets.msproject_token
    resources:
    - name: projects
      path: /projects/{{project_id}}
      inputParameters:
      - name: project_id
        in: path
      operations:
      - name: get-project
        method: GET
Open in Framework → View in Fleet → microsoft-project-schedule-lookup.yml

Retrieves the current status of a Datadog monitor by ID, returning state, name, and last triggered timestamp.

naftiko: '0.5'
info:
  label: Datadog Infrastructure Alert Lookup
  description: Retrieves the current status of a Datadog monitor by ID, returning state, name, and last triggered timestamp.
  tags:
  - monitoring
  - infrastructure
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: infra-monitoring
    port: 8080
    tools:
    - name: get-monitor-status
      description: Look up a Datadog monitor by ID. Returns monitor name, overall state, and last triggered time.
      inputParameters:
      - name: monitor_id
        in: body
        type: string
        description: The Datadog monitor ID.
      call: datadog.get-monitor
      with:
        monitor_id: '{{monitor_id}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.name
      - name: state
        type: string
        mapping: $.overall_state
      - name: last_triggered
        type: string
        mapping: $.overall_state_modified
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apiKey
      key: $secrets.datadog_api_key
      appKey: $secrets.datadog_app_key
    resources:
    - name: monitors
      path: /monitor/{{monitor_id}}
      inputParameters:
      - name: monitor_id
        in: path
      operations:
      - name: get-monitor
        method: GET
Open in Framework → View in Fleet → datadog-infrastructure-alert-lookup.yml

Retrieves a Visio diagram from SharePoint and returns download metadata for engineering documentation workflows.

naftiko: '0.5'
info:
  label: Microsoft Visio Diagram Export
  description: Retrieves a Visio diagram from SharePoint and returns download metadata for engineering documentation workflows.
  tags:
  - documentation
  - microsoft-visio
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: doc-export
    port: 8080
    tools:
    - name: get-visio-diagram
      description: Retrieve a Visio diagram from SharePoint by site and file path.
      inputParameters:
      - name: site_id
        in: body
        type: string
        description: The SharePoint site ID.
      - name: file_path
        in: body
        type: string
        description: Path to the Visio file.
      call: sharepoint.get-file
      with:
        site_id: '{{site_id}}'
        file_path: '{{file_path}}'
      outputParameters:
      - name: file_name
        type: string
        mapping: $.name
      - name: download_url
        type: string
        mapping: $.@microsoft.graph.downloadUrl
      - name: last_modified
        type: string
        mapping: $.lastModifiedDateTime
  consumes:
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: files
      path: /{{site_id}}/drive/root:/{{file_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: file_path
        in: path
      operations:
      - name: get-file
        method: GET
Open in Framework → View in Fleet → microsoft-visio-diagram-export.yml

Retrieves file metadata from Box by file ID, returning name, size, owner, and shared link for engineering document access.

naftiko: '0.5'
info:
  label: Box File Retrieval
  description: Retrieves file metadata from Box by file ID, returning name, size, owner, and shared link for engineering document access.
  tags:
  - collaboration
  - box
  - documents
capability:
  exposes:
  - type: mcp
    namespace: cloud-storage
    port: 8080
    tools:
    - name: get-box-file
      description: Look up a Box file by ID.
      inputParameters:
      - name: file_id
        in: body
        type: string
        description: The Box file ID.
      call: box.get-file
      with:
        file_id: '{{file_id}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.name
      - name: size
        type: integer
        mapping: $.size
      - name: owner
        type: string
        mapping: $.owned_by.name
      - name: shared_link
        type: string
        mapping: $.shared_link.url
  consumes:
  - type: http
    namespace: box
    baseUri: https://api.box.com/2.0
    authentication:
      type: bearer
      token: $secrets.box_token
    resources:
    - name: files
      path: /files/{{file_id}}
      inputParameters:
      - name: file_id
        in: path
      operations:
      - name: get-file
        method: GET
Open in Framework → View in Fleet → box-file-retrieval.yml

Retrieves metadata for a SharePoint document by path, returning file name, size, last modified date, and download URL.

naftiko: '0.5'
info:
  label: SharePoint Document Retrieval
  description: Retrieves metadata for a SharePoint document by path, returning file name, size, last modified date, and download URL.
  tags:
  - collaboration
  - sharepoint
  - documents
capability:
  exposes:
  - type: mcp
    namespace: doc-management
    port: 8080
    tools:
    - name: get-document
      description: Look up a SharePoint document by site and path.
      inputParameters:
      - name: site_id
        in: body
        type: string
        description: The SharePoint site ID.
      - name: file_path
        in: body
        type: string
        description: The path to the file within the site drive.
      call: sharepoint.get-file
      with:
        site_id: '{{site_id}}'
        file_path: '{{file_path}}'
      outputParameters:
      - name: file_name
        type: string
        mapping: $.name
      - name: size
        type: integer
        mapping: $.size
      - name: last_modified
        type: string
        mapping: $.lastModifiedDateTime
      - name: download_url
        type: string
        mapping: $.@microsoft.graph.downloadUrl
  consumes:
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: files
      path: /{{site_id}}/drive/root:/{{file_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: file_path
        in: path
      operations:
      - name: get-file
        method: GET
Open in Framework → View in Fleet → sharepoint-document-retrieval.yml

Monitors Snowflake data quality, creates Jira ticket when issues found, and alerts data engineering via Teams.

naftiko: '0.5'
info:
  label: Data Lake Ingestion Quality Monitor
  description: Monitors Snowflake data quality, creates Jira ticket when issues found, and alerts data engineering via Teams.
  tags:
  - data-engineering
  - snowflake
  - jira
  - microsoft-teams
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: data-engineering-ops
    port: 8080
    tools:
    - name: data-lake-ingestion-quality-monitor
      description: Monitors Snowflake data quality, creates Jira ticket when issues found, and alerts data engineering via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Data Lake Ingestion Quality Monitor: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Data Lake Ingestion Quality Monitor: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_data-engineering_channel_id
          text: 'Data Lake Ingestion Quality Monitor | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → data-lake-ingestion-quality-monitor.yml

Collects environmental sensor data via Datadog, logs in ServiceNow, and alerts EHS via Teams when thresholds are exceeded.

naftiko: '0.5'
info:
  label: Environmental Compliance Monitoring
  description: Collects environmental sensor data via Datadog, logs in ServiceNow, and alerts EHS via Teams when thresholds are exceeded.
  tags:
  - safety
  - ehs
  - datadog
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: safety-ops
    port: 8080
    tools:
    - name: environmental-compliance-monitoring
      description: Collects environmental sensor data via Datadog, logs in ServiceNow, and alerts EHS via Teams when thresholds are exceeded.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Environmental Compliance Monitoring: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Environmental Compliance Monitoring: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_safety_channel_id
          text: 'Environmental Compliance Monitoring | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → environmental-compliance-monitoring.yml

Pulls active headcount data from Workday and writes a summary snapshot to Snowflake for downstream HR analytics and Power BI reporting.

naftiko: '0.5'
info:
  label: Workday Headcount Snapshot
  description: Pulls active headcount data from Workday and writes a summary snapshot to Snowflake for downstream HR analytics and Power BI reporting.
  tags:
  - hr
  - reporting
  - workday
  - snowflake
  - power-bi
capability:
  exposes:
  - type: mcp
    namespace: hr-reporting
    port: 8080
    tools:
    - name: publish-headcount-snapshot
      description: Fetch current active headcount grouped by department and cost center from Workday, then insert the snapshot record into the Snowflake HR_ANALYTICS.HEADCOUNT table for Power BI consumption.
      inputParameters:
      - name: as_of_date
        in: body
        type: string
        description: The reporting date for the snapshot in YYYY-MM-DD format.
      steps:
      - name: get-headcount
        type: call
        call: workday.get-headcount-report
        with:
          as_of_date: '{{as_of_date}}'
      - name: write-snapshot
        type: call
        call: snowflake.insert-rows
        with:
          table: HR_ANALYTICS.HEADCOUNT
          data: '{{get-headcount.records}}'
  consumes:
  - namespace: workday
    type: http
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: headcount-report
      path: /reports/headcount
      operations:
      - name: get-headcount-report
        method: GET
  - namespace: snowflake
    type: http
    baseUri: https://bmw.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: insert-rows
        method: POST
Open in Framework → View in Fleet → workday-headcount-snapshot.yml

Runs MRP exception analysis, creates Jira procurement tasks, and alerts supply chain via Teams.

naftiko: '0.5'
info:
  label: SAP Material Requirements Planning Alert
  description: Runs MRP exception analysis, creates Jira procurement tasks, and alerts supply chain via Teams.
  tags:
  - supply-chain
  - sap
  - jira
  - microsoft-teams
  - procurement
capability:
  exposes:
  - type: mcp
    namespace: supply-chain-ops
    port: 8080
    tools:
    - name: sap-material-requirements-planning-alert
      description: Runs MRP exception analysis, creates Jira procurement tasks, and alerts supply chain via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'SAP Material Requirements Planning Alert: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'SAP Material Requirements Planning Alert: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_supply-chain_channel_id
          text: 'SAP Material Requirements Planning Alert | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → sap-material-requirements-planning-alert.yml

Processes customer complaint from Salesforce by creating SAP quality notification, Jira investigation, and alerting support via Teams.

naftiko: '0.5'
info:
  label: Customer Complaint Resolution Workflow
  description: Processes customer complaint from Salesforce by creating SAP quality notification, Jira investigation, and alerting support via Teams.
  tags:
  - quality
  - salesforce
  - sap
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: quality-ops
    port: 8080
    tools:
    - name: customer-complaint-resolution-workflow
      description: Processes customer complaint from Salesforce by creating SAP quality notification, Jira investigation, and alerting support via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Customer Complaint Resolution Workflow: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Customer Complaint Resolution Workflow: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_quality_channel_id
          text: 'Customer Complaint Resolution Workflow | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → customer-complaint-resolution-workflow.yml

Retrieves the status of a production order from SAP S/4HANA.

naftiko: '0.5'
info:
  label: SAP Production Order Status
  description: Retrieves the status of a production order from SAP S/4HANA.
  tags:
  - production
  - sap
  - sap-s4hana
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: production
    port: 8080
    tools:
    - name: sap-status
      description: Retrieves the status of a production order from SAP S/4HANA.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: The identifier for the lookup.
      call: production.get-record
      with:
        id: '{{identifier}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.result
  consumes:
  - namespace: production
    type: http
    baseUri: https://bmw-s4.sap.com/api/v1
    authentication:
      type: basic
      username: $secrets.sap_s4_username
      password: $secrets.sap_s4_password
    resources:
    - name: records
      path: /records
      operations:
      - name: get-record
        method: GET
Open in Framework → View in Fleet → sap-production-order-status.yml

Pulls the last seven days of BMW LinkedIn Campaign Manager ad performance metrics and publishes a formatted weekly digest to the marketing Microsoft Teams channel.

naftiko: '0.5'
info:
  label: LinkedIn Campaign Performance Digest
  description: Pulls the last seven days of BMW LinkedIn Campaign Manager ad performance metrics and publishes a formatted weekly digest to the marketing Microsoft Teams channel.
  tags:
  - marketing
  - social
  - linkedin
  - microsoft-teams
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: marketing-reporting
    port: 8080
    tools:
    - name: digest-linkedin-campaigns
      description: Fetch the past 7 days of LinkedIn Campaign Manager performance data (impressions, clicks, CTR, spend) for the configured BMW ad account, then post a formatted digest to the marketing Microsoft Teams channel.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: The LinkedIn Campaign Manager account ID.
      - name: teams_channel_id
        in: body
        type: string
        description: The Microsoft Teams channel ID to post the digest to.
      steps:
      - name: get-campaign-stats
        type: call
        call: linkedin.get-ad-analytics
        with:
          account_id: '{{account_id}}'
          dateRange_start: LAST_7_DAYS
      - name: post-digest
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: '{{teams_channel_id}}'
          text: 'LinkedIn Weekly Campaign Digest | Impressions: {{get-campaign-stats.totalImpressions}} | Clicks: {{get-campaign-stats.totalClicks}} | Spend: {{get-campaign-stats.totalSpend}}'
  consumes:
  - namespace: linkedin
    type: http
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: ad-analytics
      path: /adAnalytics
      inputParameters:
      - name: account_id
        in: query
      - name: dateRange_start
        in: query
      operations:
      - name: get-ad-analytics
        method: GET
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-message
      path: /teams/{team_id}/channels/{channel_id}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → linkedin-campaign-performance-digest.yml

Retrieves a Jira engineering issue by key, returning summary, status, and assignee.

naftiko: '0.5'
info:
  label: Jira Engineering Issue Lookup
  description: Retrieves a Jira engineering issue by key, returning summary, status, and assignee.
  tags:
  - engineering
  - jira
  - lookup
  - project-management
capability:
  exposes:
  - type: mcp
    namespace: engineering
    port: 8080
    tools:
    - name: jira-lookup
      description: Retrieves a Jira engineering issue by key, returning summary, status, and assignee.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: The identifier for the lookup.
      call: engineering.get-record
      with:
        id: '{{identifier}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.result
  consumes:
  - namespace: engineering
    type: http
    baseUri: https://bmw-s4.sap.com/api/v1
    authentication:
      type: basic
      username: $secrets.sap_s4_username
      password: $secrets.sap_s4_password
    resources:
    - name: records
      path: /records
      operations:
      - name: get-record
        method: GET
Open in Framework → View in Fleet → jira-engineering-issue-lookup.yml

Checks SAP PM for calibration due dates, creates ServiceNow reminders, and alerts tool managers via Teams.

naftiko: '0.5'
info:
  label: Tooling Calibration Due Alert
  description: Checks SAP PM for calibration due dates, creates ServiceNow reminders, and alerts tool managers via Teams.
  tags:
  - manufacturing
  - sap
  - servicenow
  - microsoft-teams
  - tooling
capability:
  exposes:
  - type: mcp
    namespace: manufacturing-ops
    port: 8080
    tools:
    - name: tooling-calibration-due-alert
      description: Checks SAP PM for calibration due dates, creates ServiceNow reminders, and alerts tool managers via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Tooling Calibration Due Alert: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Tooling Calibration Due Alert: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_manufacturing_channel_id
          text: 'Tooling Calibration Due Alert | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → tooling-calibration-due-alert.yml

Analyzes Azure spending, logs recommendations in ServiceNow, and notifies cloud governance via Teams.

naftiko: '0.5'
info:
  label: Azure Cost Optimization Recommendation
  description: Analyzes Azure spending, logs recommendations in ServiceNow, and notifies cloud governance via Teams.
  tags:
  - cloud
  - microsoft-azure
  - servicenow
  - microsoft-teams
  - devops
capability:
  exposes:
  - type: mcp
    namespace: cloud-ops
    port: 8080
    tools:
    - name: azure-cost-optimization-recommendation
      description: Analyzes Azure spending, logs recommendations in ServiceNow, and notifies cloud governance via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Azure Cost Optimization Recommendation: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Azure Cost Optimization Recommendation: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_cloud_channel_id
          text: 'Azure Cost Optimization Recommendation | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → azure-cost-optimization-recommendation.yml

Monitors robotic weld quality via Datadog, logs deviations in SAP QM, and alerts body shop supervisor via Teams.

naftiko: '0.5'
info:
  label: Body Shop Weld Quality Monitoring
  description: Monitors robotic weld quality via Datadog, logs deviations in SAP QM, and alerts body shop supervisor via Teams.
  tags:
  - quality
  - datadog
  - sap
  - microsoft-teams
  - manufacturing
capability:
  exposes:
  - type: mcp
    namespace: quality-ops
    port: 8080
    tools:
    - name: body-shop-weld-quality-monitoring
      description: Monitors robotic weld quality via Datadog, logs deviations in SAP QM, and alerts body shop supervisor via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Body Shop Weld Quality Monitoring: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Body Shop Weld Quality Monitoring: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_quality_channel_id
          text: 'Body Shop Weld Quality Monitoring | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → body-shop-weld-quality-monitoring.yml

When a supply chain disruption is detected, creates a Jira incident, flags SAP purchase orders, and notifies procurement via Teams.

naftiko: '0.5'
info:
  label: Supply Chain Disruption Alert
  description: When a supply chain disruption is detected, creates a Jira incident, flags SAP purchase orders, and notifies procurement via Teams.
  tags:
  - supply-chain
  - jira
  - sap
  - microsoft-teams
  - procurement
capability:
  exposes:
  - type: mcp
    namespace: supply-chain-ops
    port: 8080
    tools:
    - name: supply-chain-disruption-alert
      description: When a supply chain disruption is detected, creates a Jira incident, flags SAP purchase orders, and notifies procurement via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Supply Chain Disruption Alert: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Supply Chain Disruption Alert: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_supply-chain_channel_id
          text: 'Supply Chain Disruption Alert | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → supply-chain-disruption-alert.yml

Generates workforce capacity report from Workday headcount, Jira demand, and publishes to Tableau.

naftiko: '0.5'
info:
  label: Workforce Capacity Planning Report
  description: Generates workforce capacity report from Workday headcount, Jira demand, and publishes to Tableau.
  tags:
  - hr
  - workday
  - jira
  - tableau
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: hr-ops
    port: 8080
    tools:
    - name: workforce-capacity-planning-report
      description: Generates workforce capacity report from Workday headcount, Jira demand, and publishes to Tableau.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Workforce Capacity Planning Report: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Workforce Capacity Planning Report: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_hr_channel_id
          text: 'Workforce Capacity Planning Report | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → workforce-capacity-planning-report.yml

Processes IT change by creating ServiceNow change request, running Terraform plan, and posting for CAB review via Teams.

naftiko: '0.5'
info:
  label: IT Infrastructure Change Approval Workflow
  description: Processes IT change by creating ServiceNow change request, running Terraform plan, and posting for CAB review via Teams.
  tags:
  - devops
  - servicenow
  - microsoft-teams
  - infrastructure
capability:
  exposes:
  - type: mcp
    namespace: devops-ops
    port: 8080
    tools:
    - name: it-infrastructure-change-approval-workflow
      description: Processes IT change by creating ServiceNow change request, running Terraform plan, and posting for CAB review via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'IT Infrastructure Change Approval Workflow: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'IT Infrastructure Change Approval Workflow: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_devops_channel_id
          text: 'IT Infrastructure Change Approval Workflow | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → it-infrastructure-change-approval-workflow.yml

When a Datadog monitor triggers a critical alert, opens a P2 ServiceNow incident, assigns it to the on-call team, and notifies the relevant Microsoft Teams ops channel.

naftiko: '0.5'
info:
  label: Datadog Alert to ServiceNow Incident
  description: When a Datadog monitor triggers a critical alert, opens a P2 ServiceNow incident, assigns it to the on-call team, and notifies the relevant Microsoft Teams ops channel.
  tags:
  - itsm
  - observability
  - incident-response
  - datadog
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: incident-ops
    port: 8080
    tools:
    - name: handle-datadog-alert
      description: Given a Datadog monitor ID and alert details, create a P2 ServiceNow incident, set the assignment group to the relevant on-call team, and post the incident number and Datadog monitor link to the Microsoft Teams ops channel.
      inputParameters:
      - name: monitor_id
        in: body
        type: string
        description: The Datadog monitor ID that triggered.
      - name: monitor_name
        in: body
        type: string
        description: Human-readable Datadog monitor name.
      - name: alert_message
        in: body
        type: string
        description: The alert message body from Datadog.
      - name: affected_host
        in: body
        type: string
        description: The hostname or service name affected by the alert.
      steps:
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Datadog Alert: {{monitor_name}} on {{affected_host}}'
          description: '{{alert_message}}'
          priority: '2'
          assignment_group: Cloud_Operations
      - name: notify-teams
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.ops_teams_channel_id
          text: 'NEW INCIDENT {{create-incident.number}}: {{monitor_name}} | Host: {{affected_host}} | Monitor: https://app.datadoghq.com/monitors/{{monitor_id}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: incident
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-message
      path: /teams/{team_id}/channels/{channel_id}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → datadog-alert-to-servicenow-incident.yml

When Datadog detects abnormal vibration, creates SAP PM work order and alerts maintenance via Teams.

naftiko: '0.5'
info:
  label: Stamping Press Predictive Maintenance
  description: When Datadog detects abnormal vibration, creates SAP PM work order and alerts maintenance via Teams.
  tags:
  - manufacturing
  - datadog
  - sap
  - microsoft-teams
  - maintenance
capability:
  exposes:
  - type: mcp
    namespace: manufacturing-ops
    port: 8080
    tools:
    - name: stamping-press-predictive-maintenance
      description: When Datadog detects abnormal vibration, creates SAP PM work order and alerts maintenance via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Stamping Press Predictive Maintenance: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Stamping Press Predictive Maintenance: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_manufacturing_channel_id
          text: 'Stamping Press Predictive Maintenance | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → stamping-press-predictive-maintenance.yml

Retrieves current health status of a monitored service from Datadog.

naftiko: '0.5'
info:
  label: Datadog Service Health Check
  description: Retrieves current health status of a monitored service from Datadog.
  tags:
  - monitoring
  - datadog
  - health-check
  - operations
capability:
  exposes:
  - type: mcp
    namespace: monitoring
    port: 8080
    tools:
    - name: datadog-check
      description: Retrieves current health status of a monitored service from Datadog.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: The identifier for the lookup.
      call: monitoring.get-record
      with:
        id: '{{identifier}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.result
  consumes:
  - namespace: monitoring
    type: http
    baseUri: https://bmw-s4.sap.com/api/v1
    authentication:
      type: basic
      username: $secrets.sap_s4_username
      password: $secrets.sap_s4_password
    resources:
    - name: records
      path: /records
      operations:
      - name: get-record
        method: GET
Open in Framework → View in Fleet → datadog-service-health-check.yml

When an assembly line goes down, creates a ServiceNow incident, logs downtime in SAP PM, and alerts plant management via Teams.

naftiko: '0.5'
info:
  label: Assembly Line Downtime Escalation
  description: When an assembly line goes down, creates a ServiceNow incident, logs downtime in SAP PM, and alerts plant management via Teams.
  tags:
  - production
  - servicenow
  - sap
  - microsoft-teams
  - manufacturing
capability:
  exposes:
  - type: mcp
    namespace: production-ops
    port: 8080
    tools:
    - name: assembly-line-downtime-escalation
      description: When an assembly line goes down, creates a ServiceNow incident, logs downtime in SAP PM, and alerts plant management via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Assembly Line Downtime Escalation: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Assembly Line Downtime Escalation: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_production_channel_id
          text: 'Assembly Line Downtime Escalation | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → assembly-line-downtime-escalation.yml

Polls Azure Cost Management for subscription spend anomalies versus the monthly budget, creates a ServiceNow change request to review the overage, and notifies the cloud finance team in Slack.

naftiko: '0.5'
info:
  label: Azure Cost Anomaly Responder
  description: Polls Azure Cost Management for subscription spend anomalies versus the monthly budget, creates a ServiceNow change request to review the overage, and notifies the cloud finance team in Slack.
  tags:
  - cloud
  - finops
  - azure
  - servicenow
  - slack
  - cost-management
capability:
  exposes:
  - type: mcp
    namespace: cloud-finops
    port: 8080
    tools:
    - name: handle-cost-anomaly
      description: Given an Azure subscription ID and a billing period, query Azure Cost Management for actual spend versus budget, and if actual spend exceeds the threshold, open a ServiceNow change request and notify the cloud-finops Slack channel.
      inputParameters:
      - name: subscription_id
        in: body
        type: string
        description: The Azure subscription ID to check for cost anomalies.
      - name: budget_threshold_percent
        in: body
        type: number
        description: The percentage of budget utilization above which an anomaly is raised, e.g. 90.
      steps:
      - name: get-cost-data
        type: call
        call: azure-cost.query-usage
        with:
          subscription_id: '{{subscription_id}}'
      - name: create-change-request
        type: call
        call: servicenow.create-change
        with:
          short_description: 'Azure cost anomaly: subscription {{subscription_id}} exceeds {{budget_threshold_percent}}% budget'
          category: cloud_finops
          priority: '3'
      - name: notify-slack
        type: call
        call: slack.post-message
        with:
          channel: cloud-finops
          text: 'Cost anomaly on subscription {{subscription_id}}: spend above {{budget_threshold_percent}}% of budget. ServiceNow: {{create-change-request.number}}'
  consumes:
  - namespace: azure-cost
    type: http
    baseUri: https://management.azure.com/subscriptions
    authentication:
      type: bearer
      token: $secrets.azure_mgmt_token
    resources:
    - name: usage
      path: /{subscription_id}/providers/Microsoft.CostManagement/query
      inputParameters:
      - name: subscription_id
        in: path
      operations:
      - name: query-usage
        method: POST
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: change
      path: /table/change_request
      operations:
      - name: create-change
        method: POST
  - namespace: slack
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: chat
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → azure-cost-anomaly-responder.yml

Syncs program status across Jira, SAP, Salesforce, publishes to Confluence, and notifies leadership via Teams.

naftiko: '0.5'
info:
  label: Cross-Functional Program Status Sync
  description: Syncs program status across Jira, SAP, Salesforce, publishes to Confluence, and notifies leadership via Teams.
  tags:
  - project-management
  - jira
  - sap
  - salesforce
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: project-management-ops
    port: 8080
    tools:
    - name: cross-functional-program-status-sync
      description: Syncs program status across Jira, SAP, Salesforce, publishes to Confluence, and notifies leadership via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Cross-Functional Program Status Sync: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Cross-Functional Program Status Sync: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_project-management_channel_id
          text: 'Cross-Functional Program Status Sync | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → cross-functional-program-status-sync.yml

Queries closed-won Salesforce opportunities updated since a given date and upserts the records into a Snowflake CRM data mart for sales analytics and Power BI dashboarding.

naftiko: '0.5'
info:
  label: Salesforce Opportunity Sync to Snowflake
  description: Queries closed-won Salesforce opportunities updated since a given date and upserts the records into a Snowflake CRM data mart for sales analytics and Power BI dashboarding.
  tags:
  - sales
  - crm
  - salesforce
  - snowflake
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: crm-reporting
    port: 8080
    tools:
    - name: sync-closed-opportunities
      description: Given a lookback date, query Salesforce for all closed-won opportunities modified after that date and upsert each record into the Snowflake SALES.OPPORTUNITIES table.
      inputParameters:
      - name: since_date
        in: body
        type: string
        description: ISO 8601 date string. Only opportunities modified on or after this date are synced.
      steps:
      - name: query-opps
        type: call
        call: salesforce.query-opportunities
        with:
          soql: SELECT Id,Name,Amount,CloseDate,AccountId FROM Opportunity WHERE StageName='Closed Won' AND LastModifiedDate >= {{since_date}}
      - name: upsert-snowflake
        type: call
        call: snowflake.upsert-records
        with:
          table: SALES.OPPORTUNITIES
          records: '{{query-opps.records}}'
  consumes:
  - namespace: salesforce
    type: http
    baseUri: https://bmw.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: query
      path: /query
      inputParameters:
      - name: soql
        in: query
      operations:
      - name: query-opportunities
        method: GET
  - namespace: snowflake
    type: http
    baseUri: https://bmw.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: upsert-records
        method: POST
Open in Framework → View in Fleet → salesforce-opportunity-sync-to-snowflake.yml

Retrieves a quality document from SharePoint by document ID.

naftiko: '0.5'
info:
  label: SharePoint Quality Document Retrieval
  description: Retrieves a quality document from SharePoint by document ID.
  tags:
  - quality
  - sharepoint
  - document-management
capability:
  exposes:
  - type: mcp
    namespace: quality
    port: 8080
    tools:
    - name: sharepoint-retrieval
      description: Retrieves a quality document from SharePoint by document ID.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: The identifier for the lookup.
      call: quality.get-record
      with:
        id: '{{identifier}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.result
  consumes:
  - namespace: quality
    type: http
    baseUri: https://bmw-s4.sap.com/api/v1
    authentication:
      type: basic
      username: $secrets.sap_s4_username
      password: $secrets.sap_s4_password
    resources:
    - name: records
      path: /records
      operations:
      - name: get-record
        method: GET
Open in Framework → View in Fleet → sharepoint-quality-document-retrieval.yml

Searches Splunk for security events matching a query.

naftiko: '0.5'
info:
  label: Splunk Security Event Search
  description: Searches Splunk for security events matching a query.
  tags:
  - security
  - splunk
  - search
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: security
    port: 8080
    tools:
    - name: splunk-search
      description: Searches Splunk for security events matching a query.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: The identifier for the lookup.
      call: security.get-record
      with:
        id: '{{identifier}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.result
  consumes:
  - namespace: security
    type: http
    baseUri: https://bmw-s4.sap.com/api/v1
    authentication:
      type: basic
      username: $secrets.sap_s4_username
      password: $secrets.sap_s4_password
    resources:
    - name: records
      path: /records
      operations:
      - name: get-record
        method: GET
Open in Framework → View in Fleet → splunk-security-event-search.yml

Fetches a pending expense report from SAP Concur, validates the total against policy thresholds, and either auto-approves or escalates to the manager via Microsoft Teams.

naftiko: '0.5'
info:
  label: SAP Concur Expense Report Approval
  description: Fetches a pending expense report from SAP Concur, validates the total against policy thresholds, and either auto-approves or escalates to the manager via Microsoft Teams.
  tags:
  - finance
  - expense-management
  - sap-concur
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finance-ops
    port: 8080
    tools:
    - name: process-expense-report
      description: Given a SAP Concur expense report ID, fetch the report details, check the total against the auto-approval limit, approve it in Concur if within threshold, or escalate to the submitter's manager via Microsoft Teams message.
      inputParameters:
      - name: report_id
        in: body
        type: string
        description: The SAP Concur expense report ID.
      - name: auto_approval_limit
        in: body
        type: number
        description: The maximum USD amount eligible for auto-approval.
      steps:
      - name: get-report
        type: call
        call: sap-concur.get-expense-report
        with:
          report_id: '{{report_id}}'
      - name: approve-report
        type: call
        call: sap-concur.approve-expense-report
        with:
          report_id: '{{report_id}}'
      - name: notify-manager
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-report.approver_login_id}}'
          text: Expense report {{report_id}} for {{get-report.employee_name}} ({{get-report.total}} {{get-report.currency_code}}) requires your approval in SAP Concur.
  consumes:
  - namespace: sap-concur
    type: http
    baseUri: https://www.concursolutions.com/api/v3.0
    authentication:
      type: bearer
      token: $secrets.concur_token
    resources:
    - name: expense-report
      path: /expense/reports/{report_id}
      inputParameters:
      - name: report_id
        in: path
      operations:
      - name: get-expense-report
        method: GET
      - name: approve-expense-report
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: chat-messages
      path: /chats/{chat_id}/messages
      inputParameters:
      - name: chat_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → sap-concur-expense-report-approval.yml

Responds to a cybersecurity alert by creating a ServiceNow incident, suspending the Okta account, and alerting security via Teams.

naftiko: '0.5'
info:
  label: Cybersecurity Incident Response Chain
  description: Responds to a cybersecurity alert by creating a ServiceNow incident, suspending the Okta account, and alerting security via Teams.
  tags:
  - security
  - splunk
  - servicenow
  - okta
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: security-ops
    port: 8080
    tools:
    - name: cybersecurity-incident-response-chain
      description: Responds to a cybersecurity alert by creating a ServiceNow incident, suspending the Okta account, and alerting security via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Cybersecurity Incident Response Chain: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Cybersecurity Incident Response Chain: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_security_channel_id
          text: 'Cybersecurity Incident Response Chain | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → cybersecurity-incident-response-chain.yml

On a GitHub Actions workflow failure on a protected branch, creates a Jira bug ticket with full context, posts a Datadog deployment event marker, and alerts the #engineering-alerts Slack channel.

naftiko: '0.5'
info:
  label: GitHub Actions CI/CD Pipeline Failure Handler
  description: 'On a GitHub Actions workflow failure on a protected branch, creates a Jira bug ticket with full context, posts a Datadog deployment event marker, and alerts the #engineering-alerts Slack channel.'
  tags:
  - devops
  - cicd
  - github
  - jira
  - datadog
  - slack
  - incident-response
capability:
  exposes:
  - type: mcp
    namespace: devops-ops
    port: 8080
    tools:
    - name: handle-pipeline-failure
      description: Given a GitHub Actions workflow failure event, create a Jira bug in the ENG project, post a Datadog deployment event marking the failure, and notify the Slack engineering-alerts channel with the Jira issue key and workflow log URL.
      inputParameters:
      - name: workflow_run_id
        in: body
        type: string
        description: The GitHub Actions workflow run ID.
      - name: repository
        in: body
        type: string
        description: The GitHub repository in owner/repo format.
      - name: branch
        in: body
        type: string
        description: The branch name where the failure occurred.
      - name: commit_sha
        in: body
        type: string
        description: The commit SHA that triggered the failed workflow run.
      - name: log_url
        in: body
        type: string
        description: URL to the workflow run logs in GitHub Actions.
      steps:
      - name: create-jira-bug
        type: call
        call: jira.create-issue
        with:
          project_key: ENG
          issuetype: Bug
          summary: '[CI Failure] {{repository}} / {{branch}} — run {{workflow_run_id}}'
          description: 'Workflow run {{workflow_run_id}} failed on {{branch}} at commit {{commit_sha}}. Log: {{log_url}}'
      - name: post-datadog-event
        type: call
        call: datadog.create-event
        with:
          title: 'CI Failure: {{repository}} on {{branch}}'
          text: 'Commit {{commit_sha}} — Jira: {{create-jira-bug.key}}'
          alert_type: error
          tags: repo:{{repository}},branch:{{branch}}
      - name: notify-slack
        type: call
        call: slack.post-message
        with:
          channel: engineering-alerts
          text: 'Pipeline failure: {{repository}} | Branch: {{branch}} | Jira: {{create-jira-bug.key}} | Log: {{log_url}}'
  consumes:
  - namespace: jira
    type: http
    baseUri: https://bmw.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issue
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - namespace: datadog
    type: http
    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
  - namespace: slack
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: chat
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → github-actions-ci-cd-pipeline-failure-handler.yml

Queries Snowflake query history for failed or long-running pipeline jobs in the last hour, and if anomalies are found, opens a Jira task and alerts the data engineering Slack channel.

naftiko: '0.5'
info:
  label: Snowflake Data Pipeline Health Monitor
  description: Queries Snowflake query history for failed or long-running pipeline jobs in the last hour, and if anomalies are found, opens a Jira task and alerts the data engineering Slack channel.
  tags:
  - data
  - monitoring
  - snowflake
  - jira
  - slack
  - data-pipelines
capability:
  exposes:
  - type: mcp
    namespace: data-ops
    port: 8080
    tools:
    - name: check-pipeline-health
      description: Query Snowflake's ACCOUNT_USAGE.QUERY_HISTORY for failed or long-running queries in the past hour; if failures or SLA breaches are found, create a Jira task in the DATA project and post a summary to the data-engineering Slack channel.
      inputParameters:
      - name: lookback_minutes
        in: body
        type: integer
        description: Number of minutes to look back in Snowflake query history. Typically 60.
      - name: max_duration_seconds
        in: body
        type: integer
        description: Execution time threshold in seconds above which a query is flagged as slow.
      steps:
      - name: query-failures
        type: call
        call: snowflake.run-statement
        with:
          statement: SELECT QUERY_ID, QUERY_TEXT, ERROR_MESSAGE, EXECUTION_STATUS FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY WHERE START_TIME >= DATEADD(minute, -{{lookback_minutes}}, CURRENT_TIMESTAMP()) AND (EXECUTION_STATUS = 'FAILED' OR TOTAL_ELAPSED_TIME > {{max_duration_seconds}} * 1000)
      - name: open-jira-task
        type: call
        call: jira.create-issue
        with:
          project_key: DATA
          issuetype: Task
          summary: Snowflake pipeline anomalies detected in last {{lookback_minutes}} minutes
          description: 'Failed or slow queries found: {{query-failures.rowCount}} records. First failure: {{query-failures.firstError}}'
      - name: alert-slack
        type: call
        call: slack.post-message
        with:
          channel: data-engineering
          text: 'Snowflake pipeline health alert: {{query-failures.rowCount}} anomalies in last {{lookback_minutes}} min. Jira: {{open-jira-task.key}}'
  consumes:
  - namespace: snowflake
    type: http
    baseUri: https://bmw.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-statement
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issue
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - namespace: slack
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: chat
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → snowflake-data-pipeline-health-monitor.yml

Ingests powertrain test data to Snowflake, refreshes Tableau dashboard, and notifies engineering via Teams.

naftiko: '0.5'
info:
  label: Hybrid Powertrain Test Data Pipeline
  description: Ingests powertrain test data to Snowflake, refreshes Tableau dashboard, and notifies engineering via Teams.
  tags:
  - engineering
  - snowflake
  - tableau
  - microsoft-teams
  - automotive
capability:
  exposes:
  - type: mcp
    namespace: engineering-ops
    port: 8080
    tools:
    - name: hybrid-powertrain-test-data-pipeline
      description: Ingests powertrain test data to Snowflake, refreshes Tableau dashboard, and notifies engineering via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Hybrid Powertrain Test Data Pipeline: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Hybrid Powertrain Test Data Pipeline: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_engineering_channel_id
          text: 'Hybrid Powertrain Test Data Pipeline | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → hybrid-powertrain-test-data-pipeline.yml

Triggers a rolling deployment update on an Azure Kubernetes Service cluster namespace, monitors rollout status, and posts a completion or failure notification to the devops Slack channel.

naftiko: '0.5'
info:
  label: Azure Kubernetes Service Deployment Rollout
  description: Triggers a rolling deployment update on an Azure Kubernetes Service cluster namespace, monitors rollout status, and posts a completion or failure notification to the devops Slack channel.
  tags:
  - cloud
  - devops
  - azure
  - kubernetes
  - slack
  - deployment
capability:
  exposes:
  - type: mcp
    namespace: k8s-ops
    port: 8080
    tools:
    - name: trigger-aks-rollout
      description: Given an AKS cluster resource group, cluster name, namespace, and deployment name, trigger a rolling update with the new container image tag via the Azure Kubernetes Service API and notify the devops Slack channel with the rollout result.
      inputParameters:
      - name: resource_group
        in: body
        type: string
        description: The Azure resource group containing the AKS cluster.
      - name: cluster_name
        in: body
        type: string
        description: The AKS cluster name.
      - name: namespace
        in: body
        type: string
        description: The Kubernetes namespace where the deployment lives.
      - name: deployment_name
        in: body
        type: string
        description: The Kubernetes deployment name to update.
      - name: image_tag
        in: body
        type: string
        description: The new container image tag to deploy, e.g. v2.4.1.
      steps:
      - name: patch-deployment
        type: call
        call: aks.patch-deployment
        with:
          resource_group: '{{resource_group}}'
          cluster_name: '{{cluster_name}}'
          namespace: '{{namespace}}'
          deployment_name: '{{deployment_name}}'
          image_tag: '{{image_tag}}'
      - name: notify-slack
        type: call
        call: slack.post-message
        with:
          channel: devops-deployments
          text: 'AKS rollout initiated: {{deployment_name}} in {{namespace}} on {{cluster_name}} — image: {{image_tag}} | Status: {{patch-deployment.status}}'
  consumes:
  - namespace: aks
    type: http
    baseUri: https://management.azure.com/subscriptions
    authentication:
      type: bearer
      token: $secrets.azure_mgmt_token
    resources:
    - name: deployment
      path: /{subscription_id}/resourceGroups/{resource_group}/providers/Microsoft.ContainerService/managedClusters/{cluster_name}/namespaces/{namespace}/deployments/{deployment_name}
      inputParameters:
      - name: subscription_id
        in: path
      - name: resource_group
        in: path
      - name: cluster_name
        in: path
      - name: namespace
        in: path
      - name: deployment_name
        in: path
      operations:
      - name: patch-deployment
        method: PATCH
  - namespace: slack
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: chat
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → azure-kubernetes-service-deployment-rollout.yml

Generates CoC from SAP QM data, compiles in SharePoint, and notifies via Teams.

naftiko: '0.5'
info:
  label: Automated Certificate of Conformance Generation
  description: Generates CoC from SAP QM data, compiles in SharePoint, and notifies via Teams.
  tags:
  - quality
  - sap
  - sharepoint
  - microsoft-teams
  - manufacturing
capability:
  exposes:
  - type: mcp
    namespace: quality-ops
    port: 8080
    tools:
    - name: automated-certificate-of-conformance
      description: Generates CoC from SAP QM data, compiles in SharePoint, and notifies via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Automated Certificate of Conformance Generation: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Automated Certificate of Conformance Generation: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_quality_channel_id
          text: 'Automated Certificate of Conformance Generation | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → automated-certificate-of-conformance-generation.yml

Searches Confluence for engineering specifications by keyword.

naftiko: '0.5'
info:
  label: Confluence Engineering Spec Search
  description: Searches Confluence for engineering specifications by keyword.
  tags:
  - engineering
  - confluence
  - documentation
  - search
capability:
  exposes:
  - type: mcp
    namespace: engineering
    port: 8080
    tools:
    - name: confluence-search
      description: Searches Confluence for engineering specifications by keyword.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: The identifier for the lookup.
      call: engineering.get-record
      with:
        id: '{{identifier}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.result
  consumes:
  - namespace: engineering
    type: http
    baseUri: https://bmw-s4.sap.com/api/v1
    authentication:
      type: basic
      username: $secrets.sap_s4_username
      password: $secrets.sap_s4_password
    resources:
    - name: records
      path: /records
      operations:
      - name: get-record
        method: GET
Open in Framework → View in Fleet → confluence-engineering-spec-search.yml

At the end of each Azure DevOps sprint, fetches completed work items and velocity metrics, generates a sprint summary, and publishes it to the corresponding Confluence space for stakeholder review.

naftiko: '0.5'
info:
  label: Azure DevOps Sprint Report Publisher
  description: At the end of each Azure DevOps sprint, fetches completed work items and velocity metrics, generates a sprint summary, and publishes it to the corresponding Confluence space for stakeholder review.
  tags:
  - devops
  - reporting
  - azure-devops
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: agile-reporting
    port: 8080
    tools:
    - name: publish-sprint-report
      description: Given an Azure DevOps organization, project, and sprint iteration path, query all completed and carried-over work items for the sprint, calculate velocity, and publish a formatted sprint report to the target Confluence page.
      inputParameters:
      - name: organization
        in: body
        type: string
        description: The Azure DevOps organization name.
      - name: project
        in: body
        type: string
        description: The Azure DevOps project name.
      - name: iteration_path
        in: body
        type: string
        description: The sprint iteration path, e.g. MyProject\Sprint 42.
      - name: confluence_page_id
        in: body
        type: string
        description: The Confluence page ID where the sprint report will be published.
      steps:
      - name: get-sprint-items
        type: call
        call: azure-devops.query-work-items
        with:
          organization: '{{organization}}'
          project: '{{project}}'
          wiql: SELECT [System.Id],[System.Title],[System.State],[Microsoft.VSTS.Scheduling.StoryPoints] FROM WorkItems WHERE [System.IterationPath] = '{{iteration_path}}'
      - name: publish-confluence
        type: call
        call: confluence.update-page
        with:
          page_id: '{{confluence_page_id}}'
          content: 'Sprint Report for {{iteration_path}} | Completed: {{get-sprint-items.completedCount}} items | Total Story Points: {{get-sprint-items.totalStoryPoints}}'
  consumes:
  - namespace: azure-devops
    type: http
    baseUri: https://dev.azure.com
    authentication:
      type: basic
      username: $secrets.ado_user
      password: $secrets.ado_pat
    resources:
    - name: work-items-query
      path: /{organization}/{project}/_apis/wit/wiql
      inputParameters:
      - name: organization
        in: path
      - name: project
        in: path
      operations:
      - name: query-work-items
        method: POST
  - namespace: confluence
    type: http
    baseUri: https://bmw.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: page
      path: /content/{page_id}
      inputParameters:
      - name: page_id
        in: path
      operations:
      - name: update-page
        method: PUT
Open in Framework → View in Fleet → azure-devops-sprint-report-publisher.yml

Queries Azure Key Vault for secrets nearing their expiration date, creates a ServiceNow change request for each secret rotation task, and notifies the security operations team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Azure Key Vault Secret Rotation Notifier
  description: Queries Azure Key Vault for secrets nearing their expiration date, creates a ServiceNow change request for each secret rotation task, and notifies the security operations team via Microsoft Teams.
  tags:
  - security
  - cloud
  - azure
  - servicenow
  - microsoft-teams
  - secret-management
capability:
  exposes:
  - type: mcp
    namespace: secret-mgmt
    port: 8080
    tools:
    - name: notify-expiring-secrets
      description: Given an Azure Key Vault name, list all secrets expiring within the specified number of days, open a ServiceNow change request for each rotation needed, and post a consolidated list to the security-ops Microsoft Teams channel.
      inputParameters:
      - name: vault_name
        in: body
        type: string
        description: The Azure Key Vault name to check for expiring secrets.
      - name: days_threshold
        in: body
        type: integer
        description: Number of days ahead to check for expiring secrets, e.g. 30.
      steps:
      - name: list-secrets
        type: call
        call: azure-keyvault.list-secrets
        with:
          vault_name: '{{vault_name}}'
      - name: create-change
        type: call
        call: servicenow.create-change
        with:
          short_description: 'Secret rotation required: {{vault_name}} — {{list-secrets.expiringCount}} secrets expiring within {{days_threshold}} days'
          category: security
          priority: '2'
      - name: notify-teams
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.secops_teams_channel_id
          text: 'Secret rotation alert for Key Vault {{vault_name}}: {{list-secrets.expiringCount}} secrets expire within {{days_threshold}} days. ServiceNow: {{create-change.number}}'
  consumes:
  - namespace: azure-keyvault
    type: http
    baseUri: https://{{vault_name}}.vault.azure.net
    authentication:
      type: bearer
      token: $secrets.azure_keyvault_token
    resources:
    - name: secrets
      path: /secrets
      operations:
      - name: list-secrets
        method: GET
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: change
      path: /table/change_request
      operations:
      - name: create-change
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-message
      path: /teams/{team_id}/channels/{channel_id}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → azure-key-vault-secret-rotation-notifier.yml

Verifies emissions compliance from SAP QM data, checks SharePoint limits, and logs in ServiceNow.

naftiko: '0.5'
info:
  label: Vehicle Emissions Compliance Check
  description: Verifies emissions compliance from SAP QM data, checks SharePoint limits, and logs in ServiceNow.
  tags:
  - compliance
  - sap
  - sharepoint
  - servicenow
  - automotive
capability:
  exposes:
  - type: mcp
    namespace: compliance-ops
    port: 8080
    tools:
    - name: vehicle-emissions-compliance-check
      description: Verifies emissions compliance from SAP QM data, checks SharePoint limits, and logs in ServiceNow.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Vehicle Emissions Compliance Check: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Vehicle Emissions Compliance Check: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_compliance_channel_id
          text: 'Vehicle Emissions Compliance Check | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vehicle-emissions-compliance-check.yml

Initiates document review from SharePoint, creates Jira task, and notifies reviewers via Teams.

naftiko: '0.5'
info:
  label: Compliance Document Review Cycle
  description: Initiates document review from SharePoint, creates Jira task, and notifies reviewers via Teams.
  tags:
  - compliance
  - sharepoint
  - jira
  - microsoft-teams
  - quality
capability:
  exposes:
  - type: mcp
    namespace: compliance-ops
    port: 8080
    tools:
    - name: compliance-document-review-cycle
      description: Initiates document review from SharePoint, creates Jira task, and notifies reviewers via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Compliance Document Review Cycle: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Compliance Document Review Cycle: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_compliance_channel_id
          text: 'Compliance Document Review Cycle | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → compliance-document-review-cycle.yml

Retrieves an employee profile from Workday by employee ID.

naftiko: '0.5'
info:
  label: Workday Employee Profile Lookup
  description: Retrieves an employee profile from Workday by employee ID.
  tags:
  - hr
  - workday
  - lookup
  - employee
capability:
  exposes:
  - type: mcp
    namespace: hr
    port: 8080
    tools:
    - name: workday-lookup
      description: Retrieves an employee profile from Workday by employee ID.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: The identifier for the lookup.
      call: hr.get-record
      with:
        id: '{{identifier}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.result
  consumes:
  - namespace: hr
    type: http
    baseUri: https://bmw-s4.sap.com/api/v1
    authentication:
      type: basic
      username: $secrets.sap_s4_username
      password: $secrets.sap_s4_password
    resources:
    - name: records
      path: /records
      operations:
      - name: get-record
        method: GET
Open in Framework → View in Fleet → workday-employee-profile-lookup.yml

Retrieves contract status from SAP Ariba by contract ID.

naftiko: '0.5'
info:
  label: SAP Ariba Contract Status Lookup
  description: Retrieves contract status from SAP Ariba by contract ID.
  tags:
  - procurement
  - sap-ariba
  - contracts
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: procurement
    port: 8080
    tools:
    - name: sap-lookup
      description: Retrieves contract status from SAP Ariba by contract ID.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: The identifier for the lookup.
      call: procurement.get-record
      with:
        id: '{{identifier}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.result
  consumes:
  - namespace: procurement
    type: http
    baseUri: https://bmw-s4.sap.com/api/v1
    authentication:
      type: basic
      username: $secrets.sap_s4_username
      password: $secrets.sap_s4_password
    resources:
    - name: records
      path: /records
      operations:
      - name: get-record
        method: GET
Open in Framework → View in Fleet → sap-ariba-contract-status-lookup.yml

Orchestrates design review by gathering Confluence docs, creating Jira task, and notifying reviewers via Teams.

naftiko: '0.5'
info:
  label: Engineering Design Review Orchestration
  description: Orchestrates design review by gathering Confluence docs, creating Jira task, and notifying reviewers via Teams.
  tags:
  - engineering
  - confluence
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: engineering-ops
    port: 8080
    tools:
    - name: engineering-design-review-orchestration
      description: Orchestrates design review by gathering Confluence docs, creating Jira task, and notifying reviewers via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Engineering Design Review Orchestration: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Engineering Design Review Orchestration: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_engineering_channel_id
          text: 'Engineering Design Review Orchestration | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → engineering-design-review-orchestration.yml

Manages recall by identifying VINs in Salesforce, creating SAP quality notification, and alerting recall team via Teams.

naftiko: '0.5'
info:
  label: Vehicle Recall Notification Workflow
  description: Manages recall by identifying VINs in Salesforce, creating SAP quality notification, and alerting recall team via Teams.
  tags:
  - quality
  - salesforce
  - sap
  - microsoft-teams
  - automotive
capability:
  exposes:
  - type: mcp
    namespace: quality-ops
    port: 8080
    tools:
    - name: vehicle-recall-notification-workflow
      description: Manages recall by identifying VINs in Salesforce, creating SAP quality notification, and alerting recall team via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Vehicle Recall Notification Workflow: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Vehicle Recall Notification Workflow: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_quality_channel_id
          text: 'Vehicle Recall Notification Workflow | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vehicle-recall-notification-workflow.yml

Accepts a raw document text input, sends it to OpenAI GPT-4 for executive summary generation, and writes the summary back to a Confluence knowledge base page.

naftiko: '0.5'
info:
  label: OpenAI Document Summarizer
  description: Accepts a raw document text input, sends it to OpenAI GPT-4 for executive summary generation, and writes the summary back to a Confluence knowledge base page.
  tags:
  - ai
  - document-management
  - openai
  - confluence
  - automation
capability:
  exposes:
  - type: mcp
    namespace: ai-ops
    port: 8080
    tools:
    - name: summarize-document
      description: Given a raw document text and a Confluence page ID, send the document to OpenAI's chat completions API for a structured executive summary, then update the specified Confluence page with the generated summary.
      inputParameters:
      - name: document_text
        in: body
        type: string
        description: The full text of the document to be summarized.
      - name: confluence_page_id
        in: body
        type: string
        description: The Confluence page ID where the summary will be written.
      - name: summary_length
        in: body
        type: string
        description: 'Desired summary length: ''brief'' (3 sentences), ''standard'' (1 paragraph), or ''detailed'' (3 paragraphs).'
      steps:
      - name: generate-summary
        type: call
        call: openai.chat-completion
        with:
          model: gpt-4o
          prompt: 'Produce a {{summary_length}} executive summary of the following document:


            {{document_text}}'
      - name: update-confluence
        type: call
        call: confluence.update-page
        with:
          page_id: '{{confluence_page_id}}'
          content: '{{generate-summary.choices[0].message.content}}'
  consumes:
  - namespace: openai
    type: http
    baseUri: https://api.openai.com/v1
    authentication:
      type: bearer
      token: $secrets.openai_api_key
    resources:
    - name: chat
      path: /chat/completions
      operations:
      - name: chat-completion
        method: POST
  - namespace: confluence
    type: http
    baseUri: https://bmw.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: page
      path: /content/{page_id}
      inputParameters:
      - name: page_id
        in: path
      operations:
      - name: update-page
        method: PUT
Open in Framework → View in Fleet → openai-document-summarizer.yml

Compares ADP payroll run totals against Workday headcount and salary data to surface discrepancies, then creates a Jira task for payroll audit review and notifies the finance team via Slack.

naftiko: '0.5'
info:
  label: ADP Payroll Discrepancy Detector
  description: Compares ADP payroll run totals against Workday headcount and salary data to surface discrepancies, then creates a Jira task for payroll audit review and notifies the finance team via Slack.
  tags:
  - hr
  - finance
  - payroll
  - adp
  - workday
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: payroll-ops
    port: 8080
    tools:
    - name: detect-payroll-discrepancies
      description: Given an ADP payroll run ID and pay period, fetch the payroll summary from ADP, retrieve the corresponding Workday headcount and salary roster, compare totals, and if variance exceeds the threshold open a Jira audit task and alert the payroll-ops Slack channel.
      inputParameters:
      - name: payroll_run_id
        in: body
        type: string
        description: The ADP payroll run ID to audit.
      - name: pay_period
        in: body
        type: string
        description: The pay period in YYYY-MM format.
      - name: variance_threshold_pct
        in: body
        type: number
        description: The acceptable variance percentage between ADP and Workday totals. Discrepancies above this trigger a Jira task.
      steps:
      - name: get-adp-summary
        type: call
        call: adp.get-payroll-summary
        with:
          payroll_run_id: '{{payroll_run_id}}'
      - name: get-workday-roster
        type: call
        call: workday.get-payroll-roster
        with:
          pay_period: '{{pay_period}}'
      - name: create-audit-task
        type: call
        call: jira.create-issue
        with:
          project_key: FIN
          issuetype: Task
          summary: Payroll discrepancy detected for period {{pay_period}}
          description: 'ADP run {{payroll_run_id}} total: {{get-adp-summary.gross_pay}} | Workday expected: {{get-workday-roster.expected_gross}} | Variance exceeds {{variance_threshold_pct}}%'
      - name: alert-slack
        type: call
        call: slack.post-message
        with:
          channel: payroll-ops
          text: 'Payroll discrepancy found for {{pay_period}}: ADP {{get-adp-summary.gross_pay}} vs Workday {{get-workday-roster.expected_gross}}. Jira: {{create-audit-task.key}}'
  consumes:
  - namespace: adp
    type: http
    baseUri: https://api.adp.com
    authentication:
      type: bearer
      token: $secrets.adp_token
    resources:
    - name: payroll-summary
      path: /payroll/v1/payroll-output/{payroll_run_id}
      inputParameters:
      - name: payroll_run_id
        in: path
      operations:
      - name: get-payroll-summary
        method: GET
  - namespace: workday
    type: http
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: payroll-roster
      path: /reports/payroll-roster
      inputParameters:
      - name: pay_period
        in: query
      operations:
      - name: get-payroll-roster
        method: GET
  - namespace: jira
    type: http
    baseUri: https://bmw.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issue
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - namespace: slack
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: chat
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → adp-payroll-discrepancy-detector.yml

When SPC charts detect out-of-control condition, creates SAP QM notification and alerts process engineer via Teams.

naftiko: '0.5'
info:
  label: Automated SPC Chart Alert
  description: When SPC charts detect out-of-control condition, creates SAP QM notification and alerts process engineer via Teams.
  tags:
  - quality
  - datadog
  - sap
  - microsoft-teams
  - manufacturing
capability:
  exposes:
  - type: mcp
    namespace: quality-ops
    port: 8080
    tools:
    - name: automated-spc-chart-alert
      description: When SPC charts detect out-of-control condition, creates SAP QM notification and alerts process engineer via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Automated SPC Chart Alert: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Automated SPC Chart Alert: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_quality_channel_id
          text: 'Automated SPC Chart Alert | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → automated-spc-chart-alert.yml

Prepares for audit by collecting SharePoint documents, creating Jira checklist, and notifying compliance via Teams.

naftiko: '0.5'
info:
  label: Regulatory Audit Preparation Workflow
  description: Prepares for audit by collecting SharePoint documents, creating Jira checklist, and notifying compliance via Teams.
  tags:
  - compliance
  - sharepoint
  - jira
  - microsoft-teams
  - audit
capability:
  exposes:
  - type: mcp
    namespace: compliance-ops
    port: 8080
    tools:
    - name: regulatory-audit-preparation-workflow
      description: Prepares for audit by collecting SharePoint documents, creating Jira checklist, and notifying compliance via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Regulatory Audit Preparation Workflow: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Regulatory Audit Preparation Workflow: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_compliance_channel_id
          text: 'Regulatory Audit Preparation Workflow | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → regulatory-audit-preparation-workflow.yml

Triggers a Tableau Server workbook refresh on demand or on schedule, waits for completion, and posts the refresh status and workbook URL to the relevant Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Tableau Dashboard Refresh Trigger
  description: Triggers a Tableau Server workbook refresh on demand or on schedule, waits for completion, and posts the refresh status and workbook URL to the relevant Microsoft Teams channel.
  tags:
  - data
  - analytics
  - tableau
  - microsoft-teams
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: bi-reporting
    port: 8080
    tools:
    - name: refresh-tableau-workbook
      description: Given a Tableau Server workbook ID and site ID, trigger a full extract refresh job, then post the refresh completion status and the workbook view URL to the specified Microsoft Teams channel.
      inputParameters:
      - name: site_id
        in: body
        type: string
        description: The Tableau Server site content URL or LUID.
      - name: workbook_id
        in: body
        type: string
        description: The Tableau Server workbook LUID to refresh.
      - name: teams_channel_id
        in: body
        type: string
        description: The Microsoft Teams channel ID to notify upon completion.
      steps:
      - name: trigger-refresh
        type: call
        call: tableau.run-extract-refresh
        with:
          site_id: '{{site_id}}'
          workbook_id: '{{workbook_id}}'
      - name: notify-teams
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: '{{teams_channel_id}}'
          text: 'Tableau workbook {{workbook_id}} refresh job {{trigger-refresh.job_id}} started. Status: {{trigger-refresh.status}}'
  consumes:
  - namespace: tableau
    type: http
    baseUri: https://bmw-tableau.bmwgroup.com/api/2.8
    authentication:
      type: apikey
      key: X-Tableau-Auth
      value: $secrets.tableau_token
      placement: header
    resources:
    - name: extract-refresh
      path: /sites/{site_id}/workbooks/{workbook_id}/refresh
      inputParameters:
      - name: site_id
        in: path
      - name: workbook_id
        in: path
      operations:
      - name: run-extract-refresh
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-message
      path: /teams/{team_id}/channels/{channel_id}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → tableau-dashboard-refresh-trigger.yml

When spare parts inventory drops below threshold, creates a SAP purchase requisition, logs in ServiceNow, and notifies via Teams.

naftiko: '0.5'
info:
  label: Critical Spare Parts Reorder Workflow
  description: When spare parts inventory drops below threshold, creates a SAP purchase requisition, logs in ServiceNow, and notifies via Teams.
  tags:
  - supply-chain
  - sap
  - servicenow
  - microsoft-teams
  - procurement
capability:
  exposes:
  - type: mcp
    namespace: supply-chain-ops
    port: 8080
    tools:
    - name: critical-spare-parts-reorder-workflow
      description: When spare parts inventory drops below threshold, creates a SAP purchase requisition, logs in ServiceNow, and notifies via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Critical Spare Parts Reorder Workflow: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Critical Spare Parts Reorder Workflow: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_supply-chain_channel_id
          text: 'Critical Spare Parts Reorder Workflow | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → critical-spare-parts-reorder-workflow.yml

Retrieves time-off balance from Workday by employee ID.

naftiko: '0.5'
info:
  label: Workday Time Off Balance Check
  description: Retrieves time-off balance from Workday by employee ID.
  tags:
  - hr
  - workday
  - time-off
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: hr
    port: 8080
    tools:
    - name: workday-check
      description: Retrieves time-off balance from Workday by employee ID.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: The identifier for the lookup.
      call: hr.get-record
      with:
        id: '{{identifier}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.result
  consumes:
  - namespace: hr
    type: http
    baseUri: https://bmw-s4.sap.com/api/v1
    authentication:
      type: basic
      username: $secrets.sap_s4_username
      password: $secrets.sap_s4_password
    resources:
    - name: records
      path: /records
      operations:
      - name: get-record
        method: GET
Open in Framework → View in Fleet → workday-time-off-balance-check.yml

On pull request creation, triggers a SonarQube analysis scan on the branch, fetches the quality gate result, and posts a pass or fail status comment back to the GitHub pull request.

naftiko: '0.5'
info:
  label: GitHub Code Quality Gate
  description: On pull request creation, triggers a SonarQube analysis scan on the branch, fetches the quality gate result, and posts a pass or fail status comment back to the GitHub pull request.
  tags:
  - devops
  - code-quality
  - github
  - sonarqube
  - cicd
capability:
  exposes:
  - type: mcp
    namespace: code-quality
    port: 8080
    tools:
    - name: run-quality-gate
      description: Given a GitHub repository, pull request number, and branch name, trigger a SonarQube project analysis, wait for the quality gate result, and post a detailed pass/fail comment on the GitHub pull request.
      inputParameters:
      - name: repository
        in: body
        type: string
        description: The GitHub repository in owner/repo format.
      - name: pr_number
        in: body
        type: integer
        description: The GitHub pull request number.
      - name: branch
        in: body
        type: string
        description: The branch name to analyze in SonarQube.
      - name: sonar_project_key
        in: body
        type: string
        description: The SonarQube project key corresponding to the repository.
      steps:
      - name: trigger-scan
        type: call
        call: sonarqube.trigger-analysis
        with:
          project_key: '{{sonar_project_key}}'
          branch: '{{branch}}'
      - name: get-quality-gate
        type: call
        call: sonarqube.get-quality-gate
        with:
          project_key: '{{sonar_project_key}}'
          branch: '{{branch}}'
      - name: post-pr-comment
        type: call
        call: github.create-pr-comment
        with:
          repository: '{{repository}}'
          pr_number: '{{pr_number}}'
          body: 'SonarQube Quality Gate: {{get-quality-gate.status}} | Coverage: {{get-quality-gate.coverage}}% | Issues: {{get-quality-gate.violations}}'
  consumes:
  - namespace: sonarqube
    type: http
    baseUri: https://sonar.bmwgroup.com/api
    authentication:
      type: basic
      username: $secrets.sonarqube_token
      password: ''
    resources:
    - name: analysis
      path: /ce/submit
      operations:
      - name: trigger-analysis
        method: POST
    - name: quality-gate
      path: /qualitygates/project_status
      inputParameters:
      - name: project_key
        in: query
      - name: branch
        in: query
      operations:
      - name: get-quality-gate
        method: GET
  - namespace: github
    type: http
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: pr-comment
      path: /repos/{repository}/issues/{pr_number}/comments
      inputParameters:
      - name: repository
        in: path
      - name: pr_number
        in: path
      operations:
      - name: create-pr-comment
        method: POST
Open in Framework → View in Fleet → github-code-quality-gate.yml

Queries Pluralsight for employees who have not completed mandatory training courses by the compliance deadline, syncs the non-completion list to Workday, and notifies managers via Microsoft Teams.

naftiko: '0.5'
info:
  label: Pluralsight Learning Compliance Report
  description: Queries Pluralsight for employees who have not completed mandatory training courses by the compliance deadline, syncs the non-completion list to Workday, and notifies managers via Microsoft Teams.
  tags:
  - hr
  - learning
  - compliance
  - pluralsight
  - workday
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: learning-compliance
    port: 8080
    tools:
    - name: report-training-noncompliance
      description: Given a Pluralsight plan ID and compliance deadline, fetch the list of users who have not completed the required course plan, update each user's learning record in Workday, and send a compliance reminder message to their manager via Microsoft Teams.
      inputParameters:
      - name: plan_id
        in: body
        type: string
        description: The Pluralsight plan ID representing the mandatory training course set.
      - name: deadline
        in: body
        type: string
        description: The compliance deadline in YYYY-MM-DD format.
      steps:
      - name: get-noncomplete-users
        type: call
        call: pluralsight.get-plan-progress
        with:
          plan_id: '{{plan_id}}'
          completion_status: incomplete
      - name: update-workday
        type: call
        call: workday.update-learning-record
        with:
          plan_id: '{{plan_id}}'
          users: '{{get-noncomplete-users.users}}'
          status: noncompliant
      - name: notify-managers
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.hr_teams_channel_id
          text: 'Training compliance alert: {{get-noncomplete-users.count}} employees have not completed plan {{plan_id}} by {{deadline}}. Workday records updated.'
  consumes:
  - namespace: pluralsight
    type: http
    baseUri: https://app.pluralsight.com/plans/api/v1
    authentication:
      type: bearer
      token: $secrets.pluralsight_token
    resources:
    - name: plan-progress
      path: /plans/{plan_id}/users
      inputParameters:
      - name: plan_id
        in: path
      - name: completion_status
        in: query
      operations:
      - name: get-plan-progress
        method: GET
  - namespace: workday
    type: http
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: learning-record
      path: /workers/learningRecords
      operations:
      - name: update-learning-record
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-message
      path: /teams/{team_id}/channels/{channel_id}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → pluralsight-learning-compliance-report.yml

Fetches a pending standard change request from ServiceNow, checks it against a pre-approved change template list, and if matched automatically approves it and notifies the requestor via email through Microsoft 365.

naftiko: '0.5'
info:
  label: ServiceNow Change Request Auto-Approver
  description: Fetches a pending standard change request from ServiceNow, checks it against a pre-approved change template list, and if matched automatically approves it and notifies the requestor via email through Microsoft 365.
  tags:
  - itsm
  - change-management
  - servicenow
  - microsoft-365
capability:
  exposes:
  - type: mcp
    namespace: change-mgmt
    port: 8080
    tools:
    - name: auto-approve-change
      description: Given a ServiceNow change request number, fetch the change details, verify it matches a pre-approved standard template, approve it in ServiceNow if eligible, and send a confirmation email to the requestor via Microsoft Graph.
      inputParameters:
      - name: change_number
        in: body
        type: string
        description: The ServiceNow change request number, e.g. CHG0012345.
      steps:
      - name: get-change
        type: call
        call: servicenow.get-change
        with:
          number: '{{change_number}}'
      - name: approve-change
        type: call
        call: servicenow-approve.update-change-state
        with:
          sys_id: '{{get-change.sys_id}}'
          state: approved
      - name: send-email
        type: call
        call: msgraph-mail.send-mail
        with:
          to: '{{get-change.requested_by_email}}'
          subject: Change Request {{change_number}} Auto-Approved
          body: Your standard change request {{change_number}} has been automatically approved and is scheduled for implementation.
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: change
      path: /table/change_request
      inputParameters:
      - name: number
        in: query
      operations:
      - name: get-change
        method: GET
  - namespace: servicenow-approve
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: change-record
      path: /table/change_request/{sys_id}
      inputParameters:
      - name: sys_id
        in: path
      operations:
      - name: update-change-state
        method: PATCH
  - namespace: msgraph-mail
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: send-mail
      path: /users/{sender_id}/sendMail
      inputParameters:
      - name: sender_id
        in: path
      operations:
      - name: send-mail
        method: POST
Open in Framework → View in Fleet → servicenow-change-request-auto-approver.yml

Monitors Informatica data quality rule violations and when a critical threshold is breached, opens a ServiceNow incident, logs the violation details to Snowflake, and sends an alert to the data-stewards Slack channel.

naftiko: '0.5'
info:
  label: Informatica Data Quality Alert Handler
  description: Monitors Informatica data quality rule violations and when a critical threshold is breached, opens a ServiceNow incident, logs the violation details to Snowflake, and sends an alert to the data-stewards Slack channel.
  tags:
  - data
  - data-quality
  - informatica
  - servicenow
  - snowflake
  - slack
capability:
  exposes:
  - type: mcp
    namespace: data-quality-ops
    port: 8080
    tools:
    - name: handle-data-quality-violation
      description: Given an Informatica data quality rule ID and violation count, fetch the rule violation summary from Informatica, open a ServiceNow incident if the violation count exceeds the threshold, write the violation record to Snowflake, and notify the data-stewards Slack channel.
      inputParameters:
      - name: rule_id
        in: body
        type: string
        description: The Informatica data quality rule ID that triggered a violation.
      - name: violation_count
        in: body
        type: integer
        description: The number of records violating the rule in the current run.
      - name: threshold
        in: body
        type: integer
        description: The violation count above which a ServiceNow incident is opened.
      steps:
      - name: get-rule-detail
        type: call
        call: informatica.get-dq-rule
        with:
          rule_id: '{{rule_id}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Data quality violation: {{get-rule-detail.rule_name}} — {{violation_count}} records'
          priority: '3'
          assignment_group: Data_Stewards
      - name: log-violation
        type: call
        call: snowflake.insert-violation
        with:
          table: DATA_QUALITY.VIOLATIONS
          rule_id: '{{rule_id}}'
          violation_count: '{{violation_count}}'
          incident_number: '{{create-incident.number}}'
      - name: notify-slack
        type: call
        call: slack.post-message
        with:
          channel: data-stewards
          text: 'Data quality alert: {{get-rule-detail.rule_name}} — {{violation_count}} violations. Incident: {{create-incident.number}}'
  consumes:
  - namespace: informatica
    type: http
    baseUri: https://dm-us.informaticacloud.com/saas/api/v2
    authentication:
      type: bearer
      token: $secrets.informatica_token
    resources:
    - name: dq-rule
      path: /dqRules/{rule_id}
      inputParameters:
      - name: rule_id
        in: path
      operations:
      - name: get-dq-rule
        method: GET
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: incident
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: snowflake
    type: http
    baseUri: https://bmw.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: insert-violation
        method: POST
  - namespace: slack
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: chat
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → informatica-data-quality-alert-handler.yml

Compiles vendor scorecard from SAP data, aggregates in Snowflake, and publishes to Tableau.

naftiko: '0.5'
info:
  label: Vendor Performance Scorecard Generation
  description: Compiles vendor scorecard from SAP data, aggregates in Snowflake, and publishes to Tableau.
  tags:
  - supply-chain
  - sap
  - snowflake
  - tableau
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: supply-chain-ops
    port: 8080
    tools:
    - name: vendor-performance-scorecard-generation
      description: Compiles vendor scorecard from SAP data, aggregates in Snowflake, and publishes to Tableau.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Vendor Performance Scorecard Generation: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Vendor Performance Scorecard Generation: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_supply-chain_channel_id
          text: 'Vendor Performance Scorecard Generation | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vendor-performance-scorecard-generation.yml

Processes an engineering change order by creating a Jira ECO ticket, updating the BOM in SAP, and notifying teams via Teams.

naftiko: '0.5'
info:
  label: Engineering Change Order Process
  description: Processes an engineering change order by creating a Jira ECO ticket, updating the BOM in SAP, and notifying teams via Teams.
  tags:
  - engineering
  - jira
  - sap
  - microsoft-teams
  - manufacturing
capability:
  exposes:
  - type: mcp
    namespace: engineering-ops
    port: 8080
    tools:
    - name: engineering-change-order-process
      description: Processes an engineering change order by creating a Jira ECO ticket, updating the BOM in SAP, and notifying teams via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Engineering Change Order Process: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Engineering Change Order Process: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_engineering_channel_id
          text: 'Engineering Change Order Process | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → engineering-change-order-process.yml

Retrieves IT asset details from ServiceNow CMDB by asset tag.

naftiko: '0.5'
info:
  label: ServiceNow IT Asset Lookup
  description: Retrieves IT asset details from ServiceNow CMDB by asset tag.
  tags:
  - it-operations
  - servicenow
  - cmdb
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: it-operations
    port: 8080
    tools:
    - name: servicenow-lookup
      description: Retrieves IT asset details from ServiceNow CMDB by asset tag.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: The identifier for the lookup.
      call: it-operations.get-record
      with:
        id: '{{identifier}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.result
  consumes:
  - namespace: it-operations
    type: http
    baseUri: https://bmw-s4.sap.com/api/v1
    authentication:
      type: basic
      username: $secrets.sap_s4_username
      password: $secrets.sap_s4_password
    resources:
    - name: records
      path: /records
      operations:
      - name: get-record
        method: GET
Open in Framework → View in Fleet → servicenow-it-asset-lookup.yml

Receives a SolarWinds network node-down alert, fetches node details from SolarWinds, creates a P1 ServiceNow incident, and sends an emergency notification to the network operations Microsoft Teams channel.

naftiko: '0.5'
info:
  label: SolarWinds Network Alert to Incident Bridge
  description: Receives a SolarWinds network node-down alert, fetches node details from SolarWinds, creates a P1 ServiceNow incident, and sends an emergency notification to the network operations Microsoft Teams channel.
  tags:
  - itsm
  - networking
  - solarwinds
  - servicenow
  - microsoft-teams
  - incident-response
capability:
  exposes:
  - type: mcp
    namespace: netops
    port: 8080
    tools:
    - name: handle-node-down-alert
      description: Given a SolarWinds node ID and alert details, fetch the full node status from SolarWinds Orion, create a P1 ServiceNow incident assigned to the Network Operations group, and post an urgent alert to the network-ops Microsoft Teams channel.
      inputParameters:
      - name: node_id
        in: body
        type: string
        description: The SolarWinds Orion node ID that went down.
      - name: alert_message
        in: body
        type: string
        description: The alert message text from SolarWinds.
      steps:
      - name: get-node-status
        type: call
        call: solarwinds.get-node
        with:
          node_id: '{{node_id}}'
      - name: create-p1-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Network node down: {{get-node-status.Caption}} ({{get-node-status.IPAddress}})'
          description: '{{alert_message}} | Node: {{get-node-status.Caption}} | IP: {{get-node-status.IPAddress}} | Location: {{get-node-status.Location}}'
          priority: '1'
          assignment_group: Network_Operations
      - name: notify-teams
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.netops_teams_channel_id
          text: 'P1 NETWORK OUTAGE: Node {{get-node-status.Caption}} ({{get-node-status.IPAddress}}) is down. ServiceNow: {{create-p1-incident.number}}'
  consumes:
  - namespace: solarwinds
    type: http
    baseUri: https://bmw-solarwinds.bmwgroup.com/api/v1
    authentication:
      type: basic
      username: $secrets.solarwinds_user
      password: $secrets.solarwinds_pass
    resources:
    - name: node
      path: /nodes/{node_id}
      inputParameters:
      - name: node_id
        in: path
      operations:
      - name: get-node
        method: GET
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: incident
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-message
      path: /teams/{team_id}/channels/{channel_id}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → solarwinds-network-alert-to-incident-bridge.yml

Polls Dynatrace for SLO breach events, opens a ServiceNow problem record, and pushes a structured alert to the New Relic event API for cross-platform observability correlation.

naftiko: '0.5'
info:
  label: Dynatrace SLO Breach Alert
  description: Polls Dynatrace for SLO breach events, opens a ServiceNow problem record, and pushes a structured alert to the New Relic event API for cross-platform observability correlation.
  tags:
  - observability
  - slo
  - dynatrace
  - servicenow
  - new-relic
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: observability-ops
    port: 8080
    tools:
    - name: handle-slo-breach
      description: Given a Dynatrace SLO ID and breach details, open a ServiceNow Problem record for root-cause analysis and create a correlated custom event in New Relic for unified observability tracking.
      inputParameters:
      - name: slo_id
        in: body
        type: string
        description: The Dynatrace SLO ID that breached its target.
      - name: service_name
        in: body
        type: string
        description: The service or application name associated with the SLO.
      - name: current_value
        in: body
        type: number
        description: The current SLO value at the time of breach (e.g. 98.1 for 98.1%).
      - name: target_value
        in: body
        type: number
        description: The SLO target value that was not met.
      steps:
      - name: create-problem
        type: call
        call: servicenow.create-problem
        with:
          short_description: 'SLO breach: {{service_name}} — current {{current_value}}% vs target {{target_value}}%'
          priority: '2'
          assignment_group: SRE_Team
      - name: push-newrelic-event
        type: call
        call: newrelic.post-custom-event
        with:
          eventType: SLOBreach
          service: '{{service_name}}'
          slo_id: '{{slo_id}}'
          current_value: '{{current_value}}'
          target_value: '{{target_value}}'
          servicenow_problem: '{{create-problem.number}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: problem
      path: /table/problem
      operations:
      - name: create-problem
        method: POST
  - namespace: newrelic
    type: http
    baseUri: https://insights-collector.newrelic.com/v1
    authentication:
      type: apikey
      key: X-Insert-Key
      value: $secrets.newrelic_insert_key
      placement: header
    resources:
    - name: events
      path: /accounts/{account_id}/events
      inputParameters:
      - name: account_id
        in: path
      operations:
      - name: post-custom-event
        method: POST
Open in Framework → View in Fleet → dynatrace-slo-breach-alert.yml

Retrieves completed HubSpot email campaign statistics and syncs open rate, click rate, and bounce data into a Snowflake marketing analytics table for cross-channel reporting.

naftiko: '0.5'
info:
  label: HubSpot Marketing Campaign Email Sync
  description: Retrieves completed HubSpot email campaign statistics and syncs open rate, click rate, and bounce data into a Snowflake marketing analytics table for cross-channel reporting.
  tags:
  - marketing
  - hubspot
  - snowflake
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: marketing-ops
    port: 8080
    tools:
    - name: sync-email-campaign-stats
      description: Given a HubSpot campaign ID, fetch the email send statistics (opens, clicks, bounces) from HubSpot Marketing API and upsert the results into Snowflake MARKETING.EMAIL_CAMPAIGNS for BI reporting.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: The HubSpot email campaign ID.
      steps:
      - name: get-campaign-stats
        type: call
        call: hubspot.get-campaign-stats
        with:
          campaign_id: '{{campaign_id}}'
      - name: upsert-snowflake
        type: call
        call: snowflake.upsert-records
        with:
          table: MARKETING.EMAIL_CAMPAIGNS
          records: '{{get-campaign-stats.counters}}'
  consumes:
  - namespace: hubspot
    type: http
    baseUri: https://api.hubapi.com/marketing/v3
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: campaign-stats
      path: /emails/statistics/list
      inputParameters:
      - name: campaign_id
        in: query
      operations:
      - name: get-campaign-stats
        method: GET
  - namespace: snowflake
    type: http
    baseUri: https://bmw.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: upsert-records
        method: POST
Open in Framework → View in Fleet → hubspot-marketing-campaign-email-sync.yml

When hazardous material is received, validates SDS in SharePoint, creates SAP EHS notification, and alerts safety via Teams.

naftiko: '0.5'
info:
  label: Hazardous Material Handling Alert
  description: When hazardous material is received, validates SDS in SharePoint, creates SAP EHS notification, and alerts safety via Teams.
  tags:
  - safety
  - ehs
  - sharepoint
  - sap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: safety-ops
    port: 8080
    tools:
    - name: hazardous-material-handling-alert
      description: When hazardous material is received, validates SDS in SharePoint, creates SAP EHS notification, and alerts safety via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Hazardous Material Handling Alert: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Hazardous Material Handling Alert: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_safety_channel_id
          text: 'Hazardous Material Handling Alert | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → hazardous-material-handling-alert.yml

When a new model version is registered in Azure Databricks Model Registry, triggers a staging deployment job, fetches the evaluation metrics, and posts the model card summary to the data science Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Azure Databricks ML Model Deployment Notifier
  description: When a new model version is registered in Azure Databricks Model Registry, triggers a staging deployment job, fetches the evaluation metrics, and posts the model card summary to the data science Microsoft Teams channel.
  tags:
  - ai
  - mlops
  - azure-databricks
  - microsoft-teams
  - model-deployment
capability:
  exposes:
  - type: mcp
    namespace: mlops
    port: 8080
    tools:
    - name: deploy-and-notify-model
      description: Given an Azure Databricks workspace URL, model name, and model version, transition the registered model version to Staging, fetch the run metrics for evaluation, and post a model card summary to the data-science Microsoft Teams channel.
      inputParameters:
      - name: model_name
        in: body
        type: string
        description: The registered model name in Azure Databricks Model Registry.
      - name: model_version
        in: body
        type: string
        description: The model version number to deploy to staging.
      - name: run_id
        in: body
        type: string
        description: The MLflow run ID associated with this model version.
      steps:
      - name: transition-model
        type: call
        call: databricks.transition-model-stage
        with:
          model_name: '{{model_name}}'
          version: '{{model_version}}'
          stage: Staging
      - name: get-run-metrics
        type: call
        call: databricks.get-run
        with:
          run_id: '{{run_id}}'
      - name: notify-teams
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: $secrets.datascience_teams_channel_id
          text: 'Model {{model_name}} v{{model_version}} deployed to Staging | Accuracy: {{get-run-metrics.metrics.accuracy}} | F1: {{get-run-metrics.metrics.f1_score}} | Run: {{run_id}}'
  consumes:
  - namespace: databricks
    type: http
    baseUri: https://adb-bmw.azuredatabricks.net/api/2.1
    authentication:
      type: bearer
      token: $secrets.databricks_token
    resources:
    - name: model-version-transition
      path: /mlflow/model-versions/transition-stage
      operations:
      - name: transition-model-stage
        method: POST
    - name: run
      path: /mlflow/runs/get
      inputParameters:
      - name: run_id
        in: query
      operations:
      - name: get-run
        method: GET
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-message
      path: /teams/{team_id}/channels/{channel_id}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → azure-databricks-ml-model-deployment-notifier.yml

Triggers a refresh of a Tableau analytics dashboard.

naftiko: '0.5'
info:
  label: Tableau Dashboard Refresh
  description: Triggers a refresh of a Tableau analytics dashboard.
  tags:
  - analytics
  - tableau
  - dashboard
capability:
  exposes:
  - type: mcp
    namespace: analytics
    port: 8080
    tools:
    - name: tableau-refresh
      description: Triggers a refresh of a Tableau analytics dashboard.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: The identifier for the lookup.
      call: analytics.get-record
      with:
        id: '{{identifier}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.result
  consumes:
  - namespace: analytics
    type: http
    baseUri: https://bmw-s4.sap.com/api/v1
    authentication:
      type: basic
      username: $secrets.sap_s4_username
      password: $secrets.sap_s4_password
    resources:
    - name: records
      path: /records
      operations:
      - name: get-record
        method: GET
Open in Framework → View in Fleet → tableau-dashboard-refresh.yml

Pulls active job applicants from LinkedIn Talent Hub for a given job posting and syncs their application status and contact details into Workday Recruiting for unified talent pipeline management.

naftiko: '0.5'
info:
  label: LinkedIn Recruiting Pipeline Sync
  description: Pulls active job applicants from LinkedIn Talent Hub for a given job posting and syncs their application status and contact details into Workday Recruiting for unified talent pipeline management.
  tags:
  - hr
  - recruiting
  - linkedin
  - workday
capability:
  exposes:
  - type: mcp
    namespace: talent-ops
    port: 8080
    tools:
    - name: sync-linkedin-applicants
      description: Given a LinkedIn job posting ID, fetch all applicants with their profiles and status from the LinkedIn Talent Solutions API, then create or update each applicant record in Workday Recruiting.
      inputParameters:
      - name: job_posting_id
        in: body
        type: string
        description: The LinkedIn job posting ID to retrieve applicants for.
      steps:
      - name: get-applicants
        type: call
        call: linkedin.get-job-applicants
        with:
          job_posting_id: '{{job_posting_id}}'
      - name: sync-to-workday
        type: call
        call: workday.create-candidate
        with:
          applicants: '{{get-applicants.elements}}'
          source: LinkedIn
  consumes:
  - namespace: linkedin
    type: http
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: job-applicants
      path: /jobApplications
      inputParameters:
      - name: job_posting_id
        in: query
      operations:
      - name: get-job-applicants
        method: GET
  - namespace: workday
    type: http
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: candidate
      path: /recruiting/candidates
      operations:
      - name: create-candidate
        method: POST
Open in Framework → View in Fleet → linkedin-recruiting-pipeline-sync.yml

Receives a Palo Alto Networks threat alert, looks up the source IP in the threat intelligence feed, opens a high-priority ServiceNow security incident, and notifies the security team Slack channel.

naftiko: '0.5'
info:
  label: Palo Alto Networks Security Alert Triage
  description: Receives a Palo Alto Networks threat alert, looks up the source IP in the threat intelligence feed, opens a high-priority ServiceNow security incident, and notifies the security team Slack channel.
  tags:
  - security
  - incident-response
  - palo-alto-networks
  - servicenow
  - slack
capability:
  exposes:
  - type: mcp
    namespace: security-ops
    port: 8080
    tools:
    - name: triage-security-alert
      description: Given a Palo Alto Networks alert ID and source IP, fetch the threat detail from the Palo Alto firewall API, create a high-priority security incident in ServiceNow, and post triage context to the security-alerts Slack channel.
      inputParameters:
      - name: alert_id
        in: body
        type: string
        description: The Palo Alto Networks threat log alert ID.
      - name: source_ip
        in: body
        type: string
        description: The source IP address associated with the threat alert.
      - name: threat_type
        in: body
        type: string
        description: The threat category, e.g. vulnerability, spyware, wildfire-virus.
      steps:
      - name: get-threat-detail
        type: call
        call: paloalto.get-threat-log
        with:
          alert_id: '{{alert_id}}'
      - name: create-sec-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Security threat detected: {{threat_type}} from {{source_ip}}'
          description: 'Alert ID: {{alert_id}} | Threat: {{get-threat-detail.threat_name}} | Severity: {{get-threat-detail.severity}}'
          priority: '1'
          assignment_group: Security_Operations
      - name: alert-security-slack
        type: call
        call: slack.post-message
        with:
          channel: security-alerts
          text: 'SECURITY INCIDENT {{create-sec-incident.number}}: {{threat_type}} from {{source_ip}} | Severity: {{get-threat-detail.severity}} | ServiceNow: {{create-sec-incident.number}}'
  consumes:
  - namespace: paloalto
    type: http
    baseUri: https://bmw-fw.bmwgroup.com/restapi/v10.1
    authentication:
      type: apikey
      key: X-PAN-KEY
      value: $secrets.paloalto_api_key
      placement: header
    resources:
    - name: threat-log
      path: /Objects/Threats/{alert_id}
      inputParameters:
      - name: alert_id
        in: path
      operations:
      - name: get-threat-log
        method: GET
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: incident
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: slack
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: chat
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → palo-alto-networks-security-alert-triage.yml

Initiates a supplier quality audit by pulling vendor data from SAP, creating a Jira task, and notifying quality via Teams.

naftiko: '0.5'
info:
  label: Supplier Quality Audit Workflow
  description: Initiates a supplier quality audit by pulling vendor data from SAP, creating a Jira task, and notifying quality via Teams.
  tags:
  - quality
  - supply-chain
  - sap
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: quality-ops
    port: 8080
    tools:
    - name: supplier-quality-audit-workflow
      description: Initiates a supplier quality audit by pulling vendor data from SAP, creating a Jira task, and notifying quality via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Supplier Quality Audit Workflow: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Supplier Quality Audit Workflow: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_quality_channel_id
          text: 'Supplier Quality Audit Workflow | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → supplier-quality-audit-workflow.yml

When Datadog detects abnormal patterns, creates SAP PM work order and alerts maintenance via Teams.

naftiko: '0.5'
info:
  label: Predictive Maintenance Alert
  description: When Datadog detects abnormal patterns, creates SAP PM work order and alerts maintenance via Teams.
  tags:
  - manufacturing
  - datadog
  - sap
  - microsoft-teams
  - maintenance
capability:
  exposes:
  - type: mcp
    namespace: manufacturing-ops
    port: 8080
    tools:
    - name: predictive-maintenance-alert
      description: When Datadog detects abnormal patterns, creates SAP PM work order and alerts maintenance via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Predictive Maintenance Alert: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Predictive Maintenance Alert: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_manufacturing_channel_id
          text: 'Predictive Maintenance Alert | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → predictive-maintenance-alert.yml

Validates quality gate by pulling SAP QM results, checking Jira criteria, and posting status to Teams.

naftiko: '0.5'
info:
  label: Production Quality Gate Check
  description: Validates quality gate by pulling SAP QM results, checking Jira criteria, and posting status to Teams.
  tags:
  - quality
  - manufacturing
  - sap
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: quality-ops
    port: 8080
    tools:
    - name: production-quality-gate-check
      description: Validates quality gate by pulling SAP QM results, checking Jira criteria, and posting status to Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Production Quality Gate Check: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Production Quality Gate Check: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_quality_channel_id
          text: 'Production Quality Gate Check | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → production-quality-gate-check.yml

Retrieves account details from Salesforce by account ID.

naftiko: '0.5'
info:
  label: Salesforce Account Lookup
  description: Retrieves account details from Salesforce by account ID.
  tags:
  - sales
  - salesforce
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: sales
    port: 8080
    tools:
    - name: salesforce-lookup
      description: Retrieves account details from Salesforce by account ID.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: The identifier for the lookup.
      call: sales.get-record
      with:
        id: '{{identifier}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.result
  consumes:
  - namespace: sales
    type: http
    baseUri: https://bmw-s4.sap.com/api/v1
    authentication:
      type: basic
      username: $secrets.sap_s4_username
      password: $secrets.sap_s4_password
    resources:
    - name: records
      path: /records
      operations:
      - name: get-record
        method: GET
Open in Framework → View in Fleet → salesforce-account-lookup.yml

Provisions program workspace by creating Jira project, Confluence space, and Teams channel.

naftiko: '0.5'
info:
  label: New Program Workspace Setup
  description: Provisions program workspace by creating Jira project, Confluence space, and Teams channel.
  tags:
  - engineering
  - jira
  - confluence
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: engineering-ops
    port: 8080
    tools:
    - name: new-program-workspace-setup
      description: Provisions program workspace by creating Jira project, Confluence space, and Teams channel.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'New Program Workspace Setup: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'New Program Workspace Setup: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_engineering_channel_id
          text: 'New Program Workspace Setup | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → new-program-workspace-setup.yml

Checks branch protection rules for a GitHub repository.

naftiko: '0.5'
info:
  label: GitHub Repository Branch Protection Check
  description: Checks branch protection rules for a GitHub repository.
  tags:
  - devops
  - github
  - security
  - compliance
capability:
  exposes:
  - type: mcp
    namespace: devops
    port: 8080
    tools:
    - name: github-check
      description: Checks branch protection rules for a GitHub repository.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: The identifier for the lookup.
      call: devops.get-record
      with:
        id: '{{identifier}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.result
  consumes:
  - namespace: devops
    type: http
    baseUri: https://bmw-s4.sap.com/api/v1
    authentication:
      type: basic
      username: $secrets.sap_s4_username
      password: $secrets.sap_s4_password
    resources:
    - name: records
      path: /records
      operations:
      - name: get-record
        method: GET
Open in Framework → View in Fleet → github-repository-branch-protection-check.yml

Retrieves the current account status of a user in Okta by email.

naftiko: '0.5'
info:
  label: Okta User Status Check
  description: Retrieves the current account status of a user in Okta by email.
  tags:
  - identity
  - okta
  - security
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: identity
    port: 8080
    tools:
    - name: okta-check
      description: Retrieves the current account status of a user in Okta by email.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: The identifier for the lookup.
      call: identity.get-record
      with:
        id: '{{identifier}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.result
  consumes:
  - namespace: identity
    type: http
    baseUri: https://bmw-s4.sap.com/api/v1
    authentication:
      type: basic
      username: $secrets.sap_s4_username
      password: $secrets.sap_s4_password
    resources:
    - name: records
      path: /records
      operations:
      - name: get-record
        method: GET
Open in Framework → View in Fleet → okta-user-status-check.yml

When safety incident reported, creates ServiceNow incident, SAP EHS notification, and alerts safety via Teams.

naftiko: '0.5'
info:
  label: Safety Incident Investigation Workflow
  description: When safety incident reported, creates ServiceNow incident, SAP EHS notification, and alerts safety via Teams.
  tags:
  - safety
  - servicenow
  - sap
  - microsoft-teams
  - ehs
capability:
  exposes:
  - type: mcp
    namespace: safety-ops
    port: 8080
    tools:
    - name: safety-incident-investigation-workflow
      description: When safety incident reported, creates ServiceNow incident, SAP EHS notification, and alerts safety via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Safety Incident Investigation Workflow: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Safety Incident Investigation Workflow: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_safety_channel_id
          text: 'Safety Incident Investigation Workflow | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → safety-incident-investigation-workflow.yml

When an employee departure is recorded in Workday, disables the Azure Active Directory account, closes open ServiceNow tickets assigned to the user, and notifies the HR team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Employee Offboarding Workflow
  description: When an employee departure is recorded in Workday, disables the Azure Active Directory account, closes open ServiceNow tickets assigned to the user, and notifies the HR team via Microsoft Teams.
  tags:
  - hr
  - offboarding
  - workday
  - azure-active-directory
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-offboarding
    port: 8080
    tools:
    - name: trigger-offboarding
      description: Given a Workday employee ID and termination date, disable their Azure AD account, resolve their open ServiceNow tickets, and post a deprovisioning confirmation to the HR Microsoft Teams channel.
      inputParameters:
      - name: workday_employee_id
        in: body
        type: string
        description: The Workday worker ID for the departing employee.
      - name: termination_date
        in: body
        type: string
        description: The employee termination date in YYYY-MM-DD format.
      steps:
      - name: get-employee
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{workday_employee_id}}'
      - name: disable-account
        type: call
        call: azure-ad.disable-user
        with:
          user_upn: '{{get-employee.work_email}}'
          account_enabled: 'false'
      - name: notify-hr
        type: call
        call: msteams-hr.post-channel-message
        with:
          channel_id: $secrets.hr_teams_channel_id
          text: 'Offboarding complete for {{get-employee.full_name}} (term date: {{termination_date}}). Azure AD account disabled.'
  consumes:
  - namespace: workday
    type: http
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: worker
      path: /workers/{worker_id}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - namespace: azure-ad
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.azure_ad_token
    resources:
    - name: user
      path: /users/{user_upn}
      inputParameters:
      - name: user_upn
        in: path
      operations:
      - name: disable-user
        method: PATCH
  - namespace: msteams-hr
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-message
      path: /teams/{team_id}/channels/{channel_id}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → employee-offboarding-workflow.yml

When a new hire record is created in Workday, opens a ServiceNow onboarding ticket, provisions an Azure Active Directory account, and sends a Microsoft Teams welcome message with first-day instructions.

naftiko: '0.5'
info:
  label: New Hire Onboarding Orchestrator
  description: When a new hire record is created in Workday, opens a ServiceNow onboarding ticket, provisions an Azure Active Directory account, and sends a Microsoft Teams welcome message with first-day instructions.
  tags:
  - hr
  - onboarding
  - workday
  - servicenow
  - azure-active-directory
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-onboarding
    port: 8080
    tools:
    - name: trigger-onboarding
      description: 'Given a Workday employee ID and start date, orchestrate the full new-hire onboarding sequence: fetch employee profile from Workday, open a ServiceNow onboarding task, provision an Azure AD account, and send a Microsoft Teams welcome card.'
      inputParameters:
      - name: workday_employee_id
        in: body
        type: string
        description: The Workday worker ID for the new hire.
      - name: start_date
        in: body
        type: string
        description: The employee start date in YYYY-MM-DD format.
      steps:
      - name: get-employee
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{workday_employee_id}}'
      - name: open-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'New hire onboarding: {{get-employee.full_name}}'
          category: hr_onboarding
          assigned_to: IT_Onboarding_Team
      - name: provision-ad-account
        type: call
        call: azure-ad.create-user
        with:
          display_name: '{{get-employee.full_name}}'
          mail_nickname: '{{get-employee.preferred_name}}'
          department: '{{get-employee.department}}'
      - name: send-welcome
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-employee.work_email}}'
          text: Welcome to BMW, {{get-employee.first_name}}! Your IT onboarding ticket is {{open-ticket.number}}. Your Azure account is ready.
  consumes:
  - namespace: workday
    type: http
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: worker
      path: /workers/{worker_id}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: incident
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: azure-ad
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.azure_ad_token
    resources:
    - name: users
      path: /users
      operations:
      - name: create-user
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: chat-messages
      path: /chats/{chat_id}/messages
      inputParameters:
      - name: chat_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → new-hire-onboarding-orchestrator.yml

On new lead creation in Salesforce, looks up the contact in ZoomInfo to enrich company size, industry, and direct-dial phone, then writes the enriched fields back to the Salesforce lead record.

naftiko: '0.5'
info:
  label: Salesforce Lead Enrichment via ZoomInfo
  description: On new lead creation in Salesforce, looks up the contact in ZoomInfo to enrich company size, industry, and direct-dial phone, then writes the enriched fields back to the Salesforce lead record.
  tags:
  - sales
  - crm
  - salesforce
  - zoominfo
  - lead-enrichment
capability:
  exposes:
  - type: mcp
    namespace: lead-enrichment
    port: 8080
    tools:
    - name: enrich-lead
      description: Given a Salesforce lead ID, fetch the lead's email from Salesforce, look up the contact in ZoomInfo for firmographic data, and patch the enriched fields (company size, industry, phone) back onto the Salesforce lead record.
      inputParameters:
      - name: lead_id
        in: body
        type: string
        description: The Salesforce lead record ID (18-character format).
      steps:
      - name: get-lead
        type: call
        call: salesforce.get-lead
        with:
          lead_id: '{{lead_id}}'
      - name: lookup-zoominfo
        type: call
        call: zoominfo.search-contact
        with:
          email: '{{get-lead.Email}}'
      - name: update-lead
        type: call
        call: salesforce-update.patch-lead
        with:
          lead_id: '{{lead_id}}'
          NumberOfEmployees: '{{lookup-zoominfo.employeeCount}}'
          Industry: '{{lookup-zoominfo.industry}}'
          Phone: '{{lookup-zoominfo.directPhone}}'
  consumes:
  - namespace: salesforce
    type: http
    baseUri: https://bmw.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: lead
      path: /sobjects/Lead/{lead_id}
      inputParameters:
      - name: lead_id
        in: path
      operations:
      - name: get-lead
        method: GET
  - namespace: zoominfo
    type: http
    baseUri: https://api.zoominfo.com/search
    authentication:
      type: bearer
      token: $secrets.zoominfo_token
    resources:
    - name: contact
      path: /contact
      operations:
      - name: search-contact
        method: POST
  - namespace: salesforce-update
    type: http
    baseUri: https://bmw.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: lead-patch
      path: /sobjects/Lead/{lead_id}
      inputParameters:
      - name: lead_id
        in: path
      operations:
      - name: patch-lead
        method: PATCH
Open in Framework → View in Fleet → salesforce-lead-enrichment-via-zoominfo.yml

Reconciles timecards by comparing Workday entries against SAP hours, flagging discrepancies in Jira.

naftiko: '0.5'
info:
  label: Automated Timecard Reconciliation
  description: Reconciles timecards by comparing Workday entries against SAP hours, flagging discrepancies in Jira.
  tags:
  - hr
  - workday
  - sap
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-ops
    port: 8080
    tools:
    - name: automated-timecard-reconciliation
      description: Reconciles timecards by comparing Workday entries against SAP hours, flagging discrepancies in Jira.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Automated Timecard Reconciliation: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Automated Timecard Reconciliation: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_hr_channel_id
          text: 'Automated Timecard Reconciliation | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → automated-timecard-reconciliation.yml

Processes warranty claim from Salesforce by creating SAP service order, Jira investigation, and notifying warranty team.

naftiko: '0.5'
info:
  label: Dealer Warranty Claim Processing
  description: Processes warranty claim from Salesforce by creating SAP service order, Jira investigation, and notifying warranty team.
  tags:
  - quality
  - salesforce
  - sap
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: quality-ops
    port: 8080
    tools:
    - name: dealer-warranty-claim-processing
      description: Processes warranty claim from Salesforce by creating SAP service order, Jira investigation, and notifying warranty team.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Dealer Warranty Claim Processing: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Dealer Warranty Claim Processing: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_quality_channel_id
          text: 'Dealer Warranty Claim Processing | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → dealer-warranty-claim-processing.yml

Retrieves vendor master data from SAP by vendor number.

naftiko: '0.5'
info:
  label: SAP Vendor Master Lookup
  description: Retrieves vendor master data from SAP by vendor number.
  tags:
  - procurement
  - sap
  - sap-s4hana
  - vendor
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: procurement
    port: 8080
    tools:
    - name: sap-lookup
      description: Retrieves vendor master data from SAP by vendor number.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: The identifier for the lookup.
      call: procurement.get-record
      with:
        id: '{{identifier}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.result
  consumes:
  - namespace: procurement
    type: http
    baseUri: https://bmw-s4.sap.com/api/v1
    authentication:
      type: basic
      username: $secrets.sap_s4_username
      password: $secrets.sap_s4_password
    resources:
    - name: records
      path: /records
      operations:
      - name: get-record
        method: GET
Open in Framework → View in Fleet → sap-vendor-master-lookup.yml

Creates SAP PM work order, ServiceNow task, and alerts facilities via Teams.

naftiko: '0.5'
info:
  label: Facility Maintenance Work Order Orchestration
  description: Creates SAP PM work order, ServiceNow task, and alerts facilities via Teams.
  tags:
  - manufacturing
  - sap
  - servicenow
  - microsoft-teams
  - maintenance
capability:
  exposes:
  - type: mcp
    namespace: manufacturing-ops
    port: 8080
    tools:
    - name: facility-maintenance-work-order-orchestration
      description: Creates SAP PM work order, ServiceNow task, and alerts facilities via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Facility Maintenance Work Order Orchestration: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Facility Maintenance Work Order Orchestration: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_manufacturing_channel_id
          text: 'Facility Maintenance Work Order Orchestration | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → facility-maintenance-work-order-orchestration.yml

Compiles daily manufacturing KPIs from SAP, refreshes Tableau dashboard, and posts summary to Teams.

naftiko: '0.5'
info:
  label: Manufacturing KPI Daily Digest
  description: Compiles daily manufacturing KPIs from SAP, refreshes Tableau dashboard, and posts summary to Teams.
  tags:
  - production
  - sap
  - tableau
  - microsoft-teams
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: production-ops
    port: 8080
    tools:
    - name: manufacturing-kpi-daily-digest
      description: Compiles daily manufacturing KPIs from SAP, refreshes Tableau dashboard, and posts summary to Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Manufacturing KPI Daily Digest: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Manufacturing KPI Daily Digest: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_production_channel_id
          text: 'Manufacturing KPI Daily Digest | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → manufacturing-kpi-daily-digest.yml

Orchestrates OTA update by scheduling via ServiceNow and notifying the connected vehicle team via Teams.

naftiko: '0.5'
info:
  label: Connected Vehicle OTA Update Rollout
  description: Orchestrates OTA update by scheduling via ServiceNow and notifying the connected vehicle team via Teams.
  tags:
  - automotive
  - servicenow
  - microsoft-teams
  - connected-vehicle
capability:
  exposes:
  - type: mcp
    namespace: automotive-ops
    port: 8080
    tools:
    - name: connected-vehicle-ota-update-rollout
      description: Orchestrates OTA update by scheduling via ServiceNow and notifying the connected vehicle team via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Connected Vehicle OTA Update Rollout: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Connected Vehicle OTA Update Rollout: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_automotive_channel_id
          text: 'Connected Vehicle OTA Update Rollout | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → connected-vehicle-ota-update-rollout.yml

Monitors plant energy via Datadog, logs in ServiceNow, and alerts facilities via Teams.

naftiko: '0.5'
info:
  label: Plant Energy Consumption Monitoring
  description: Monitors plant energy via Datadog, logs in ServiceNow, and alerts facilities via Teams.
  tags:
  - sustainability
  - datadog
  - servicenow
  - microsoft-teams
  - ehs
capability:
  exposes:
  - type: mcp
    namespace: sustainability-ops
    port: 8080
    tools:
    - name: plant-energy-consumption-monitoring
      description: Monitors plant energy via Datadog, logs in ServiceNow, and alerts facilities via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Plant Energy Consumption Monitoring: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Plant Energy Consumption Monitoring: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_sustainability_channel_id
          text: 'Plant Energy Consumption Monitoring | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → plant-energy-consumption-monitoring.yml

Monitors paint quality via Datadog, logs deviations in SAP QM, and alerts paint shop supervisor via Teams.

naftiko: '0.5'
info:
  label: Paint Shop Quality Monitoring
  description: Monitors paint quality via Datadog, logs deviations in SAP QM, and alerts paint shop supervisor via Teams.
  tags:
  - quality
  - datadog
  - sap
  - microsoft-teams
  - manufacturing
capability:
  exposes:
  - type: mcp
    namespace: quality-ops
    port: 8080
    tools:
    - name: paint-shop-quality-monitoring
      description: Monitors paint quality via Datadog, logs deviations in SAP QM, and alerts paint shop supervisor via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Paint Shop Quality Monitoring: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Paint Shop Quality Monitoring: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_quality_channel_id
          text: 'Paint Shop Quality Monitoring | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → paint-shop-quality-monitoring.yml

After a Gong call is processed, retrieves the AI-generated call summary and action items, then updates the related Salesforce opportunity with the call notes and next steps.

naftiko: '0.5'
info:
  label: Gong Call Intelligence to Salesforce Sync
  description: After a Gong call is processed, retrieves the AI-generated call summary and action items, then updates the related Salesforce opportunity with the call notes and next steps.
  tags:
  - sales
  - crm
  - gong
  - salesforce
  - ai
capability:
  exposes:
  - type: mcp
    namespace: sales-intelligence
    port: 8080
    tools:
    - name: sync-gong-call-to-salesforce
      description: Given a Gong call ID and a Salesforce opportunity ID, fetch the call transcript summary and AI-extracted action items from Gong, then write the call notes and next steps to the Salesforce opportunity record as an activity log.
      inputParameters:
      - name: gong_call_id
        in: body
        type: string
        description: The Gong call ID to retrieve summary and action items for.
      - name: salesforce_opportunity_id
        in: body
        type: string
        description: The Salesforce opportunity ID to update with the call intelligence.
      steps:
      - name: get-call-summary
        type: call
        call: gong.get-call
        with:
          call_id: '{{gong_call_id}}'
      - name: log-activity
        type: call
        call: salesforce.create-task
        with:
          whatId: '{{salesforce_opportunity_id}}'
          subject: 'Gong Call: {{get-call-summary.title}}'
          description: '{{get-call-summary.brief}}'
          type: Call
          status: Completed
  consumes:
  - namespace: gong
    type: http
    baseUri: https://api.gong.io/v2
    authentication:
      type: basic
      username: $secrets.gong_access_key
      password: $secrets.gong_access_secret
    resources:
    - name: call
      path: /calls/{call_id}
      inputParameters:
      - name: call_id
        in: path
      operations:
      - name: get-call
        method: GET
  - namespace: salesforce
    type: http
    baseUri: https://bmw.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: task
      path: /sobjects/Task
      operations:
      - name: create-task
        method: POST
Open in Framework → View in Fleet → gong-call-intelligence-to-salesforce-sync.yml

Initiates a quality defect investigation by creating a SAP quality notification, a Jira ticket, and alerting quality via Teams.

naftiko: '0.5'
info:
  label: Quality Defect Investigation
  description: Initiates a quality defect investigation by creating a SAP quality notification, a Jira ticket, and alerting quality via Teams.
  tags:
  - quality
  - sap
  - jira
  - microsoft-teams
  - manufacturing
capability:
  exposes:
  - type: mcp
    namespace: quality-ops
    port: 8080
    tools:
    - name: quality-defect-investigation
      description: Initiates a quality defect investigation by creating a SAP quality notification, a Jira ticket, and alerting quality via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Quality Defect Investigation: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Quality Defect Investigation: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_quality_channel_id
          text: 'Quality Defect Investigation | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → quality-defect-investigation.yml

Tracks continuous improvement by creating Jira stories, logging in ServiceNow, and notifying the kaizen team via Teams.

naftiko: '0.5'
info:
  label: Kaizen Improvement Tracking
  description: Tracks continuous improvement by creating Jira stories, logging in ServiceNow, and notifying the kaizen team via Teams.
  tags:
  - manufacturing
  - jira
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: manufacturing-ops
    port: 8080
    tools:
    - name: kaizen-improvement-tracking
      description: Tracks continuous improvement by creating Jira stories, logging in ServiceNow, and notifying the kaizen team via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Kaizen Improvement Tracking: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Kaizen Improvement Tracking: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_manufacturing_channel_id
          text: 'Kaizen Improvement Tracking | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → kaizen-improvement-tracking.yml

Compiles a shift handoff report from SAP production data, ServiceNow incidents, and posts summary to Teams.

naftiko: '0.5'
info:
  label: Manufacturing Shift Handoff Report
  description: Compiles a shift handoff report from SAP production data, ServiceNow incidents, and posts summary to Teams.
  tags:
  - production
  - sap
  - servicenow
  - microsoft-teams
  - manufacturing
capability:
  exposes:
  - type: mcp
    namespace: production-ops
    port: 8080
    tools:
    - name: manufacturing-shift-handoff-report
      description: Compiles a shift handoff report from SAP production data, ServiceNow incidents, and posts summary to Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Manufacturing Shift Handoff Report: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Manufacturing Shift Handoff Report: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_production_channel_id
          text: 'Manufacturing Shift Handoff Report | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → manufacturing-shift-handoff-report.yml

Provisions badge access by syncing Workday data, creating ServiceNow request, and confirming via Teams.

naftiko: '0.5'
info:
  label: Employee Badge Access Provisioning
  description: Provisions badge access by syncing Workday data, creating ServiceNow request, and confirming via Teams.
  tags:
  - security
  - workday
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: security-ops
    port: 8080
    tools:
    - name: employee-badge-access-provisioning
      description: Provisions badge access by syncing Workday data, creating ServiceNow request, and confirming via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Employee Badge Access Provisioning: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Employee Badge Access Provisioning: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_security_channel_id
          text: 'Employee Badge Access Provisioning | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → employee-badge-access-provisioning.yml

Checks the status of a Power BI dataset refresh, and if the refresh has failed, creates a ServiceNow incident and notifies the BI team via Slack with the error details.

naftiko: '0.5'
info:
  label: Power BI Dataset Refresh Status Monitor
  description: Checks the status of a Power BI dataset refresh, and if the refresh has failed, creates a ServiceNow incident and notifies the BI team via Slack with the error details.
  tags:
  - data
  - analytics
  - power-bi
  - servicenow
  - slack
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: bi-ops
    port: 8080
    tools:
    - name: check-dataset-refresh
      description: Given a Power BI workspace ID and dataset ID, fetch the latest refresh history record; if the most recent refresh failed, open a ServiceNow incident and alert the bi-ops Slack channel with the error message.
      inputParameters:
      - name: workspace_id
        in: body
        type: string
        description: The Power BI workspace (group) ID.
      - name: dataset_id
        in: body
        type: string
        description: The Power BI dataset ID to check.
      steps:
      - name: get-refresh-status
        type: call
        call: powerbi.get-refresh-history
        with:
          workspace_id: '{{workspace_id}}'
          dataset_id: '{{dataset_id}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Power BI dataset refresh failed: {{dataset_id}}'
          description: 'Workspace: {{workspace_id}} | Dataset: {{dataset_id}} | Error: {{get-refresh-status.serviceExceptionJson}}'
          priority: '3'
          assignment_group: BI_Operations
      - name: alert-slack
        type: call
        call: slack.post-message
        with:
          channel: bi-ops
          text: 'Power BI refresh failure: dataset {{dataset_id}} in workspace {{workspace_id}}. Incident: {{create-incident.number}} | Error: {{get-refresh-status.serviceExceptionJson}}'
  consumes:
  - namespace: powerbi
    type: http
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: refresh-history
      path: /groups/{workspace_id}/datasets/{dataset_id}/refreshes
      inputParameters:
      - name: workspace_id
        in: path
      - name: dataset_id
        in: path
      operations:
      - name: get-refresh-history
        method: GET
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: incident
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: slack
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: chat
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → power-bi-dataset-refresh-status-monitor.yml

Retrieves a purchase order record and its line items from SAP S/4HANA by PO number, returning vendor, amounts, and approval status for agent-driven procurement reviews.

naftiko: '0.5'
info:
  label: SAP S/4HANA Purchase Order Lookup
  description: Retrieves a purchase order record and its line items from SAP S/4HANA by PO number, returning vendor, amounts, and approval status for agent-driven procurement reviews.
  tags:
  - finance
  - procurement
  - sap-s4hana
capability:
  exposes:
  - type: mcp
    namespace: procurement
    port: 8080
    tools:
    - name: get-purchase-order
      description: Given a SAP purchase order number, retrieve the full PO header and line items from SAP S/4HANA including vendor name, net amount, currency, and current approval status.
      inputParameters:
      - name: po_number
        in: body
        type: string
        description: The SAP purchase order number, e.g. 4500012345.
      call: sap-s4hana.get-po
      with:
        PurchaseOrder: '{{po_number}}'
      outputParameters:
      - name: vendor
        type: string
        mapping: $.d.Supplier
      - name: net_amount
        type: string
        mapping: $.d.NetPaymentAmount
      - name: status
        type: string
        mapping: $.d.ProcessingStatus
  consumes:
  - namespace: sap-s4hana
    type: http
    baseUri: https://bmw-s4.sap.com/sap/opu/odata/sap/API_PURCHASEORDER_PROCESS_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_pass
    resources:
    - name: purchase-order
      path: /A_PurchaseOrder('{PurchaseOrder}')
      inputParameters:
      - name: PurchaseOrder
        in: path
      operations:
      - name: get-po
        method: GET
Open in Framework → View in Fleet → sap-s-4hana-purchase-order-lookup.yml

Onboards a new supplier by creating a SAP vendor record, Salesforce account, ServiceNow task, and notifying procurement via Teams.

naftiko: '0.5'
info:
  label: Supplier Onboarding Orchestration
  description: Onboards a new supplier by creating a SAP vendor record, Salesforce account, ServiceNow task, and notifying procurement via Teams.
  tags:
  - procurement
  - sap
  - salesforce
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: procurement-ops
    port: 8080
    tools:
    - name: supplier-onboarding-orchestration
      description: Onboards a new supplier by creating a SAP vendor record, Salesforce account, ServiceNow task, and notifying procurement via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Supplier Onboarding Orchestration: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Supplier Onboarding Orchestration: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_procurement_channel_id
          text: 'Supplier Onboarding Orchestration | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → supplier-onboarding-orchestration.yml

Retrieves a plant maintenance work order from SAP.

naftiko: '0.5'
info:
  label: SAP Plant Maintenance Work Order Lookup
  description: Retrieves a plant maintenance work order from SAP.
  tags:
  - manufacturing
  - plant-maintenance
  - sap
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: manufacturing
    port: 8080
    tools:
    - name: sap-lookup
      description: Retrieves a plant maintenance work order from SAP.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: The identifier for the lookup.
      call: manufacturing.get-record
      with:
        id: '{{identifier}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.result
  consumes:
  - namespace: manufacturing
    type: http
    baseUri: https://bmw-s4.sap.com/api/v1
    authentication:
      type: basic
      username: $secrets.sap_s4_username
      password: $secrets.sap_s4_password
    resources:
    - name: records
      path: /records
      operations:
      - name: get-record
        method: GET
Open in Framework → View in Fleet → sap-plant-maintenance-work-order-lookup.yml

Polls MuleSoft Anypoint Platform for APIs exceeding the configured error rate threshold, creates a ServiceNow incident for each breaching API, and posts a summary digest to the integration team Slack channel.

naftiko: '0.5'
info:
  label: MuleSoft API Error Rate Monitor
  description: Polls MuleSoft Anypoint Platform for APIs exceeding the configured error rate threshold, creates a ServiceNow incident for each breaching API, and posts a summary digest to the integration team Slack channel.
  tags:
  - integration
  - api
  - mulesoft
  - servicenow
  - slack
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: integration-ops
    port: 8080
    tools:
    - name: check-api-error-rates
      description: Given a MuleSoft Anypoint environment ID and error rate threshold percentage, query the Anypoint Monitoring API for all APIs whose error rate exceeds the threshold in the past hour, open a ServiceNow incident per breaching API, and post a summary to the integration-ops Slack channel.
      inputParameters:
      - name: environment_id
        in: body
        type: string
        description: The MuleSoft Anypoint Platform environment ID to check.
      - name: error_rate_threshold
        in: body
        type: number
        description: The error rate percentage threshold above which an API is flagged, e.g. 5.0 for 5%.
      steps:
      - name: get-api-metrics
        type: call
        call: mulesoft.get-api-metrics
        with:
          environment_id: '{{environment_id}}'
          duration: 1h
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'MuleSoft API error rate breach: {{get-api-metrics.breachingApiCount}} APIs above {{error_rate_threshold}}%'
          priority: '2'
          assignment_group: Integration_Operations
      - name: alert-slack
        type: call
        call: slack.post-message
        with:
          channel: integration-ops
          text: 'MuleSoft API Alert: {{get-api-metrics.breachingApiCount}} APIs exceeding {{error_rate_threshold}}% error rate. ServiceNow: {{create-incident.number}}'
  consumes:
  - namespace: mulesoft
    type: http
    baseUri: https://anypoint.mulesoft.com/monitoring/archive/api/v1
    authentication:
      type: bearer
      token: $secrets.mulesoft_token
    resources:
    - name: api-metrics
      path: /organizations/{org_id}/environments/{environment_id}/apis/metrics
      inputParameters:
      - name: environment_id
        in: path
      - name: org_id
        in: path
      - name: duration
        in: query
      operations:
      - name: get-api-metrics
        method: GET
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_pass
    resources:
    - name: incident
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: slack
    type: http
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: chat
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → mulesoft-api-error-rate-monitor.yml

When Datadog detects an IoT anomaly, creates a ServiceNow incident, SAP PM work order, and alerts maintenance via Teams.

naftiko: '0.5'
info:
  label: Factory Floor IoT Anomaly Response
  description: When Datadog detects an IoT anomaly, creates a ServiceNow incident, SAP PM work order, and alerts maintenance via Teams.
  tags:
  - manufacturing
  - datadog
  - servicenow
  - sap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: manufacturing-ops
    port: 8080
    tools:
    - name: factory-floor-iot-anomaly-response
      description: When Datadog detects an IoT anomaly, creates a ServiceNow incident, SAP PM work order, and alerts maintenance via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Factory Floor IoT Anomaly Response: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Factory Floor IoT Anomaly Response: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_manufacturing_channel_id
          text: 'Factory Floor IoT Anomaly Response | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → factory-floor-iot-anomaly-response.yml

Checks safety training compliance from Workday against requirements, alerting managers via Teams for gaps.

naftiko: '0.5'
info:
  label: Employee Safety Training Compliance Check
  description: Checks safety training compliance from Workday against requirements, alerting managers via Teams for gaps.
  tags:
  - safety
  - workday
  - sap
  - microsoft-teams
  - training
capability:
  exposes:
  - type: mcp
    namespace: safety-ops
    port: 8080
    tools:
    - name: employee-safety-training-compliance-check
      description: Checks safety training compliance from Workday against requirements, alerting managers via Teams for gaps.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Employee Safety Training Compliance Check: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Employee Safety Training Compliance Check: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_safety_channel_id
          text: 'Employee Safety Training Compliance Check | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → employee-safety-training-compliance-check.yml

When milestone completes in Jira, creates SAP billing document, updates Salesforce, and notifies finance via Teams.

naftiko: '0.5'
info:
  label: Contract Milestone Billing Trigger
  description: When milestone completes in Jira, creates SAP billing document, updates Salesforce, and notifies finance via Teams.
  tags:
  - finance
  - jira
  - sap
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finance-ops
    port: 8080
    tools:
    - name: contract-milestone-billing-trigger
      description: When milestone completes in Jira, creates SAP billing document, updates Salesforce, and notifies finance via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Contract Milestone Billing Trigger: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Contract Milestone Billing Trigger: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_finance_channel_id
          text: 'Contract Milestone Billing Trigger | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → contract-milestone-billing-trigger.yml

When a critical vulnerability is found, creates a Jira ticket, updates ServiceNow CMDB, and alerts security via Teams.

naftiko: '0.5'
info:
  label: IT Security Vulnerability Remediation
  description: When a critical vulnerability is found, creates a Jira ticket, updates ServiceNow CMDB, and alerts security via Teams.
  tags:
  - security
  - github
  - jira
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: security-ops
    port: 8080
    tools:
    - name: it-security-vulnerability-remediation
      description: When a critical vulnerability is found, creates a Jira ticket, updates ServiceNow CMDB, and alerts security via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'IT Security Vulnerability Remediation: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'IT Security Vulnerability Remediation: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_security_channel_id
          text: 'IT Security Vulnerability Remediation | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → it-security-vulnerability-remediation.yml

Monitors takt time via Datadog, logs deviations in SAP, and alerts production supervisor via Teams.

naftiko: '0.5'
info:
  label: Production Line Takt Time Monitoring
  description: Monitors takt time via Datadog, logs deviations in SAP, and alerts production supervisor via Teams.
  tags:
  - production
  - datadog
  - sap
  - microsoft-teams
  - manufacturing
capability:
  exposes:
  - type: mcp
    namespace: production-ops
    port: 8080
    tools:
    - name: production-line-takt-time-monitoring
      description: Monitors takt time via Datadog, logs deviations in SAP, and alerts production supervisor via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Production Line Takt Time Monitoring: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Production Line Takt Time Monitoring: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_production_channel_id
          text: 'Production Line Takt Time Monitoring | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → production-line-takt-time-monitoring.yml

Runs tests via Azure DevOps, publishes to Confluence, and notifies QA via Teams.

naftiko: '0.5'
info:
  label: Automated Regression Test Report
  description: Runs tests via Azure DevOps, publishes to Confluence, and notifies QA via Teams.
  tags:
  - devops
  - azure-devops
  - confluence
  - microsoft-teams
  - testing
capability:
  exposes:
  - type: mcp
    namespace: devops-ops
    port: 8080
    tools:
    - name: automated-regression-test-report
      description: Runs tests via Azure DevOps, publishes to Confluence, and notifies QA via Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Automated Regression Test Report: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Automated Regression Test Report: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_devops_channel_id
          text: 'Automated Regression Test Report | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → automated-regression-test-report.yml

Assesses launch readiness from SAP quality, Jira issues, and publishes report to Confluence and Teams.

naftiko: '0.5'
info:
  label: Vehicle Launch Readiness Review
  description: Assesses launch readiness from SAP quality, Jira issues, and publishes report to Confluence and Teams.
  tags:
  - engineering
  - sap
  - jira
  - confluence
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: engineering-ops
    port: 8080
    tools:
    - name: vehicle-launch-readiness-review
      description: Assesses launch readiness from SAP quality, Jira issues, and publishes report to Confluence and Teams.
      inputParameters:
      - name: reference_id
        in: body
        type: string
        description: The reference identifier for this request.
      - name: description
        in: body
        type: string
        description: Detailed description of the request.
      - name: priority
        in: body
        type: string
        description: 'Priority level: high, medium, or low.'
      steps:
      - name: create-primary-record
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Vehicle Launch Readiness Review: {{reference_id}}'
          urgency: '2'
          description: '{{description}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: OPS
          issuetype: Task
          summary: 'Vehicle Launch Readiness Review: {{reference_id}}'
          description: 'Incident: {{create-primary-record.number}} | {{description}}'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_engineering_channel_id
          text: 'Vehicle Launch Readiness Review | Ref: {{reference_id}} | INC: {{create-primary-record.number}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://bmw.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_username
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: jira
    type: http
    baseUri: https://bmw.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vehicle-launch-readiness-review.yml

Checks current inventory stock levels for a material at a plant in SAP S/4HANA.

naftiko: '0.5'
info:
  label: SAP Inventory Stock Level Check
  description: Checks current inventory stock levels for a material at a plant in SAP S/4HANA.
  tags:
  - supply-chain
  - sap
  - sap-s4hana
  - inventory
capability:
  exposes:
  - type: mcp
    namespace: supply-chain
    port: 8080
    tools:
    - name: sap-check
      description: Checks current inventory stock levels for a material at a plant in SAP S/4HANA.
      inputParameters:
      - name: identifier
        in: body
        type: string
        description: The identifier for the lookup.
      call: supply-chain.get-record
      with:
        id: '{{identifier}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.result
  consumes:
  - namespace: supply-chain
    type: http
    baseUri: https://bmw-s4.sap.com/api/v1
    authentication:
      type: basic
      username: $secrets.sap_s4_username
      password: $secrets.sap_s4_password
    resources:
    - name: records
      path: /records
      operations:
      - name: get-record
        method: GET
Open in Framework → View in Fleet → sap-inventory-stock-level-check.yml

Queries SAP Concur for expense reports pending approval beyond the policy threshold, and sends Teams reminders to the overdue approvers.

naftiko: '0.5'
info:
  label: SAP Concur Expense Approval Reminder
  description: Queries SAP Concur for expense reports pending approval beyond the policy threshold, and sends Teams reminders to the overdue approvers.
  tags:
  - finance
  - expense-management
  - sap-concur
  - msteams
  - approval
capability:
  exposes:
  - type: mcp
    namespace: expense-ops
    port: 8080
    tools:
    - name: remind-expense-approvers
      description: Query SAP Concur for expense reports with pending approval status, identify those overdue past the threshold, and send Teams reminders to each approver. Use daily as part of Ford AP operations.
      inputParameters:
      - name: pending_days_threshold
        in: body
        type: integer
        description: Number of business days a report can be pending before triggering a reminder (e.g., 5).
      steps:
      - name: get-pending-reports
        type: call
        call: concur.get-pending-reports
        with:
          approval_status: A_PEND
      - name: send-reminders
        type: call
        call: msteams.send-message
        with:
          channel: finance-approvals
          text: 'Expense approval reminder: {{get-pending-reports.report_count}} reports pending over {{pending_days_threshold}} days. Approvers: {{get-pending-reports.approver_list}}'
  consumes:
  - type: http
    namespace: concur
    baseUri: https://www.concursolutions.com/api/v3.0
    authentication:
      type: bearer
      token: $secrets.concur_token
    resources:
    - name: expense-reports
      path: /expense/reports
      inputParameters:
      - name: approval_status
        in: query
      operations:
      - name: get-pending-reports
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msteams_token
    resources:
    - name: channel-messages
      path: /teams/finance/channels/approvals/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → sap-concur-expense-approval-reminder.yml

Compiles a fleet performance report by pulling telemetry data, aggregating in Snowflake, and publishing to Tableau.

naftiko: '0.5'
info:
  label: Truck Fleet Performance Report
  description: Compiles a fleet performance report by pulling telemetry data, aggregating in Snowflake, and publishing to Tableau.
  tags:
  - automotive
  - snowflake
  - tableau
  - analytics
  - connected-vehicle
  - fleet
capability:
  exposes:
  - type: mcp
    namespace: fleet-ops
    port: 8080
    tools:
    - name: generate-fleet-report
      description: Given a fleet ID and reporting period, aggregate telemetry data in Snowflake and refresh the Tableau fleet dashboard.
      inputParameters:
      - name: fleet_id
        in: body
        type: string
        description: Fleet identifier.
      - name: reporting_period
        in: body
        type: string
        description: Reporting period.
      steps:
      - name: aggregate-data
        type: call
        call: snowflake.execute-query
        with:
          warehouse: FLEET_WH
          query: CALL sp_fleet_report('{{fleet_id}}', '{{reporting_period}}');
      - name: refresh-dashboard
        type: call
        call: tableau.refresh-workbook
        with:
          workbook_id: $secrets.tableau_fleet_workbook_id
      - name: notify-fleet-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_fleet_channel_id
          text: 'FLEET REPORT: {{fleet_id}} | {{reporting_period}} | Dashboard refreshed'
  consumes:
  - namespace: snowflake
    type: http
    baseUri: https://ford.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: queries
      path: /statements
      operations:
      - name: execute-query
        method: POST
  - namespace: tableau
    type: http
    baseUri: https://tableau.ford.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_access_token
    resources:
    - name: workbooks
      path: /sites/ford/workbooks/{{workbook_id}}/refresh
      inputParameters:
      - name: workbook_id
        in: path
      operations:
      - name: refresh-workbook
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → truck-fleet-performance-report.yml

Monitors Azure subscription spend for connected vehicle and IT workloads, records anomalies to Snowflake, and raises ServiceNow incidents when daily thresholds are exceeded.

naftiko: '0.5'
info:
  label: Azure Cloud Cost Anomaly Detection
  description: Monitors Azure subscription spend for connected vehicle and IT workloads, records anomalies to Snowflake, and raises ServiceNow incidents when daily thresholds are exceeded.
  tags:
  - cloud
  - finops
  - azure
  - snowflake
  - servicenow
  - cost-management
capability:
  exposes:
  - type: mcp
    namespace: cloud-finops
    port: 8080
    tools:
    - name: detect-cost-anomaly
      description: Given an Azure subscription ID and daily budget threshold, query current daily spend, log to Snowflake, and raise a ServiceNow incident if the threshold is breached. Use daily for FinOps monitoring across Ford Azure subscriptions.
      inputParameters:
      - name: subscription_id
        in: body
        type: string
        description: Azure subscription ID to monitor.
      - name: threshold_usd
        in: body
        type: number
        description: Daily spend threshold in USD.
      steps:
      - name: get-daily-cost
        type: call
        call: azure.query-cost
        with:
          subscription_id: '{{subscription_id}}'
      - name: log-cost
        type: call
        call: snowflake.insert-cost-record
        with:
          subscription_id: '{{subscription_id}}'
          daily_cost: '{{get-daily-cost.total_cost}}'
      - name: raise-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Azure cost anomaly: ${{get-daily-cost.total_cost}} on {{subscription_id}}'
          urgency: '2'
          category: cloud_cost
  consumes:
  - type: http
    namespace: azure
    baseUri: https://management.azure.com
    authentication:
      type: bearer
      token: $secrets.azure_token
    resources:
    - name: cost-query
      path: /subscriptions/{{subscription_id}}/providers/Microsoft.CostManagement/query
      inputParameters:
      - name: subscription_id
        in: path
      operations:
      - name: query-cost
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://ford.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: cost-records
      path: /statements
      operations:
      - name: insert-cost-record
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://ford.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → azure-cloud-cost-anomaly-detection.yml

When an EV charging station reports a fault via Datadog, creates a ServiceNow incident, schedules a SAP PM work order, and alerts the facilities team via Teams.

naftiko: '0.5'
info:
  label: EV Charging Station Maintenance Workflow
  description: When an EV charging station reports a fault via Datadog, creates a ServiceNow incident, schedules a SAP PM work order, and alerts the facilities team via Teams.
  tags:
  - ev
  - datadog
  - servicenow
  - sap
  - microsoft-teams
  - maintenance
capability:
  exposes:
  - type: mcp
    namespace: facilities-ops
    port: 8080
    tools:
    - name: handle-charger-fault
      description: Given a charger station ID and fault code, create a ServiceNow incident, a SAP PM work order, and alert facilities via Teams.
      inputParameters:
      - name: station_id
        in: body
        type: string
        description: EV charging station identifier.
      - name: fault_code
        in: body
        type: string
        description: Fault code reported.
      steps:
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'EV Charger Fault: {{station_id}} - {{fault_code}}'
          urgency: '2'
      - name: create-work-order
        type: call
        call: sap-pm.create-work-order
        with:
          equipment: '{{station_id}}'
          description: 'Fault: {{fault_code}}'
      - name: alert-facilities
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_facilities_channel_id
          text: 'EV CHARGER FAULT: {{station_id}} | Code: {{fault_code}} | INC: {{create-incident.number}} | WO: {{create-work-order.MaintenanceOrder}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://ford.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: sap-pm
    type: http
    baseUri: https://ford-s4.sap.com/sap/opu/odata/sap/API_MAINTORDER_SRV
    authentication:
      type: basic
      username: $secrets.sap_s4_username
      password: $secrets.sap_s4_password
    resources:
    - name: work-orders
      path: /MaintenanceOrder
      operations:
      - name: create-work-order
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → ev-charging-station-maintenance-workflow.yml

Manages paint shop color changeovers by updating SAP production schedule, notifying the paint shop team via Teams, and logging the changeover in ServiceNow.

naftiko: '0.5'
info:
  label: Paint Shop Color Changeover Workflow
  description: Manages paint shop color changeovers by updating SAP production schedule, notifying the paint shop team via Teams, and logging the changeover in ServiceNow.
  tags:
  - manufacturing
  - sap
  - microsoft-teams
  - servicenow
  - automotive
  - production
capability:
  exposes:
  - type: mcp
    namespace: manufacturing-ops
    port: 8080
    tools:
    - name: manage-color-changeover
      description: Given a paint line, current color, and next color, update SAP schedule, log in ServiceNow, and notify the paint team via Teams.
      inputParameters:
      - name: paint_line_id
        in: body
        type: string
        description: Paint line identifier.
      - name: next_color
        in: body
        type: string
        description: Next color code.
      steps:
      - name: update-sap-schedule
        type: call
        call: sap-s4.update-production-schedule
        with:
          line: '{{paint_line_id}}'
          color: '{{next_color}}'
      - name: log-changeover
        type: call
        call: servicenow.create-record
        with:
          table: u_color_changeover_log
          line: '{{paint_line_id}}'
          color: '{{next_color}}'
      - name: notify-paint-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_paint_shop_channel_id
          text: 'COLOR CHANGEOVER: {{paint_line_id}} | Next: {{next_color}} | SNOW: {{log-changeover.sys_id}}'
  consumes:
  - namespace: sap-s4
    type: http
    baseUri: https://ford-s4.sap.com/sap/opu/odata/sap/API_PRODUCTION_ORDER_2_SRV
    authentication:
      type: basic
      username: $secrets.sap_s4_username
      password: $secrets.sap_s4_password
    resources:
    - name: schedule
      path: /A_ProductionOrder_2
      operations:
      - name: update-production-schedule
        method: PATCH
  - namespace: servicenow
    type: http
    baseUri: https://ford.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: records
      path: /table/{{table}}
      inputParameters:
      - name: table
        in: path
      operations:
      - name: create-record
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → paint-shop-color-changeover-workflow.yml

Exports active Ford employee headcount by department and cost center from Workday, writes a snapshot to Snowflake, and triggers a Power BI workforce planning dashboard refresh.

naftiko: '0.5'
info:
  label: Workday Payroll Headcount Snapshot
  description: Exports active Ford employee headcount by department and cost center from Workday, writes a snapshot to Snowflake, and triggers a Power BI workforce planning dashboard refresh.
  tags:
  - hr
  - finance
  - workday
  - snowflake
  - power-bi
  - headcount
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: hr-analytics
    port: 8080
    tools:
    - name: snapshot-headcount
      description: Fetch active headcount by department and cost center from Workday, write a dated snapshot to Snowflake, and trigger a Power BI workforce dashboard refresh. Use monthly for headcount and labor cost planning.
      inputParameters:
      - name: snapshot_date
        in: body
        type: string
        description: Snapshot date in ISO 8601 format (YYYY-MM-DD).
      steps:
      - name: export-workers
        type: call
        call: workday.export-workers
        with:
          status: active
      - name: write-snapshot
        type: call
        call: snowflake.insert-headcount-snapshot
        with:
          snapshot_date: '{{snapshot_date}}'
          records: '{{export-workers.rows}}'
      - name: refresh-report
        type: call
        call: powerbi.trigger-refresh
        with:
          dataset_id: $secrets.powerbi_workforce_dataset_id
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers-export
      path: /workers
      inputParameters:
      - name: status
        in: query
      operations:
      - name: export-workers
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://ford.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: headcount-table
      path: /statements
      operations:
      - name: insert-headcount-snapshot
        method: POST
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: dataset-refreshes
      path: /datasets/{{dataset_id}}/refreshes
      inputParameters:
      - name: dataset_id
        in: path
      operations:
      - name: trigger-refresh
        method: POST
Open in Framework → View in Fleet → workday-payroll-headcount-snapshot.yml

Scans Ford GitHub organization repositories for critical Dependabot alerts, creates Jira security issues for each finding, and notifies the cybersecurity team via Teams.

naftiko: '0.5'
info:
  label: GitHub Dependabot Security Alert Triage
  description: Scans Ford GitHub organization repositories for critical Dependabot alerts, creates Jira security issues for each finding, and notifies the cybersecurity team via Teams.
  tags:
  - security
  - devops
  - github
  - jira
  - msteams
  - vulnerability-management
capability:
  exposes:
  - type: mcp
    namespace: security-hygiene
    port: 8080
    tools:
    - name: triage-dependabot-alerts
      description: Given a GitHub org and severity level, list open Dependabot vulnerability alerts, create a Jira security tracking issue, and notify the cybersecurity Teams channel.
      inputParameters:
      - name: github_org
        in: body
        type: string
        description: GitHub organization name (e.g., ford-motor-company).
      - name: severity
        in: body
        type: string
        description: 'Minimum severity: critical, high, medium, or low.'
      steps:
      - name: list-alerts
        type: call
        call: github.list-dependabot-alerts
        with:
          org: '{{github_org}}'
          severity: '{{severity}}'
      - name: create-jira-issue
        type: call
        call: jira.create-issue
        with:
          project_key: CYBER
          issuetype: Security Vulnerability
          summary: 'Dependabot {{severity}} alerts in {{github_org}}: {{list-alerts.alert_count}} findings'
          description: 'Repos: {{list-alerts.repo_names}}. Packages: {{list-alerts.package_names}}'
      - name: notify-security
        type: call
        call: msteams.send-message
        with:
          channel: cybersecurity
          text: 'Dependabot: {{list-alerts.alert_count}} {{severity}} alerts | {{github_org}} | Jira: {{create-jira-issue.key}}'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: dependabot-alerts
      path: /orgs/{{org}}/dependabot/alerts
      inputParameters:
      - name: org
        in: path
      - name: severity
        in: query
      operations:
      - name: list-dependabot-alerts
        method: GET
  - type: http
    namespace: jira
    baseUri: https://ford.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msteams_token
    resources:
    - name: channel-messages
      path: /teams/security/channels/cybersecurity/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → github-dependabot-security-alert-triage.yml

Checks SAP MRP for auto parts and components below reorder point at a given assembly plant, creates purchase requisitions, and notifies the procurement team via Teams.

naftiko: '0.5'
info:
  label: SAP Parts Inventory Reorder Alert
  description: Checks SAP MRP for auto parts and components below reorder point at a given assembly plant, creates purchase requisitions, and notifies the procurement team via Teams.
  tags:
  - supply-chain
  - procurement
  - sap
  - msteams
  - inventory
  - automotive
capability:
  exposes:
  - type: mcp
    namespace: parts-replenishment
    port: 8080
    tools:
    - name: trigger-parts-reorder
      description: Given a SAP plant code, scan for components below reorder point, create purchase requisitions for each, and notify the procurement channel in Teams. Use daily to maintain just-in-time parts availability.
      inputParameters:
      - name: plant_code
        in: body
        type: string
        description: SAP plant code for the assembly plant (e.g., 3001).
      steps:
      - name: get-low-stock
        type: call
        call: sap.list-below-reorder-point
        with:
          plant: '{{plant_code}}'
      - name: create-pr
        type: call
        call: sap-pr.create-purchase-requisition
        with:
          plant: '{{plant_code}}'
          materials: '{{get-low-stock.material_list}}'
      - name: notify-procurement
        type: call
        call: msteams.send-message
        with:
          channel: procurement
          text: 'Parts reorder at plant {{plant_code}}: {{get-low-stock.count}} items below minimum. PRs created: {{create-pr.requisition_numbers}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ford-s4.sap.com/sap/opu/odata/sap/API_MRP_MATERIALS_SRV_01
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: mrp-materials
      path: /A_MRPMaterial
      inputParameters:
      - name: plant
        in: query
      operations:
      - name: list-below-reorder-point
        method: GET
  - type: http
    namespace: sap-pr
    baseUri: https://ford-s4.sap.com/sap/opu/odata/sap/MM_PUR_REQ_MAINT_V2_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: purchase-requisitions
      path: /A_PurchaseRequisitionHeader
      operations:
      - name: create-purchase-requisition
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msteams_token
    resources:
    - name: channel-messages
      path: /teams/procurement/channels/general/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → sap-parts-inventory-reorder-alert.yml

Exports open and committed Salesforce fleet and dealer opportunities for the current fiscal quarter, writes forecast data to Snowflake, and triggers a Power BI revenue forecast dashboard refresh.

naftiko: '0.5'
info:
  label: Salesforce Quarterly Sales Forecast Sync
  description: Exports open and committed Salesforce fleet and dealer opportunities for the current fiscal quarter, writes forecast data to Snowflake, and triggers a Power BI revenue forecast dashboard refresh.
  tags:
  - sales
  - finance
  - forecasting
  - salesforce
  - snowflake
  - power-bi
capability:
  exposes:
  - type: mcp
    namespace: sales-forecast
    port: 8080
    tools:
    - name: sync-quarterly-forecast
      description: Given a fiscal quarter label, export dealer and fleet pipeline opportunities from Salesforce, write to Snowflake, and trigger a Power BI forecast refresh for quarterly business reviews.
      inputParameters:
      - name: fiscal_quarter
        in: body
        type: string
        description: Salesforce fiscal quarter label (e.g., Q2-2026).
      steps:
      - name: export-opportunities
        type: call
        call: salesforce.query-opportunities
        with:
          fiscal_quarter: '{{fiscal_quarter}}'
      - name: write-forecast
        type: call
        call: snowflake.insert-forecast-rows
        with:
          fiscal_quarter: '{{fiscal_quarter}}'
          records: '{{export-opportunities.records}}'
      - name: refresh-powerbi
        type: call
        call: powerbi.trigger-refresh
        with:
          dataset_id: $secrets.powerbi_forecast_dataset_id
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://ford.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunities
      path: /query
      inputParameters:
      - name: fiscal_quarter
        in: query
      operations:
      - name: query-opportunities
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://ford.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: forecast-table
      path: /statements
      operations:
      - name: insert-forecast-rows
        method: POST
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: dataset-refreshes
      path: /datasets/{{dataset_id}}/refreshes
      inputParameters:
      - name: dataset_id
        in: path
      operations:
      - name: trigger-refresh
        method: POST
Open in Framework → View in Fleet → salesforce-quarterly-sales-forecast-sync.yml

Tracks a vehicle order from placement to delivery by syncing Salesforce order, SAP production status, and posting updates to the dealer Teams channel.

naftiko: '0.5'
info:
  label: Vehicle Order to Delivery Tracking
  description: Tracks a vehicle order from placement to delivery by syncing Salesforce order, SAP production status, and posting updates to the dealer Teams channel.
  tags:
  - sales
  - salesforce
  - sap
  - microsoft-teams
  - automotive
  - production
capability:
  exposes:
  - type: mcp
    namespace: sales-ops
    port: 8080
    tools:
    - name: track-vehicle-order
      description: Given an order number, sync SAP production status to Salesforce and notify the dealer channel via Teams.
      inputParameters:
      - name: order_number
        in: body
        type: string
        description: Vehicle order number.
      - name: dealer_code
        in: body
        type: string
        description: Dealer code.
      steps:
      - name: get-production-status
        type: call
        call: sap-s4.get-prod-order
        with:
          ManufacturingOrder: '{{order_number}}'
      - name: update-salesforce
        type: call
        call: salesforce.update-order
        with:
          order_number: '{{order_number}}'
          status: '{{get-production-status.ManufacturingOrderStatus}}'
      - name: notify-dealer
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_dealer_channel_id
          text: 'ORDER UPDATE: {{order_number}} | Dealer: {{dealer_code}} | Status: {{get-production-status.ManufacturingOrderStatus}}'
  consumes:
  - namespace: sap-s4
    type: http
    baseUri: https://ford-s4.sap.com/sap/opu/odata/sap/API_PRODUCTION_ORDER_2_SRV
    authentication:
      type: basic
      username: $secrets.sap_s4_username
      password: $secrets.sap_s4_password
    resources:
    - name: production-orders
      path: /A_ProductionOrder_2('{ManufacturingOrder}')
      inputParameters:
      - name: ManufacturingOrder
        in: path
      operations:
      - name: get-prod-order
        method: GET
  - namespace: salesforce
    type: http
    baseUri: https://ford.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: orders
      path: /sobjects/Vehicle_Order__c
      operations:
      - name: update-order
        method: PATCH
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vehicle-order-to-delivery-tracking.yml

Validates final assembly quality gate criteria by pulling inspection results from SAP QM, checking Jira acceptance criteria, and posting gate status to Teams.

naftiko: '0.5'
info:
  label: Final Assembly Quality Gate Check
  description: Validates final assembly quality gate criteria by pulling inspection results from SAP QM, checking Jira acceptance criteria, and posting gate status to Teams.
  tags:
  - quality
  - manufacturing
  - sap
  - jira
  - microsoft-teams
  - production
capability:
  exposes:
  - type: mcp
    namespace: quality-ops
    port: 8080
    tools:
    - name: check-quality-gate
      description: Given a production order and quality gate ID, pull inspection results from SAP QM, verify against Jira criteria, and post status to Teams.
      inputParameters:
      - name: production_order
        in: body
        type: string
        description: SAP production order number.
      - name: quality_gate_id
        in: body
        type: string
        description: Quality gate identifier.
      steps:
      - name: get-inspection-results
        type: call
        call: sap-qm.get-results
        with:
          production_order: '{{production_order}}'
      - name: check-acceptance
        type: call
        call: jira.get-issue
        with:
          issue_key: '{{quality_gate_id}}'
      - name: post-gate-status
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_quality_channel_id
          text: 'QUALITY GATE: {{quality_gate_id}} | Order: {{production_order}} | Result: {{get-inspection-results.disposition}}'
  consumes:
  - namespace: sap-qm
    type: http
    baseUri: https://ford-s4.sap.com/sap/opu/odata/sap/API_INSPECTIONLOT_SRV
    authentication:
      type: basic
      username: $secrets.sap_s4_username
      password: $secrets.sap_s4_password
    resources:
    - name: inspection-results
      path: /A_InspectionLot
      operations:
      - name: get-results
        method: GET
  - namespace: jira
    type: http
    baseUri: https://ford.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → final-assembly-quality-gate-check.yml

Tracks tier-1 supplier deliveries by pulling ASN data from SAP, comparing against production schedule, and alerting the materials team via Teams for late deliveries.

naftiko: '0.5'
info:
  label: Tier-1 Supplier Delivery Tracking
  description: Tracks tier-1 supplier deliveries by pulling ASN data from SAP, comparing against production schedule, and alerting the materials team via Teams for late deliveries.
  tags:
  - supply-chain
  - sap
  - microsoft-teams
  - procurement
  - automotive
  - logistics
capability:
  exposes:
  - type: mcp
    namespace: supply-chain-ops
    port: 8080
    tools:
    - name: track-supplier-delivery
      description: Given a supplier ID and plant code, pull ASN data from SAP, compare against schedule, and alert the materials team via Teams for late deliveries.
      inputParameters:
      - name: supplier_id
        in: body
        type: string
        description: Supplier identifier.
      - name: plant_code
        in: body
        type: string
        description: Plant code.
      steps:
      - name: get-asn-data
        type: call
        call: sap-s4.get-inbound-deliveries
        with:
          Supplier: '{{supplier_id}}'
          Plant: '{{plant_code}}'
      - name: check-schedule
        type: call
        call: sap-s4.get-production-schedule
        with:
          Plant: '{{plant_code}}'
      - name: alert-materials
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_materials_channel_id
          text: 'DELIVERY TRACKING: Supplier {{supplier_id}} | Plant: {{plant_code}} | Pending: {{get-asn-data.pending_count}}'
  consumes:
  - namespace: sap-s4
    type: http
    baseUri: https://ford-s4.sap.com/sap/opu/odata/sap/API_INBOUND_DELIVERY_SRV
    authentication:
      type: basic
      username: $secrets.sap_s4_username
      password: $secrets.sap_s4_password
    resources:
    - name: deliveries
      path: /A_InboundDelivery
      operations:
      - name: get-inbound-deliveries
        method: GET
    - name: schedule
      path: /A_ProductionSchedule
      operations:
      - name: get-production-schedule
        method: GET
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → tier-1-supplier-delivery-tracking.yml

Fetches HubSpot email campaign performance metrics for EV product campaigns, writes metrics to Snowflake, and triggers a Power BI marketing dashboard refresh.

naftiko: '0.5'
info:
  label: HubSpot EV Campaign Performance Report
  description: Fetches HubSpot email campaign performance metrics for EV product campaigns, writes metrics to Snowflake, and triggers a Power BI marketing dashboard refresh.
  tags:
  - marketing
  - reporting
  - hubspot
  - snowflake
  - power-bi
  - automotive
capability:
  exposes:
  - type: mcp
    namespace: ev-marketing
    port: 8080
    tools:
    - name: report-ev-campaign-performance
      description: Given a HubSpot campaign ID for an EV product campaign, fetch email open and click rates, write metrics to Snowflake, and trigger a Power BI marketing dashboard refresh.
      inputParameters:
      - name: hubspot_campaign_id
        in: body
        type: string
        description: HubSpot email campaign ID to report on.
      steps:
      - name: get-campaign-stats
        type: call
        call: hubspot.get-campaign-stats
        with:
          campaign_id: '{{hubspot_campaign_id}}'
      - name: write-metrics
        type: call
        call: snowflake.insert-campaign-row
        with:
          campaign_id: '{{hubspot_campaign_id}}'
          open_rate: '{{get-campaign-stats.open_rate}}'
          click_rate: '{{get-campaign-stats.click_rate}}'
          unsubscribe_rate: '{{get-campaign-stats.unsubscribe_rate}}'
      - name: refresh-dashboard
        type: call
        call: powerbi.trigger-refresh
        with:
          dataset_id: $secrets.powerbi_marketing_dataset_id
  consumes:
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com/marketing/v3
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: campaign-stats
      path: /emails/statistics/list
      inputParameters:
      - name: campaign_id
        in: query
      operations:
      - name: get-campaign-stats
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://ford.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: campaign-metrics
      path: /statements
      operations:
      - name: insert-campaign-row
        method: POST
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: dataset-refreshes
      path: /datasets/{{dataset_id}}/refreshes
      inputParameters:
      - name: dataset_id
        in: path
      operations:
      - name: trigger-refresh
        method: POST
Open in Framework → View in Fleet → hubspot-ev-campaign-performance-report.yml

Provisions a new vehicle program workspace by creating a Jira project, a Confluence space, and a Microsoft Teams channel.

naftiko: '0.5'
info:
  label: New Vehicle Program Workspace Setup
  description: Provisions a new vehicle program workspace by creating a Jira project, a Confluence space, and a Microsoft Teams channel.
  tags:
  - engineering
  - jira
  - confluence
  - microsoft-teams
  - automotive
  - project-management
capability:
  exposes:
  - type: mcp
    namespace: engineering-ops
    port: 8080
    tools:
    - name: setup-program-workspace
      description: Given a vehicle program name and program lead, create a Jira project, a Confluence space, and a Teams channel.
      inputParameters:
      - name: program_name
        in: body
        type: string
        description: Vehicle program name, e.g. 'Next-Gen Explorer'.
      - name: program_lead
        in: body
        type: string
        description: Email of the program lead.
      steps:
      - name: create-jira-project
        type: call
        call: jira.create-project
        with:
          name: '{{program_name}}'
          key: '{{program_name}}'
          lead: '{{program_lead}}'
      - name: create-confluence-space
        type: call
        call: confluence.create-space
        with:
          key: '{{program_name}}'
          name: '{{program_name}} Program'
      - name: notify-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_engineering_channel_id
          text: 'NEW PROGRAM: {{program_name}} | Jira: {{create-jira-project.key}} | Confluence: {{create-confluence-space.key}}'
  consumes:
  - namespace: jira
    type: http
    baseUri: https://ford.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: projects
      path: /project
      operations:
      - name: create-project
        method: POST
  - namespace: confluence
    type: http
    baseUri: https://ford.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: spaces
      path: /space
      operations:
      - name: create-space
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → new-vehicle-program-workspace-setup.yml

Uses Anthropic Claude to summarize incoming technical service bulletins, extracts affected models and required actions, and stores summaries in Salesforce for dealer communications.

naftiko: '0.5'
info:
  label: AI-Assisted Vehicle Service Bulletin Summarization
  description: Uses Anthropic Claude to summarize incoming technical service bulletins, extracts affected models and required actions, and stores summaries in Salesforce for dealer communications.
  tags:
  - ai
  - automotive
  - anthropic
  - salesforce
  - msteams
  - content
capability:
  exposes:
  - type: mcp
    namespace: tsb-ai
    port: 8080
    tools:
    - name: summarize-service-bulletin
      description: Given a technical service bulletin (TSB) text and a Salesforce knowledge article ID, call Anthropic Claude to extract affected models, symptoms, and corrective procedures, then update the Salesforce article.
      inputParameters:
      - name: tsb_text
        in: body
        type: string
        description: Full text of the technical service bulletin.
      - name: salesforce_article_id
        in: body
        type: string
        description: Salesforce knowledge article ID to update with the summary.
      steps:
      - name: generate-summary
        type: call
        call: anthropic.create-message
        with:
          model: claude-opus-4-5
          max_tokens: '600'
          system: 'You are a Ford automotive technical writer. Summarize the following technical service bulletin, extracting: 1) Affected models and model years, 2) Symptom description, 3) Corrective procedure summary, 4) Required parts.'
          user_content: '{{tsb_text}}'
      - name: update-article
        type: call
        call: salesforce.update-knowledge-article
        with:
          article_id: '{{salesforce_article_id}}'
          TSB_Summary__c: '{{generate-summary.content}}'
  consumes:
  - type: http
    namespace: anthropic
    baseUri: https://api.anthropic.com/v1
    authentication:
      type: apikey
      key: x-api-key
      value: $secrets.anthropic_api_key
      placement: header
    resources:
    - name: messages
      path: /messages
      operations:
      - name: create-message
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://ford.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: knowledge-articles
      path: /sobjects/Knowledge__kav/{{article_id}}
      inputParameters:
      - name: article_id
        in: path
      operations:
      - name: update-knowledge-article
        method: PATCH
Open in Framework → View in Fleet → ai-assisted-vehicle-service-bulletin-summarization.yml

When a quality control system flags a vehicle assembly defect, creates a SAP PM corrective maintenance work order, assigns the quality engineer from Workday, and alerts the plant operations team via Teams.

naftiko: '0.5'
info:
  label: Vehicle Quality Defect Work Order
  description: When a quality control system flags a vehicle assembly defect, creates a SAP PM corrective maintenance work order, assigns the quality engineer from Workday, and alerts the plant operations team via Teams.
  tags:
  - manufacturing
  - quality
  - sap
  - workday
  - msteams
  - automotive
capability:
  exposes:
  - type: mcp
    namespace: quality-ops
    port: 8080
    tools:
    - name: create-defect-work-order
      description: Given a vehicle identification number (VIN), defect code, and assembly line location, create a SAP PM work order, look up the responsible quality engineer in Workday, and notify the plant-operations Teams channel.
      inputParameters:
      - name: vin
        in: body
        type: string
        description: 17-character Vehicle Identification Number (VIN) of the affected vehicle.
      - name: defect_code
        in: body
        type: string
        description: Quality defect code from the inspection system (e.g., BODY-WELD-003).
      - name: assembly_line
        in: body
        type: string
        description: Assembly line location code (e.g., DEARBORN-LINE-4).
      - name: priority
        in: body
        type: string
        description: 'Work order priority: VH (very high), HI (high), ME (medium), LO (low).'
      steps:
      - name: get-quality-engineer
        type: call
        call: workday.get-engineer-by-line
        with:
          assembly_line: '{{assembly_line}}'
      - name: create-work-order
        type: call
        call: sap.create-pm-work-order
        with:
          functional_location: '{{assembly_line}}'
          short_text: Defect {{defect_code}} on VIN {{vin}}
          priority: '{{priority}}'
          person_responsible: '{{get-quality-engineer.personnel_number}}'
      - name: notify-plant
        type: call
        call: msteams.send-message
        with:
          channel: plant-operations
          text: 'Quality defect WO {{create-work-order.order_number}} | VIN: {{vin}} | Defect: {{defect_code}} | Line: {{assembly_line}} | Engineer: {{get-quality-engineer.full_name}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /workers
      inputParameters:
      - name: assembly_line
        in: query
      operations:
      - name: get-engineer-by-line
        method: GET
  - type: http
    namespace: sap
    baseUri: https://ford-s4.sap.com/sap/opu/odata/sap/PM_ORDER_CREATE_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: pm-work-orders
      path: /A_MaintenanceOrder
      operations:
      - name: create-pm-work-order
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msteams_token
    resources:
    - name: channel-messages
      path: /teams/manufacturing/channels/plant-ops/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → vehicle-quality-defect-work-order.yml

At month-end, checks SAP for open financial posting documents, creates a ServiceNow change request for the period close checklist, and notifies the controller team via Teams.

naftiko: '0.5'
info:
  label: SAP Period Close Verification
  description: At month-end, checks SAP for open financial posting documents, creates a ServiceNow change request for the period close checklist, and notifies the controller team via Teams.
  tags:
  - finance
  - erp
  - sap
  - servicenow
  - msteams
  - period-close
capability:
  exposes:
  - type: mcp
    namespace: finance-period-close
    port: 8080
    tools:
    - name: verify-period-close
      description: Given a SAP fiscal period and company code, query open FI documents, create a ServiceNow change request for the close workflow, and notify the controller team in Teams.
      inputParameters:
      - name: fiscal_period
        in: body
        type: string
        description: SAP fiscal period in YYYYMM format (e.g., 202503).
      - name: company_code
        in: body
        type: string
        description: SAP company code (e.g., F001).
      steps:
      - name: get-open-docs
        type: call
        call: sap.get-open-fi-documents
        with:
          fiscal_period: '{{fiscal_period}}'
          company_code: '{{company_code}}'
      - name: create-change
        type: call
        call: servicenow.create-change-request
        with:
          short_description: Period close {{fiscal_period}} — {{company_code}}
          category: financial_close
          description: 'Open FI documents: {{get-open-docs.count}}'
      - name: notify-controllers
        type: call
        call: msteams.send-message
        with:
          channel: finance-controllers
          text: 'Period close {{fiscal_period}} / {{company_code}}. Open docs: {{get-open-docs.count}}. Change: {{create-change.number}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ford-s4.sap.com/sap/opu/odata/sap/API_JOURNALENTRYITEMBASIC_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: fi-documents
      path: /A_JournalEntryItem
      inputParameters:
      - name: fiscal_period
        in: query
      - name: company_code
        in: query
      operations:
      - name: get-open-fi-documents
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://ford.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: change-requests
      path: /table/change_request
      operations:
      - name: create-change-request
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msteams_token
    resources:
    - name: channel-messages
      path: /teams/finance/channels/controllers/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → sap-period-close-verification.yml

When a new hire record is created in Workday, provisions a Microsoft 365 account, opens a ServiceNow IT onboarding ticket, and sends a Teams welcome message to the new hire and their manager.

naftiko: '0.5'
info:
  label: New Employee Onboarding
  description: When a new hire record is created in Workday, provisions a Microsoft 365 account, opens a ServiceNow IT onboarding ticket, and sends a Teams welcome message to the new hire and their manager.
  tags:
  - hr
  - onboarding
  - workday
  - microsoft-365
  - servicenow
  - msteams
capability:
  exposes:
  - type: mcp
    namespace: hr-onboarding
    port: 8080
    tools:
    - name: trigger-employee-onboarding
      description: Given a Workday employee ID and start date, provision a Microsoft 365 account, create a ServiceNow IT onboarding incident, and send a Teams welcome message. Use when HR creates a new hire record.
      inputParameters:
      - name: workday_employee_id
        in: body
        type: string
        description: Workday worker ID for the new hire.
      - name: start_date
        in: body
        type: string
        description: Employee start date in ISO 8601 format (YYYY-MM-DD).
      steps:
      - name: get-worker
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{workday_employee_id}}'
      - name: provision-m365
        type: call
        call: msgraph.create-user
        with:
          displayName: '{{get-worker.full_name}}'
          userPrincipalName: '{{get-worker.email}}'
          department: '{{get-worker.department}}'
      - name: open-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'IT Onboarding: {{get-worker.full_name}} — start {{start_date}}'
          category: onboarding
          assignment_group: IT_Onboarding
      - name: send-welcome
        type: call
        call: msteams.send-message
        with:
          channel: hr-announcements
          text: 'Welcome {{get-worker.full_name}} to Ford! Start date: {{start_date}}. IT ticket: {{open-ticket.number}}'
  consumes:
  - type: http
    namespace: workday
    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: msgraph
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: users
      path: /users
      operations:
      - name: create-user
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://ford.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msteams_token
    resources:
    - name: channel-messages
      path: /teams/hr/channels/announcements/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → new-employee-onboarding.yml

On confirmed Workday termination, disables the Microsoft 365 account, removes GitHub organization access, and opens a ServiceNow offboarding checklist ticket.

naftiko: '0.5'
info:
  label: Employee Offboarding
  description: On confirmed Workday termination, disables the Microsoft 365 account, removes GitHub organization access, and opens a ServiceNow offboarding checklist ticket.
  tags:
  - hr
  - offboarding
  - workday
  - microsoft-365
  - github
  - servicenow
  - identity
capability:
  exposes:
  - type: mcp
    namespace: hr-offboarding
    port: 8080
    tools:
    - name: trigger-offboarding
      description: Given a Workday employee ID and termination date, disable Microsoft 365 account, remove GitHub org membership, and open a ServiceNow IT offboarding ticket. Use on Workday termination confirmation events.
      inputParameters:
      - name: workday_employee_id
        in: body
        type: string
        description: Workday worker ID of the departing employee.
      - name: termination_date
        in: body
        type: string
        description: Effective termination date in ISO 8601 format (YYYY-MM-DD).
      steps:
      - name: get-worker
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{workday_employee_id}}'
      - name: disable-m365
        type: call
        call: msgraph.disable-user
        with:
          user_id: '{{get-worker.email}}'
      - name: remove-github-access
        type: call
        call: github.remove-org-member
        with:
          org: ford-motor-company
          username: '{{get-worker.github_username}}'
      - name: open-offboarding-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Offboarding: {{get-worker.full_name}} — {{termination_date}}'
          category: offboarding
          assignment_group: IT_Security
  consumes:
  - type: http
    namespace: workday
    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: msgraph
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: users
      path: /users/{{user_id}}
      inputParameters:
      - name: user_id
        in: path
      operations:
      - name: disable-user
        method: PATCH
  - type: http
    namespace: github
    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-org-member
        method: DELETE
  - type: http
    namespace: servicenow
    baseUri: https://ford.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → employee-offboarding.yml

Initiates a vehicle quality defect investigation by creating a SAP quality notification, opening a Jira engineering ticket, and alerting the quality team via Teams.

naftiko: '0.5'
info:
  label: Vehicle Quality Defect Investigation
  description: Initiates a vehicle quality defect investigation by creating a SAP quality notification, opening a Jira engineering ticket, and alerting the quality team via Teams.
  tags:
  - quality
  - sap
  - jira
  - microsoft-teams
  - automotive
  - manufacturing
capability:
  exposes:
  - type: mcp
    namespace: quality-ops
    port: 8080
    tools:
    - name: investigate-vehicle-defect
      description: Given a defect description, affected vehicle model, and VIN range, create a SAP quality notification, open a Jira engineering investigation, and alert the quality team via Teams.
      inputParameters:
      - name: defect_description
        in: body
        type: string
        description: Description of the quality defect found.
      - name: vehicle_model
        in: body
        type: string
        description: Vehicle model, e.g. 'F-150 Lightning'.
      - name: vin_range
        in: body
        type: string
        description: Affected VIN range.
      steps:
      - name: create-quality-notification
        type: call
        call: sap-s4.create-qn
        with:
          notification_type: Q2
          description: '{{defect_description}}'
          material: '{{vehicle_model}}'
      - name: create-investigation
        type: call
        call: jira.create-issue
        with:
          project_key: QA
          issuetype: Bug
          summary: 'Defect: {{vehicle_model}} - {{defect_description}}'
          description: 'QN: {{create-quality-notification.number}} | VINs: {{vin_range}} | {{defect_description}}'
      - name: alert-quality-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_quality_channel_id
          text: 'DEFECT: {{vehicle_model}} | {{defect_description}} | QN: {{create-quality-notification.number}} | Jira: {{create-investigation.key}}'
  consumes:
  - namespace: sap-s4
    type: http
    baseUri: https://ford-s4.sap.com/sap/opu/odata/sap/API_QUALITYNOTIFICATION_SRV
    authentication:
      type: basic
      username: $secrets.sap_s4_username
      password: $secrets.sap_s4_password
    resources:
    - name: quality-notifications
      path: /A_QualityNotification
      operations:
      - name: create-qn
        method: POST
  - namespace: jira
    type: http
    baseUri: https://ford.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
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vehicle-quality-defect-investigation.yml

When an employee's position changes in Workday, updates their Salesforce user profile, revises Microsoft 365 group memberships, and notifies the new manager via Teams.

naftiko: '0.5'
info:
  label: Workday Role Change Access Propagation
  description: When an employee's position changes in Workday, updates their Salesforce user profile, revises Microsoft 365 group memberships, and notifies the new manager via Teams.
  tags:
  - hr
  - identity
  - workday
  - salesforce
  - microsoft-365
  - msteams
  - role-change
capability:
  exposes:
  - type: mcp
    namespace: hr-role-change
    port: 8080
    tools:
    - name: propagate-role-change
      description: Given a Workday employee ID and new job profile, update the Salesforce user record and notify the new manager via Teams. Use on confirmed Workday position change events.
      inputParameters:
      - name: workday_employee_id
        in: body
        type: string
        description: Workday worker ID of the employee with the role change.
      - name: new_job_profile
        in: body
        type: string
        description: New Workday job profile code or title.
      steps:
      - name: get-worker
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{workday_employee_id}}'
      - name: update-sf-user
        type: call
        call: salesforce.patch-user
        with:
          email: '{{get-worker.email}}'
          Title: '{{new_job_profile}}'
          Department: '{{get-worker.department}}'
      - name: notify-manager
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-worker.manager_email}}'
          text: 'Role change completed for {{get-worker.full_name}}: now {{new_job_profile}}. Salesforce updated.'
  consumes:
  - type: http
    namespace: workday
    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: salesforce
    baseUri: https://ford.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: users
      path: /sobjects/User
      operations:
      - name: patch-user
        method: PATCH
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msteams_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → workday-role-change-access-propagation.yml

When a vehicle assembly line goes down, creates a ServiceNow incident, logs downtime in SAP PM, and alerts plant management via Teams.

naftiko: '0.5'
info:
  label: Vehicle Assembly Line Downtime Escalation
  description: When a vehicle assembly line goes down, creates a ServiceNow incident, logs downtime in SAP PM, and alerts plant management via Teams.
  tags:
  - production
  - servicenow
  - sap
  - microsoft-teams
  - automotive
  - manufacturing
capability:
  exposes:
  - type: mcp
    namespace: production-ops
    port: 8080
    tools:
    - name: escalate-line-downtime
      description: Given a production line ID, downtime reason, and severity, create a ServiceNow incident, log a SAP PM notification, and alert plant management via Teams. Use when a vehicle assembly line stops unexpectedly.
      inputParameters:
      - name: line_id
        in: body
        type: string
        description: Production line identifier, e.g. 'DEARBORN-TRUCK-LINE-2'.
      - name: downtime_reason
        in: body
        type: string
        description: Reason for the production line downtime.
      - name: severity
        in: body
        type: string
        description: 'Severity level: P1, P2, or P3.'
      steps:
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: '[{{severity}}] Line down: {{line_id}}'
          urgency: '1'
          impact: '1'
          description: 'Assembly line {{line_id}} is down. Reason: {{downtime_reason}}'
      - name: log-sap-notification
        type: call
        call: sap-pm.create-notification
        with:
          notification_type: M2
          equipment: '{{line_id}}'
          description: 'Line downtime: {{downtime_reason}}'
      - name: alert-management
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_plant_mgmt_channel_id
          text: 'LINE DOWN: {{line_id}} | {{severity}} | INC: {{create-incident.number}} | SAP: {{log-sap-notification.number}}'
  consumes:
  - namespace: servicenow
    type: http
    baseUri: https://ford.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: sap-pm
    type: http
    baseUri: https://ford-s4.sap.com/sap/opu/odata/sap/API_MAINTNOTIFICATION
    authentication:
      type: basic
      username: $secrets.sap_s4_username
      password: $secrets.sap_s4_password
    resources:
    - name: notifications
      path: /A_MaintenanceNotification
      operations:
      - name: create-notification
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vehicle-assembly-line-downtime-escalation.yml

After a ServiceNow production incident is closed, creates a Confluence post-incident review page with resolution details and lessons learned for the IT knowledge base.

naftiko: '0.5'
info:
  label: Confluence Post-Incident Knowledge Capture
  description: After a ServiceNow production incident is closed, creates a Confluence post-incident review page with resolution details and lessons learned for the IT knowledge base.
  tags:
  - itsm
  - knowledge-management
  - servicenow
  - confluence
  - incident-response
capability:
  exposes:
  - type: mcp
    namespace: incident-knowledge
    port: 8080
    tools:
    - name: capture-post-incident-review
      description: Given a resolved ServiceNow incident number and Confluence space key, fetch incident close notes and create a post-incident review (PIR) page in Confluence for the IT knowledge base.
      inputParameters:
      - name: incident_number
        in: body
        type: string
        description: ServiceNow incident number (e.g., INC0078901).
      - name: confluence_space_key
        in: body
        type: string
        description: Confluence space key for the IT knowledge base (e.g., ITOPS).
      steps:
      - name: get-incident
        type: call
        call: servicenow.get-incident
        with:
          number: '{{incident_number}}'
      - name: create-pir-page
        type: call
        call: confluence.create-page
        with:
          space_key: '{{confluence_space_key}}'
          title: 'PIR: {{incident_number}} — {{get-incident.short_description}}'
          body: 'Incident: {{incident_number}}

            Summary: {{get-incident.short_description}}

            Impact: {{get-incident.impact}}

            Root Cause: {{get-incident.close_notes}}

            Resolution: {{get-incident.resolution_notes}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://ford.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      inputParameters:
      - name: number
        in: query
      operations:
      - name: get-incident
        method: GET
  - type: http
    namespace: confluence
    baseUri: https://ford.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: pages
      path: /content
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → confluence-post-incident-knowledge-capture.yml

Retrieves battery health diagnostics for a Ford electric vehicle from the connected vehicle platform by VIN.

naftiko: '0.5'
info:
  label: EV Battery Diagnostic Check
  description: Retrieves battery health diagnostics for a Ford electric vehicle from the connected vehicle platform by VIN.
  tags:
  - automotive
  - ev
  - diagnostics
  - connected-vehicle
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: ev-ops
    port: 8080
    tools:
    - name: check-battery-health
      description: Given an EV VIN, retrieve battery state of health, charge cycles, and thermal management status.
      inputParameters:
      - name: vin
        in: body
        type: string
        description: Electric vehicle VIN.
      call: ford-cv.get-battery-diagnostics
      with:
        vin: '{{vin}}'
      outputParameters:
      - name: state_of_health
        type: string
        mapping: $.battery.state_of_health
      - name: charge_cycles
        type: string
        mapping: $.battery.charge_cycles
  consumes:
  - namespace: ford-cv
    type: http
    baseUri: https://api.ford.com/connected-vehicle/v2
    authentication:
      type: bearer
      token: $secrets.ford_cv_api_token
    resources:
    - name: battery
      path: /vehicles/{{vin}}/battery
      inputParameters:
      - name: vin
        in: path
      operations:
      - name: get-battery-diagnostics
        method: GET
Open in Framework → View in Fleet → ev-battery-diagnostic-check.yml

Orchestrates vehicle delivery logistics by syncing SAP shipping data to Salesforce dealer records, updating the tracking system, and notifying the logistics team via Teams.

naftiko: '0.5'
info:
  label: Vehicle Delivery Logistics Orchestration
  description: Orchestrates vehicle delivery logistics by syncing SAP shipping data to Salesforce dealer records, updating the tracking system, and notifying the logistics team via Teams.
  tags:
  - logistics
  - sap
  - salesforce
  - microsoft-teams
  - automotive
  - delivery
capability:
  exposes:
  - type: mcp
    namespace: logistics-ops
    port: 8080
    tools:
    - name: orchestrate-delivery
      description: Given a shipment ID and dealer code, sync SAP shipping data to Salesforce and notify the logistics team via Teams.
      inputParameters:
      - name: shipment_id
        in: body
        type: string
        description: SAP shipment ID.
      - name: dealer_code
        in: body
        type: string
        description: Dealer code.
      steps:
      - name: get-shipping-data
        type: call
        call: sap-s4.get-shipment
        with:
          ShipmentId: '{{shipment_id}}'
      - name: update-salesforce
        type: call
        call: salesforce.update-delivery
        with:
          dealer_code: '{{dealer_code}}'
          shipment: '{{shipment_id}}'
          status: '{{get-shipping-data.Status}}'
      - name: notify-logistics
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_logistics_channel_id
          text: 'DELIVERY: Shipment {{shipment_id}} | Dealer: {{dealer_code}} | Status: {{get-shipping-data.Status}}'
  consumes:
  - namespace: sap-s4
    type: http
    baseUri: https://ford-s4.sap.com/sap/opu/odata/sap/API_SHIPMENT_SRV
    authentication:
      type: basic
      username: $secrets.sap_s4_username
      password: $secrets.sap_s4_password
    resources:
    - name: shipments
      path: /A_Shipment('{ShipmentId}')
      inputParameters:
      - name: ShipmentId
        in: path
      operations:
      - name: get-shipment
        method: GET
  - namespace: salesforce
    type: http
    baseUri: https://ford.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: deliveries
      path: /sobjects/Vehicle_Delivery__c
      operations:
      - name: update-delivery
        method: PATCH
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vehicle-delivery-logistics-orchestration.yml

Retrieves the latest telemetry data for a connected vehicle from the Ford connected vehicle platform by VIN.

naftiko: '0.5'
info:
  label: Connected Vehicle Telemetry Lookup
  description: Retrieves the latest telemetry data for a connected vehicle from the Ford connected vehicle platform by VIN.
  tags:
  - automotive
  - connected-vehicle
  - telemetry
  - lookup
capability:
  exposes:
  - type: mcp
    namespace: connected-vehicle
    port: 8080
    tools:
    - name: get-vehicle-telemetry
      description: Given a vehicle VIN, retrieve the latest telemetry data including location, fuel level, and diagnostic codes.
      inputParameters:
      - name: vin
        in: body
        type: string
        description: Vehicle VIN, e.g. '1FTFW1E57NFA00001'.
      call: ford-cv.get-vehicle-status
      with:
        vin: '{{vin}}'
      outputParameters:
      - name: fuel_level
        type: string
        mapping: $.vehicleStatus.fuelLevel
      - name: odometer
        type: string
        mapping: $.vehicleStatus.odometer
  consumes:
  - namespace: ford-cv
    type: http
    baseUri: https://api.ford.com/connected-vehicle/v2
    authentication:
      type: bearer
      token: $secrets.ford_cv_api_token
    resources:
    - name: vehicles
      path: /vehicles/{{vin}}/status
      inputParameters:
      - name: vin
        in: path
      operations:
      - name: get-vehicle-status
        method: GET
Open in Framework → View in Fleet → connected-vehicle-telemetry-lookup.yml

Ingests crash test results by loading data to Snowflake, refreshing the Tableau safety dashboard, and notifying the safety engineering team via Teams.

naftiko: '0.5'
info:
  label: Vehicle Crash Test Data Pipeline
  description: Ingests crash test results by loading data to Snowflake, refreshing the Tableau safety dashboard, and notifying the safety engineering team via Teams.
  tags:
  - engineering
  - snowflake
  - tableau
  - microsoft-teams
  - safety
  - automotive
capability:
  exposes:
  - type: mcp
    namespace: engineering-ops
    port: 8080
    tools:
    - name: ingest-crash-test-data
      description: Given a test ID and data source path, load crash test results to Snowflake, refresh the safety dashboard, and notify the safety engineering team via Teams.
      inputParameters:
      - name: test_id
        in: body
        type: string
        description: Crash test identifier.
      - name: data_source
        in: body
        type: string
        description: S3 path to crash test data.
      steps:
      - name: load-to-snowflake
        type: call
        call: snowflake.execute-query
        with:
          warehouse: SAFETY_WH
          query: CALL sp_ingest_crash_test('{{test_id}}', '{{data_source}}');
      - name: refresh-dashboard
        type: call
        call: tableau.refresh-workbook
        with:
          workbook_id: $secrets.tableau_safety_workbook_id
      - name: notify-safety-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_safety_eng_channel_id
          text: 'CRASH TEST DATA: {{test_id}} loaded | Dashboard refreshed'
  consumes:
  - namespace: snowflake
    type: http
    baseUri: https://ford.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: queries
      path: /statements
      operations:
      - name: execute-query
        method: POST
  - namespace: tableau
    type: http
    baseUri: https://tableau.ford.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_access_token
    resources:
    - name: workbooks
      path: /sites/ford/workbooks/{{workbook_id}}/refresh
      inputParameters:
      - name: workbook_id
        in: path
      operations:
      - name: refresh-workbook
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vehicle-crash-test-data-pipeline.yml

When a safety recall decision is made, creates a Salesforce Service Cloud case for each affected VIN, opens a ServiceNow change request for the recall campaign, and notifies the customer service leadership team via Teams.

naftiko: '0.5'
info:
  label: Vehicle Recall Campaign Management
  description: When a safety recall decision is made, creates a Salesforce Service Cloud case for each affected VIN, opens a ServiceNow change request for the recall campaign, and notifies the customer service leadership team via Teams.
  tags:
  - automotive
  - customer-support
  - salesforce
  - servicenow
  - msteams
  - recall
capability:
  exposes:
  - type: mcp
    namespace: recall-management
    port: 8080
    tools:
    - name: launch-recall-campaign
      description: Given a recall number, affected model year, and defect description, create a Salesforce case for each affected vehicle, open a ServiceNow change request for the campaign, and notify the customer service team via Teams.
      inputParameters:
      - name: recall_number
        in: body
        type: string
        description: NHTSA recall campaign number (e.g., 24V-001).
      - name: affected_model
        in: body
        type: string
        description: Affected vehicle model name (e.g., F-150, Mustang).
      - name: model_years
        in: body
        type: string
        description: Comma-separated model years affected (e.g., 2022,2023,2024).
      - name: defect_description
        in: body
        type: string
        description: Short description of the safety defect.
      steps:
      - name: create-recall-case
        type: call
        call: salesforce.create-case
        with:
          Subject: 'Recall {{recall_number}}: {{affected_model}} {{model_years}} — {{defect_description}}'
          Status: New
          Origin: Recall Campaign
          Type: Safety Recall
      - name: create-change-request
        type: call
        call: servicenow.create-change-request
        with:
          short_description: 'Recall campaign {{recall_number}}: {{affected_model}} {{model_years}}'
          category: recall_campaign
          description: 'Defect: {{defect_description}}. Affected models: {{affected_model}} {{model_years}}'
      - name: notify-customer-service
        type: call
        call: msteams.send-message
        with:
          channel: customer-service-leadership
          text: 'Recall {{recall_number}} launched: {{affected_model}} {{model_years}}. SF case: {{create-recall-case.case_number}}. Change: {{create-change-request.number}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://ford.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: servicenow
    baseUri: https://ford.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: change-requests
      path: /table/change_request
      operations:
      - name: create-change-request
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msteams_token
    resources:
    - name: channel-messages
      path: /teams/customer-service/channels/leadership/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → vehicle-recall-campaign-management.yml

Syncs dealer incentive program data from SAP to Salesforce, refreshes the Power BI dashboard, and notifies the sales team via Teams.

naftiko: '0.5'
info:
  label: Dealer Incentive Program Sync
  description: Syncs dealer incentive program data from SAP to Salesforce, refreshes the Power BI dashboard, and notifies the sales team via Teams.
  tags:
  - sales
  - sap
  - salesforce
  - microsoft-teams
  - automotive
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: sales-ops
    port: 8080
    tools:
    - name: sync-dealer-incentives
      description: Given an incentive program ID and effective date, sync incentive data from SAP to Salesforce and notify the sales team via Teams.
      inputParameters:
      - name: program_id
        in: body
        type: string
        description: Incentive program identifier.
      - name: effective_date
        in: body
        type: string
        description: Effective date.
      steps:
      - name: get-sap-incentives
        type: call
        call: sap-s4.get-incentive-data
        with:
          program: '{{program_id}}'
          date: '{{effective_date}}'
      - name: update-salesforce
        type: call
        call: salesforce.update-incentive-records
        with:
          program_id: '{{program_id}}'
          data: '{{get-sap-incentives.results}}'
      - name: notify-sales
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_sales_channel_id
          text: 'INCENTIVE SYNC: {{program_id}} | Effective: {{effective_date}} | Records: {{get-sap-incentives.count}}'
  consumes:
  - namespace: sap-s4
    type: http
    baseUri: https://ford-s4.sap.com/sap/opu/odata/sap/API_SALES_ORDER_SRV
    authentication:
      type: basic
      username: $secrets.sap_s4_username
      password: $secrets.sap_s4_password
    resources:
    - name: incentives
      path: /A_SalesIncentive
      operations:
      - name: get-incentive-data
        method: GET
  - namespace: salesforce
    type: http
    baseUri: https://ford.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: incentives
      path: /sobjects/Incentive_Program__c
      operations:
      - name: update-incentive-records
        method: PATCH
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → dealer-incentive-program-sync.yml

Fetches Jira sprint completion data for Ford software engineering teams, writes velocity metrics to Snowflake, and triggers a Power BI engineering performance dashboard refresh.

naftiko: '0.5'
info:
  label: Jira Sprint Velocity Report
  description: Fetches Jira sprint completion data for Ford software engineering teams, writes velocity metrics to Snowflake, and triggers a Power BI engineering performance dashboard refresh.
  tags:
  - devops
  - agile
  - jira
  - snowflake
  - power-bi
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: engineering-velocity
    port: 8080
    tools:
    - name: publish-sprint-velocity
      description: Given a Jira project key and sprint ID, fetch completed story points, write velocity to Snowflake, and trigger a Power BI engineering dashboard refresh. Use after each sprint to track delivery performance.
      inputParameters:
      - name: jira_project_key
        in: body
        type: string
        description: Jira project key for the engineering team (e.g., CV, FNV).
      - name: sprint_id
        in: body
        type: integer
        description: Jira sprint ID to analyze.
      steps:
      - name: get-sprint
        type: call
        call: jira.get-sprint
        with:
          sprint_id: '{{sprint_id}}'
      - name: write-velocity
        type: call
        call: snowflake.insert-velocity-row
        with:
          project_key: '{{jira_project_key}}'
          sprint_id: '{{sprint_id}}'
          completed_points: '{{get-sprint.completedPoints}}'
      - name: refresh-powerbi
        type: call
        call: powerbi.trigger-refresh
        with:
          dataset_id: $secrets.powerbi_engineering_dataset_id
  consumes:
  - type: http
    namespace: jira
    baseUri: https://ford.atlassian.net/rest/api/3
    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
  - type: http
    namespace: snowflake
    baseUri: https://ford.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: velocity-table
      path: /statements
      operations:
      - name: insert-velocity-row
        method: POST
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: dataset-refreshes
      path: /datasets/{{dataset_id}}/refreshes
      inputParameters:
      - name: dataset_id
        in: path
      operations:
      - name: trigger-refresh
        method: POST
Open in Framework → View in Fleet → jira-sprint-velocity-report.yml

Fetches Ford Motor Company LinkedIn page engagement and follower metrics, aggregates in Snowflake, and sends a weekly digest to the corporate communications team via Teams.

naftiko: '0.5'
info:
  label: LinkedIn Employer Brand Performance Digest
  description: Fetches Ford Motor Company LinkedIn page engagement and follower metrics, aggregates in Snowflake, and sends a weekly digest to the corporate communications team via Teams.
  tags:
  - marketing
  - social
  - linkedin
  - snowflake
  - msteams
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: brand-analytics
    port: 8080
    tools:
    - name: digest-linkedin-performance
      description: Given a LinkedIn organization ID and date range, fetch post engagement and follower stats, write to Snowflake, and post a Teams digest to the corporate-comms channel.
      inputParameters:
      - name: organization_id
        in: body
        type: string
        description: LinkedIn organization ID (URN) for the Ford Motor Company page.
      - name: start_date
        in: body
        type: string
        description: Report start date in ISO 8601 format (YYYY-MM-DD).
      - name: end_date
        in: body
        type: string
        description: Report end date in ISO 8601 format (YYYY-MM-DD).
      steps:
      - name: get-engagement-stats
        type: call
        call: linkedin.get-share-statistics
        with:
          organization_id: '{{organization_id}}'
          start: '{{start_date}}'
          end: '{{end_date}}'
      - name: write-stats
        type: call
        call: snowflake.insert-social-row
        with:
          platform: linkedin
          impressions: '{{get-engagement-stats.totalImpressions}}'
          engagements: '{{get-engagement-stats.totalEngagements}}'
          start_date: '{{start_date}}'
      - name: send-digest
        type: call
        call: msteams.send-message
        with:
          channel: corporate-comms
          text: 'LinkedIn Brand ({{start_date}} to {{end_date}}): {{get-engagement-stats.totalImpressions}} impressions, {{get-engagement-stats.totalEngagements}} engagements.'
  consumes:
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: share-statistics
      path: /organizationalEntityShareStatistics
      inputParameters:
      - name: organization_id
        in: query
      - name: start
        in: query
      - name: end
        in: query
      operations:
      - name: get-share-statistics
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://ford.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: social-stats
      path: /statements
      operations:
      - name: insert-social-row
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msteams_token
    resources:
    - name: channel-messages
      path: /teams/comms/channels/corporate/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → linkedin-employer-brand-performance-digest.yml

Manages an EV battery recall by identifying affected VINs in Salesforce, creating a SAP quality notification, and notifying the recall team via Teams.

naftiko: '0.5'
info:
  label: EV Battery Recall Management
  description: Manages an EV battery recall by identifying affected VINs in Salesforce, creating a SAP quality notification, and notifying the recall team via Teams.
  tags:
  - quality
  - salesforce
  - sap
  - microsoft-teams
  - ev
  - automotive
capability:
  exposes:
  - type: mcp
    namespace: quality-ops
    port: 8080
    tools:
    - name: manage-ev-recall
      description: Given a recall campaign ID and defect description, identify affected VINs in Salesforce, create a SAP quality notification, and notify the recall team via Teams.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: Recall campaign identifier.
      - name: defect_description
        in: body
        type: string
        description: Description of the battery defect.
      steps:
      - name: get-affected-vins
        type: call
        call: salesforce.query-vehicles
        with:
          campaign_id: '{{campaign_id}}'
      - name: create-sap-notification
        type: call
        call: sap-s4.create-qn
        with:
          notification_type: Q2
          description: 'EV Battery Recall {{campaign_id}}: {{defect_description}}'
      - name: notify-recall-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_recall_channel_id
          text: 'EV RECALL: {{campaign_id}} | Affected VINs: {{get-affected-vins.count}} | QN: {{create-sap-notification.number}}'
  consumes:
  - namespace: salesforce
    type: http
    baseUri: https://ford.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: vehicles
      path: /query
      operations:
      - name: query-vehicles
        method: GET
  - namespace: sap-s4
    type: http
    baseUri: https://ford-s4.sap.com/sap/opu/odata/sap/API_QUALITYNOTIFICATION_SRV
    authentication:
      type: basic
      username: $secrets.sap_s4_username
      password: $secrets.sap_s4_password
    resources:
    - name: quality-notifications
      path: /A_QualityNotification
      operations:
      - name: create-qn
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → ev-battery-recall-management.yml

Queries Datadog for SLO compliance across connected vehicle and FordPass API services, writes results to Snowflake, and posts a weekly digest to engineering leadership via Teams.

naftiko: '0.5'
info:
  label: Datadog Connected Vehicle Service SLO Report
  description: Queries Datadog for SLO compliance across connected vehicle and FordPass API services, writes results to Snowflake, and posts a weekly digest to engineering leadership via Teams.
  tags:
  - observability
  - slo
  - datadog
  - snowflake
  - msteams
  - automotive
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: cv-slo-reporting
    port: 8080
    tools:
    - name: report-cv-slo-compliance
      description: Given a service tag and SLO evaluation window, fetch SLO status from Datadog, write compliance data to Snowflake, and post a Teams digest if SLOs are at risk. Use weekly for connected vehicle platform reviews.
      inputParameters:
      - name: service_tag
        in: body
        type: string
        description: Datadog service tag for connected vehicle services (e.g., service:fordpass-api).
      - name: time_window
        in: body
        type: string
        description: 'Evaluation window: 7d, 30d, or 90d.'
      steps:
      - name: get-slo-status
        type: call
        call: datadog.list-slos
        with:
          tags: '{{service_tag}}'
          time_window: '{{time_window}}'
      - name: write-compliance
        type: call
        call: snowflake.insert-slo-row
        with:
          service_tag: '{{service_tag}}'
          time_window: '{{time_window}}'
          at_risk_count: '{{get-slo-status.at_risk_count}}'
      - name: post-digest
        type: call
        call: msteams.send-message
        with:
          channel: connected-vehicle-leadership
          text: 'SLO Report ({{time_window}}) | {{service_tag}}: {{get-slo-status.at_risk_count}} SLOs at risk.'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: slos
      path: /slo
      inputParameters:
      - name: tags
        in: query
      - name: time_window
        in: query
      operations:
      - name: list-slos
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://ford.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: slo-table
      path: /statements
      operations:
      - name: insert-slo-row
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msteams_token
    resources:
    - name: channel-messages
      path: /teams/engineering/channels/cv-leadership/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → datadog-connected-vehicle-service-slo-report.yml

Retrieves dealer account details from Salesforce by dealer code, returning name, region, and sales volume.

naftiko: '0.5'
info:
  label: Salesforce Dealer Account Lookup
  description: Retrieves dealer account details from Salesforce by dealer code, returning name, region, and sales volume.
  tags:
  - sales
  - salesforce
  - dealer
  - lookup
  - automotive
capability:
  exposes:
  - type: mcp
    namespace: sales-ops
    port: 8080
    tools:
    - name: get-dealer-account
      description: Given a Salesforce dealer code, retrieve the dealer account record including name, region, sales volume, and tier.
      inputParameters:
      - name: dealer_code
        in: body
        type: string
        description: Dealer code, e.g. 'DLR-MI-00412'.
      call: salesforce.get-dealer
      with:
        dealer_code: '{{dealer_code}}'
      outputParameters:
      - name: dealer_name
        type: string
        mapping: $.records[0].Name
      - name: region
        type: string
        mapping: $.records[0].Region__c
  consumes:
  - namespace: salesforce
    type: http
    baseUri: https://ford.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_access_token
    resources:
    - name: dealers
      path: /query
      operations:
      - name: get-dealer
        method: GET
Open in Framework → View in Fleet → salesforce-dealer-account-lookup.yml

Synchronizes a closed-won Salesforce dealer opportunity to SAP as a fleet sales order, and notifies the regional sales manager via Teams.

naftiko: '0.5'
info:
  label: Salesforce Dealer Account Opportunity Sync
  description: Synchronizes a closed-won Salesforce dealer opportunity to SAP as a fleet sales order, and notifies the regional sales manager via Teams.
  tags:
  - sales
  - crm
  - erp
  - salesforce
  - sap
  - msteams
  - automotive
capability:
  exposes:
  - type: mcp
    namespace: dealer-sales
    port: 8080
    tools:
    - name: sync-dealer-opportunity
      description: Given a closed-won Salesforce opportunity ID for a dealer fleet order, fetch the opportunity details, create a corresponding SAP sales order, and notify the regional sales manager via Teams.
      inputParameters:
      - name: opportunity_id
        in: body
        type: string
        description: Salesforce opportunity ID for the dealer fleet order.
      steps:
      - name: get-opportunity
        type: call
        call: salesforce.get-opportunity
        with:
          opportunity_id: '{{opportunity_id}}'
      - name: create-sales-order
        type: call
        call: sap.create-sales-order
        with:
          sold_to_party: '{{get-opportunity.account_sap_id}}'
          net_value: '{{get-opportunity.amount}}'
          currency: USD
          reference: '{{opportunity_id}}'
      - name: notify-sales-manager
        type: call
        call: msteams.send-message
        with:
          channel: regional-sales
          text: 'Dealer opportunity {{get-opportunity.name}} closed! SAP order: {{create-sales-order.order_number}}. Value: ${{get-opportunity.amount}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://ford.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunities
      path: /sobjects/Opportunity/{{opportunity_id}}
      inputParameters:
      - name: opportunity_id
        in: path
      operations:
      - name: get-opportunity
        method: GET
  - type: http
    namespace: sap
    baseUri: https://ford-s4.sap.com/sap/opu/odata/sap/SD_SALES_ORDER_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: sales-orders
      path: /A_SalesOrder
      operations:
      - name: create-sales-order
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msteams_token
    resources:
    - name: channel-messages
      path: /teams/sales/channels/regional/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → salesforce-dealer-account-opportunity-sync.yml

When Datadog detects a production line anomaly or equipment failure, creates a P1 ServiceNow incident, opens a Jira tracking issue, and alerts the manufacturing operations team via Teams.

naftiko: '0.5'
info:
  label: Manufacturing Production Line Incident Response
  description: When Datadog detects a production line anomaly or equipment failure, creates a P1 ServiceNow incident, opens a Jira tracking issue, and alerts the manufacturing operations team via Teams.
  tags:
  - manufacturing
  - incident-response
  - datadog
  - servicenow
  - jira
  - msteams
  - automotive
capability:
  exposes:
  - type: mcp
    namespace: manufacturing-ops
    port: 8080
    tools:
    - name: handle-production-line-incident
      description: Given a Datadog alert ID and affected production line, create a ServiceNow incident, open a Jira tracking issue, and alert the manufacturing operations Teams channel. Use on automated alerts from line monitoring systems.
      inputParameters:
      - name: datadog_alert_id
        in: body
        type: string
        description: Datadog monitor alert ID from the production line monitoring system.
      - name: production_line
        in: body
        type: string
        description: Production line identifier (e.g., DEARBORN-TRUCK-LINE-2).
      - name: severity
        in: body
        type: string
        description: 'Incident severity: P1, P2, or P3.'
      steps:
      - name: get-alert-details
        type: call
        call: datadog.get-monitor
        with:
          alert_id: '{{datadog_alert_id}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: '[{{severity}}] Production line anomaly: {{production_line}}'
          urgency: '1'
          impact: '1'
          description: 'Datadog alert {{datadog_alert_id}}: {{get-alert-details.message}}. Line: {{production_line}}'
      - name: create-tracking-issue
        type: call
        call: jira.create-issue
        with:
          project_key: MFG
          issuetype: Bug
          summary: '[{{severity}}] Line anomaly: {{production_line}}'
          description: 'Incident: {{create-incident.number}} | Alert: {{datadog_alert_id}} | Details: {{get-alert-details.message}}'
      - name: alert-mfg-ops
        type: call
        call: msteams.send-message
        with:
          channel: manufacturing-ops
          text: 'INCIDENT {{create-incident.number}} | {{severity}} | Line: {{production_line}} | Jira: {{create-tracking-issue.key}}'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: monitors
      path: /monitor/{{alert_id}}
      inputParameters:
      - name: alert_id
        in: path
      operations:
      - name: get-monitor
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://ford.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: jira
    baseUri: https://ford.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msteams_token
    resources:
    - name: channel-messages
      path: /teams/manufacturing/channels/ops/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → manufacturing-production-line-incident-response.yml

Runs automated data quality checks on Snowflake vehicle sales tables, logs results to Datadog, and opens Jira remediation tasks when quality thresholds are breached.

naftiko: '0.5'
info:
  label: Snowflake Vehicle Sales Data Quality Check
  description: Runs automated data quality checks on Snowflake vehicle sales tables, logs results to Datadog, and opens Jira remediation tasks when quality thresholds are breached.
  tags:
  - data-engineering
  - data-quality
  - snowflake
  - datadog
  - jira
  - automotive
capability:
  exposes:
  - type: mcp
    namespace: data-quality
    port: 8080
    tools:
    - name: check-sales-data-quality
      description: Given a Snowflake vehicle sales table name and null rate threshold, run a data quality check, submit a Datadog metric, and open a Jira task if the threshold is breached. Use daily for sales data integrity validation.
      inputParameters:
      - name: table_name
        in: body
        type: string
        description: Fully qualified Snowflake table name (e.g., SALES.PUBLIC.VEHICLE_ORDERS).
      - name: null_threshold
        in: body
        type: number
        description: Maximum acceptable null rate (0.0–1.0) before opening a Jira task.
      steps:
      - name: run-dq-check
        type: call
        call: snowflake.execute-dq-statement
        with:
          table_name: '{{table_name}}'
      - name: post-metric
        type: call
        call: datadog.submit-metric
        with:
          metric: ford.snowflake.null_rate
          points: '{{run-dq-check.null_rate}}'
          tags: table:{{table_name}}
      - name: open-jira-task
        type: call
        call: jira.create-issue
        with:
          project_key: DATA
          issuetype: Task
          summary: 'Data quality breach: {{table_name}} null_rate={{run-dq-check.null_rate}}'
          description: 'Table {{table_name}} exceeded threshold {{null_threshold}}. Actual: {{run-dq-check.null_rate}}. Row count: {{run-dq-check.row_count}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://ford.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: execute-dq-statement
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: metrics
      path: /series
      operations:
      - name: submit-metric
        method: POST
  - type: http
    namespace: jira
    baseUri: https://ford.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
Open in Framework → View in Fleet → snowflake-vehicle-sales-data-quality-check.yml

When Datadog detects a FordPass app service degradation, creates a ServiceNow P1 incident, and alerts the app team via Teams.

naftiko: '0.5'
info:
  label: FordPass App Incident Response
  description: When Datadog detects a FordPass app service degradation, creates a ServiceNow P1 incident, and alerts the app team via Teams.
  tags:
  - connected-vehicle
  - datadog
  - servicenow
  - microsoft-teams
  - incident-response
  - automotive
capability:
  exposes:
  - type: mcp
    namespace: connected-vehicle-ops
    port: 8080
    tools:
    - name: handle-fordpass-incident
      description: Given a Datadog alert ID and service name, create a ServiceNow P1 incident and alert the FordPass team via Teams.
      inputParameters:
      - name: alert_id
        in: body
        type: string
        description: Datadog alert identifier.
      - name: service_name
        in: body
        type: string
        description: Affected FordPass service.
      steps:
      - name: get-alert-details
        type: call
        call: datadog.get-monitor
        with:
          alert_id: '{{alert_id}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: '[P1] FordPass: {{service_name}} degradation'
          urgency: '1'
          impact: '1'
          description: 'Alert: {{alert_id}} | {{get-alert-details.message}}'
      - name: alert-app-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_fordpass_channel_id
          text: 'P1 FORDPASS: {{service_name}} | Alert: {{alert_id}} | INC: {{create-incident.number}}'
  consumes:
  - namespace: datadog
    type: http
    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/{{alert_id}}
      inputParameters:
      - name: alert_id
        in: path
      operations:
      - name: get-monitor
        method: GET
  - namespace: servicenow
    type: http
    baseUri: https://ford.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → fordpass-app-incident-response.yml

On a GitHub Actions pipeline failure on a main branch, creates a Jira engineering bug, posts a Datadog deployment marker, and alerts the software engineering team via Teams.

naftiko: '0.5'
info:
  label: GitHub CI/CD Pipeline Failure Response
  description: On a GitHub Actions pipeline failure on a main branch, creates a Jira engineering bug, posts a Datadog deployment marker, and alerts the software engineering team via Teams.
  tags:
  - devops
  - ci-cd
  - github
  - jira
  - datadog
  - msteams
capability:
  exposes:
  - type: mcp
    namespace: devops-cicd
    port: 8080
    tools:
    - name: handle-pipeline-failure
      description: Given a GitHub repository, run ID, branch, and commit SHA, create a Jira bug for the failure, post a Datadog event, and alert the engineering Teams channel.
      inputParameters:
      - name: repo_full_name
        in: body
        type: string
        description: GitHub repository full name (e.g., ford-motor-company/connected-vehicle-api).
      - name: run_id
        in: body
        type: string
        description: GitHub Actions workflow run ID.
      - name: branch
        in: body
        type: string
        description: Branch name where the failure occurred.
      - name: commit_sha
        in: body
        type: string
        description: Commit SHA of the failing run.
      steps:
      - name: get-run
        type: call
        call: github.get-workflow-run
        with:
          repo: '{{repo_full_name}}'
          run_id: '{{run_id}}'
      - name: create-bug
        type: call
        call: jira.create-issue
        with:
          project_key: SWE
          issuetype: Bug
          summary: '[CI Failure] {{repo_full_name}} / {{branch}}'
          description: 'Run: {{run_id}}

            Branch: {{branch}}

            Commit: {{commit_sha}}

            Conclusion: {{get-run.conclusion}}'
      - name: post-dd-event
        type: call
        call: datadog.create-event
        with:
          title: 'CI Failure: {{repo_full_name}}'
          text: 'Branch {{branch}} run {{run_id}} failed. Commit: {{commit_sha}}'
          alert_type: error
          tags: repo:{{repo_full_name}},branch:{{branch}}
      - name: alert-engineering
        type: call
        call: msteams.send-message
        with:
          channel: software-engineering
          text: 'Pipeline failure: {{repo_full_name}} | Branch: {{branch}} | Jira: {{create-bug.key}} | Run: {{run_id}}'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: workflow-runs
      path: /repos/{{repo}}/actions/runs/{{run_id}}
      inputParameters:
      - name: repo
        in: path
      - name: run_id
        in: path
      operations:
      - name: get-workflow-run
        method: GET
  - type: http
    namespace: jira
    baseUri: https://ford.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: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: events
      path: /events
      operations:
      - name: create-event
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msteams_token
    resources:
    - name: channel-messages
      path: /teams/engineering/channels/swe-alerts/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → github-ci-cd-pipeline-failure-response.yml

Generates a Production Part Approval Process report by pulling dimensional data from SAP QM, compiling into a Confluence page, and notifying quality engineering via Teams.

naftiko: '0.5'
info:
  label: Automated PPAP Report Generation
  description: Generates a Production Part Approval Process report by pulling dimensional data from SAP QM, compiling into a Confluence page, and notifying quality engineering via Teams.
  tags:
  - quality
  - sap
  - confluence
  - microsoft-teams
  - manufacturing
  - automotive
capability:
  exposes:
  - type: mcp
    namespace: quality-ops
    port: 8080
    tools:
    - name: generate-ppap-report
      description: Given a part number and inspection lot, pull PPAP data from SAP QM, create a Confluence report, and notify quality engineering via Teams.
      inputParameters:
      - name: part_number
        in: body
        type: string
        description: Part number for the PPAP.
      - name: inspection_lot
        in: body
        type: string
        description: SAP inspection lot number.
      steps:
      - name: get-inspection-data
        type: call
        call: sap-qm.get-inspection-results
        with:
          InspectionLot: '{{inspection_lot}}'
      - name: create-ppap-page
        type: call
        call: confluence.create-page
        with:
          space_key: QA
          title: 'PPAP Report: {{part_number}}'
          body: 'Part: {{part_number}} | Lot: {{inspection_lot}} | Results: {{get-inspection-data.results}}'
      - name: notify-quality
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_quality_channel_id
          text: 'PPAP REPORT: {{part_number}} | Lot: {{inspection_lot}} | Report: {{create-ppap-page.url}}'
  consumes:
  - namespace: sap-qm
    type: http
    baseUri: https://ford-s4.sap.com/sap/opu/odata/sap/API_INSPECTIONLOT_SRV
    authentication:
      type: basic
      username: $secrets.sap_s4_username
      password: $secrets.sap_s4_password
    resources:
    - name: inspection-lots
      path: /A_InspectionLot('{InspectionLot}')
      inputParameters:
      - name: InspectionLot
        in: path
      operations:
      - name: get-inspection-results
        method: GET
  - namespace: confluence
    type: http
    baseUri: https://ford.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_api_token
    resources:
    - name: pages
      path: /content
      operations:
      - name: create-page
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → automated-ppap-report-generation.yml

When a hiring manager opens a position requisition in Workday, creates a ServiceNow approval task for the HRBP, and notifies the Talent Acquisition team via Teams.

naftiko: '0.5'
info:
  label: Workday Position Requisition Approval Routing
  description: When a hiring manager opens a position requisition in Workday, creates a ServiceNow approval task for the HRBP, and notifies the Talent Acquisition team via Teams.
  tags:
  - hr
  - recruiting
  - workday
  - servicenow
  - msteams
  - approval
capability:
  exposes:
  - type: mcp
    namespace: talent-acquisition
    port: 8080
    tools:
    - name: route-position-requisition
      description: Given a Workday position requisition ID, fetch its details, create a ServiceNow HRBP approval task, and notify the Talent Acquisition Teams channel.
      inputParameters:
      - name: requisition_id
        in: body
        type: string
        description: Workday position requisition ID (e.g., REQ-007890).
      steps:
      - name: get-requisition
        type: call
        call: workday.get-position-requisition
        with:
          requisition_id: '{{requisition_id}}'
      - name: create-approval-task
        type: call
        call: servicenow.create-task
        with:
          short_description: 'Position requisition: {{requisition_id}} — {{get-requisition.job_title}}'
          assignment_group: HRBP_Team
          description: 'Department: {{get-requisition.department}}. Manager: {{get-requisition.manager_name}}'
      - name: notify-ta-team
        type: call
        call: msteams.send-message
        with:
          channel: talent-acquisition
          text: 'New requisition: {{get-requisition.job_title}} in {{get-requisition.department}}. Task: {{create-approval-task.number}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: position-requisitions
      path: /positionRequisitions/{{requisition_id}}
      inputParameters:
      - name: requisition_id
        in: path
      operations:
      - name: get-position-requisition
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://ford.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tasks
      path: /table/task
      operations:
      - name: create-task
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msteams_token
    resources:
    - name: channel-messages
      path: /teams/hr/channels/talent-acquisition/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → workday-position-requisition-approval-routing.yml

Triggers a Terraform Cloud workspace run to provision or update connected vehicle or cloud infrastructure, and notifies the platform engineering team via Teams.

naftiko: '0.5'
info:
  label: Terraform Cloud Provisioning Run
  description: Triggers a Terraform Cloud workspace run to provision or update connected vehicle or cloud infrastructure, and notifies the platform engineering team via Teams.
  tags:
  - cloud
  - infrastructure
  - terraform
  - msteams
  - devops
  - automotive
capability:
  exposes:
  - type: mcp
    namespace: infra-provisioning
    port: 8080
    tools:
    - name: trigger-terraform-run
      description: Given a Terraform Cloud workspace ID and change description, queue a plan-and-apply run and notify the platform-engineering Teams channel with the run ID and outcome.
      inputParameters:
      - name: workspace_id
        in: body
        type: string
        description: Terraform Cloud workspace ID (e.g., ws-XXXXXXXXX).
      - name: change_description
        in: body
        type: string
        description: Human-readable reason for this Terraform run (e.g., 'Add FordPass API gateway subnet').
      steps:
      - name: queue-run
        type: call
        call: terraform.create-run
        with:
          workspace_id: '{{workspace_id}}'
          message: '{{change_description}}'
      - name: notify-platform
        type: call
        call: msteams.send-message
        with:
          channel: platform-engineering
          text: 'Terraform run queued: {{queue-run.run_id}} | Workspace: {{workspace_id}} | Change: {{change_description}}'
  consumes:
  - type: http
    namespace: terraform
    baseUri: https://app.terraform.io/api/v2
    authentication:
      type: bearer
      token: $secrets.terraform_token
    resources:
    - name: runs
      path: /runs
      operations:
      - name: create-run
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msteams_token
    resources:
    - name: channel-messages
      path: /teams/engineering/channels/platform/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → terraform-cloud-provisioning-run.yml

Aggregates daily vehicle retail sales data from Snowflake and triggers a Power BI sales performance dashboard refresh for regional sales leadership.

naftiko: '0.5'
info:
  label: Power BI Vehicle Sales Dashboard Refresh
  description: Aggregates daily vehicle retail sales data from Snowflake and triggers a Power BI sales performance dashboard refresh for regional sales leadership.
  tags:
  - sales
  - analytics
  - reporting
  - snowflake
  - power-bi
  - automotive
capability:
  exposes:
  - type: mcp
    namespace: sales-analytics
    port: 8080
    tools:
    - name: refresh-sales-dashboard
      description: Given a reporting date and region, write a daily sales summary to Snowflake and trigger a Power BI vehicle sales dashboard refresh for regional sales leadership.
      inputParameters:
      - name: report_date
        in: body
        type: string
        description: Reporting date in ISO 8601 format (YYYY-MM-DD).
      - name: region
        in: body
        type: string
        description: Sales region (e.g., NORTH_AMERICA, EUROPE, ASIA_PACIFIC).
      steps:
      - name: write-sales-summary
        type: call
        call: snowflake.insert-sales-summary
        with:
          report_date: '{{report_date}}'
          region: '{{region}}'
      - name: refresh-dashboard
        type: call
        call: powerbi.trigger-refresh
        with:
          dataset_id: $secrets.powerbi_sales_dataset_id
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://ford.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: sales-table
      path: /statements
      operations:
      - name: insert-sales-summary
        method: POST
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: dataset-refreshes
      path: /datasets/{{dataset_id}}/refreshes
      inputParameters:
      - name: dataset_id
        in: path
      operations:
      - name: trigger-refresh
        method: POST
Open in Framework → View in Fleet → power-bi-vehicle-sales-dashboard-refresh.yml

Ingests autonomous vehicle test data by triggering a Snowflake data load, running validation queries, and notifying the AV engineering team via Teams.

naftiko: '0.5'
info:
  label: Autonomous Vehicle Test Data Ingestion
  description: Ingests autonomous vehicle test data by triggering a Snowflake data load, running validation queries, and notifying the AV engineering team via Teams.
  tags:
  - engineering
  - snowflake
  - microsoft-teams
  - autonomous-vehicle
  - automotive
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: engineering-ops
    port: 8080
    tools:
    - name: ingest-av-test-data
      description: Given a test session ID and data source, load AV test data to Snowflake, validate, and notify the AV team via Teams.
      inputParameters:
      - name: session_id
        in: body
        type: string
        description: AV test session identifier.
      - name: data_source
        in: body
        type: string
        description: S3 path to test data.
      steps:
      - name: load-data
        type: call
        call: snowflake.execute-query
        with:
          warehouse: AV_WH
          query: CALL sp_ingest_av_test('{{session_id}}', '{{data_source}}');
      - name: validate-data
        type: call
        call: snowflake.execute-query
        with:
          warehouse: AV_WH
          query: CALL sp_validate_av_test('{{session_id}}');
      - name: notify-av-team
        type: call
        call: msteams.post-message
        with:
          channel_id: $secrets.teams_av_channel_id
          text: 'AV TEST DATA: Session {{session_id}} | Load: {{load-data.status}} | Validation: {{validate-data.status}}'
  consumes:
  - namespace: snowflake
    type: http
    baseUri: https://ford.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: queries
      path: /statements
      operations:
      - name: execute-query
        method: POST
  - namespace: msteams
    type: http
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_bearer_token
    resources:
    - name: channel-messages
      path: /teams/messages
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → autonomous-vehicle-test-data-ingestion.yml

Triggers a refresh of a Tableau vehicle production analytics dashboard by workbook ID.

naftiko: '0.5'
info:
  label: Tableau Vehicle Production Dashboard Refresh
  description: Triggers a refresh of a Tableau vehicle production analytics dashboard by workbook ID.
  tags:
  - analytics
  - tableau
  - automotive
  - dashboard
capability:
  exposes:
  - type: mcp
    namespace: analytics
    port: 8080
    tools:
    - name: refresh-dashboard
      description: Given a Tableau workbook ID, trigger an extract refresh for the vehicle production analytics dashboard.
      inputParameters:
      - name: workbook_id
        in: body
        type: string
        description: Tableau workbook ID, e.g. 'wb-vehicle-prod-2026'.
      call: tableau.refresh-workbook
      with:
        workbook_id: '{{workbook_id}}'
      outputParameters:
      - name: job_id
        type: string
        mapping: $.job.id
      - name: status
        type: string
        mapping: $.job.status
  consumes:
  - namespace: tableau
    type: http
    baseUri: https://tableau.ford.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_access_token
    resources:
    - name: workbooks
      path: /sites/ford/workbooks/{{workbook_id}}/refresh
      inputParameters:
      - name: workbook_id
        in: path
      operations:
      - name: refresh-workbook
        method: POST
Open in Framework → View in Fleet → tableau-vehicle-production-dashboard-refresh.yml

Matches incoming supplier invoices in SAP Ariba against open SAP S/4HANA purchase orders, flags discrepancies, and routes exceptions to the AP team via ServiceNow.

naftiko: '0.5'
info:
  label: SAP Ariba Supplier Invoice Matching
  description: Matches incoming supplier invoices in SAP Ariba against open SAP S/4HANA purchase orders, flags discrepancies, and routes exceptions to the AP team via ServiceNow.
  tags:
  - procurement
  - finance
  - sap-ariba
  - sap
  - servicenow
  - ap
  - invoice-matching
capability:
  exposes:
  - type: mcp
    namespace: ap-operations
    port: 8080
    tools:
    - name: match-supplier-invoice
      description: Given an SAP Ariba invoice ID and corresponding SAP PO number, compare invoice totals to PO values, and create a ServiceNow AP exception task if there is a discrepancy. Use to automate three-way match in Accounts Payable.
      inputParameters:
      - name: ariba_invoice_id
        in: body
        type: string
        description: SAP Ariba invoice document ID.
      - name: po_number
        in: body
        type: string
        description: SAP purchase order number to match against.
      steps:
      - name: get-invoice
        type: call
        call: ariba.get-invoice
        with:
          invoice_id: '{{ariba_invoice_id}}'
      - name: get-po
        type: call
        call: sap.get-po-header
        with:
          po_number: '{{po_number}}'
      - name: create-exception
        type: call
        call: servicenow.create-task
        with:
          short_description: 'Invoice exception: Ariba {{ariba_invoice_id}} vs PO {{po_number}}'
          assignment_group: AP_Team
          description: 'Invoice amount: {{get-invoice.net_amount}}. PO amount: {{get-po.total_amount}}. Requires AP review.'
  consumes:
  - type: http
    namespace: ariba
    baseUri: https://openapi.ariba.com/api/invoice/v1
    authentication:
      type: bearer
      token: $secrets.ariba_token
    resources:
    - name: invoices
      path: /{{invoice_id}}
      inputParameters:
      - name: invoice_id
        in: path
      operations:
      - name: get-invoice
        method: GET
  - type: http
    namespace: sap
    baseUri: https://ford-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: purchase-orders
      path: /A_PurchaseOrder('{{po_number}}')
      inputParameters:
      - name: po_number
        in: path
      operations:
      - name: get-po-header
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://ford.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tasks
      path: /table/task
      operations:
      - name: create-task
        method: POST
Open in Framework → View in Fleet → sap-ariba-supplier-invoice-matching.yml

Looks up a SAP purchase order by number and returns structured header status, vendor name, total value, and delivery status for procurement and supply chain queries.

naftiko: '0.5'
info:
  label: SAP Purchase Order Status Lookup
  description: Looks up a SAP purchase order by number and returns structured header status, vendor name, total value, and delivery status for procurement and supply chain queries.
  tags:
  - procurement
  - erp
  - sap
  - supply-chain
capability:
  exposes:
  - type: mcp
    namespace: procurement
    port: 8080
    tools:
    - name: get-purchase-order
      description: Look up a SAP purchase order by PO number. Returns overall status, vendor name, total value, currency, and delivery line items. Use when verifying parts procurement status or resolving supplier discrepancies.
      inputParameters:
      - name: po_number
        in: body
        type: string
        description: SAP purchase order number (10-digit, e.g., 4500076543).
      call: sap.get-po
      with:
        po_number: '{{po_number}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.d.OverallStatus
      - name: vendor
        type: string
        mapping: $.d.Supplier.CompanyName
      - name: total_value
        type: string
        mapping: $.d.TotalAmount
      - name: currency
        type: string
        mapping: $.d.TransactionCurrency
  consumes:
  - type: http
    namespace: sap
    baseUri: https://ford-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: purchase-orders
      path: /A_PurchaseOrder('{{po_number}}')
      inputParameters:
      - name: po_number
        in: path
      operations:
      - name: get-po
        method: GET
        outputRawFormat: xml
Open in Framework → View in Fleet → sap-purchase-order-status-lookup.yml

Generates KPI digest at GM from Snowflake, Oracle, Power BI, and email.

naftiko: '0.5'
info:
  label: Weekly KPI Digest Pipeline
  description: Generates KPI digest at GM from Snowflake, Oracle, Power BI, and email.
  tags:
  - reporting
  - kpi
  - snowflake
  - executive
capability:
  exposes:
  - type: mcp
    namespace: kpi-digest
    port: 8080
    tools:
    - name: gen-digest
      description: Generate KPI digest at GM.
      inputParameters:
      - name: week
        in: body
        type: string
        description: Week ending.
      - name: dist
        in: body
        type: string
        description: Distribution list.
      steps:
      - name: ops
        type: call
        call: snowflake.query
        with:
          query: SELECT * FROM kpis WHERE w='{{week}}'
      - name: fin
        type: call
        call: oracle.get-summary
        with:
          period: '{{week}}'
      - name: refresh
        type: call
        call: power-bi.refresh
        with:
          dataset: exec_kpis
      - name: send
        type: call
        call: email.send
        with:
          to: '{{dist}}'
          subject: KPIs - {{week}}
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://gm.com.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query
        method: POST
  - type: http
    namespace: oracle
    baseUri: https://oracle.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.oracle_token
    resources:
    - name: fin
      path: /summary
      operations:
      - name: get-summary
        method: GET
  - type: http
    namespace: power-bi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.power_bi_token
    resources:
    - name: datasets
      path: /datasets/{{dataset}}/refreshes
      inputParameters:
      - name: dataset
        in: path
      operations:
      - name: refresh
        method: POST
  - type: http
    namespace: email
    baseUri: https://email.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.email_token
    resources:
    - name: messages
      path: /send
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → weekly-kpi-digest-pipeline.yml

Checks Okta user at GM.

naftiko: '0.5'
info:
  label: Okta User Check
  description: Checks Okta user at GM.
  tags:
  - identity
  - okta
  - access-management
capability:
  exposes:
  - type: mcp
    namespace: okta-user
    port: 8080
    tools:
    - name: check-user
      description: Check user at GM.
      inputParameters:
      - name: email
        in: body
        type: string
        description: Email.
      call: okta.get-user
      with:
        email: '{{email}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: okta
    baseUri: https://gm.com.okta.com/api/v1
    authentication:
      type: bearer
      token: $secrets.okta_api_token
    resources:
    - name: users
      path: /users/{{email}}
      inputParameters:
      - name: email
        in: path
      operations:
      - name: get-user
        method: GET
Open in Framework → View in Fleet → okta-user-check.yml

Routes changes at GM through ServiceNow and CAB approval.

naftiko: '0.5'
info:
  label: Change Management Pipeline
  description: Routes changes at GM through ServiceNow and CAB approval.
  tags:
  - change-management
  - servicenow
  - itil
capability:
  exposes:
  - type: mcp
    namespace: change-mgmt
    port: 8080
    tools:
    - name: process-change
      description: Process changes at GM.
      inputParameters:
      - name: change_id
        in: body
        type: string
        description: Change ID.
      - name: date
        in: body
        type: string
        description: Date.
      steps:
      - name: get
        type: call
        call: servicenow.get-change
        with:
          id: '{{change_id}}'
      - name: conflicts
        type: call
        call: servicenow.check-conflicts
        with:
          date: '{{date}}'
      - name: submit
        type: call
        call: servicenow.update
        with:
          id: '{{change_id}}'
          state: approval
      - name: notify
        type: call
        call: email.send
        with:
          to: cab@co.com
          subject: 'CAB: {{change_id}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://gm.com.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: changes
      path: /table/change_request/{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-change
        method: GET
  - type: http
    namespace: email
    baseUri: https://email.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.email_token
    resources:
    - name: messages
      path: /send
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → change-management-pipeline.yml

Retrieves SharePoint metadata at GM.

naftiko: '0.5'
info:
  label: SharePoint File Metadata
  description: Retrieves SharePoint metadata at GM.
  tags:
  - document-management
  - sharepoint
  - collaboration
capability:
  exposes:
  - type: mcp
    namespace: sp-docs
    port: 8080
    tools:
    - name: get-file
      description: Look up file at GM.
      inputParameters:
      - name: site_id
        in: body
        type: string
        description: Site ID.
      - name: file_path
        in: body
        type: string
        description: Path.
      call: sharepoint.get-file
      with:
        site_id: '{{site_id}}'
        path: '{{file_path}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.name
      - name: size
        type: number
        mapping: $.size
  consumes:
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.microsoft_graph_token
    resources:
    - name: files
      path: /sites/{{site_id}}/drive/root:/{{path}}
      inputParameters:
      - name: site_id
        in: path
      - name: path
        in: path
      operations:
      - name: get-file
        method: GET
Open in Framework → View in Fleet → sharepoint-file-metadata.yml

Analyzes feedback at GM via surveys, AI sentiment, and Power BI.

naftiko: '0.5'
info:
  label: Customer Feedback Pipeline
  description: Analyzes feedback at GM via surveys, AI sentiment, and Power BI.
  tags:
  - customer-experience
  - analytics
  - sentiment-analysis
capability:
  exposes:
  - type: mcp
    namespace: feedback
    port: 8080
    tools:
    - name: analyze
      description: Analyze feedback at GM.
      inputParameters:
      - name: survey_id
        in: body
        type: string
        description: Survey ID.
      steps:
      - name: collect
        type: call
        call: survey.get
        with:
          id: '{{survey_id}}'
      - name: sentiment
        type: call
        call: ai.analyze
        with:
          text: '{{collect.responses}}'
      - name: themes
        type: call
        call: ai.themes
        with:
          data: '{{collect.responses}}'
      - name: dashboard
        type: call
        call: power-bi.refresh
        with:
          dataset: cx
  consumes:
  - type: http
    namespace: survey
    baseUri: https://surveys.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.survey_token
    resources:
    - name: responses
      path: /surveys/{{id}}/responses
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get
        method: GET
  - type: http
    namespace: ai
    baseUri: https://api.openai.com/v1
    authentication:
      type: bearer
      token: $secrets.openai_api_key
    resources:
    - name: completions
      path: /chat/completions
      operations:
      - name: analyze
        method: POST
  - type: http
    namespace: power-bi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.power_bi_token
    resources:
    - name: datasets
      path: /datasets/{{dataset}}/refreshes
      inputParameters:
      - name: dataset
        in: path
      operations:
      - name: refresh
        method: POST
Open in Framework → View in Fleet → customer-feedback-pipeline.yml

Checks license compliance at GM via scanning, entitlements, and procurement.

naftiko: '0.5'
info:
  label: License Compliance Pipeline
  description: Checks license compliance at GM via scanning, entitlements, and procurement.
  tags:
  - compliance
  - licensing
  - procurement
capability:
  exposes:
  - type: mcp
    namespace: license-comp
    port: 8080
    tools:
    - name: check-licenses
      description: Check license compliance at GM.
      inputParameters:
      - name: software
        in: body
        type: string
        description: Software.
      - name: vendor
        in: body
        type: string
        description: Vendor.
      steps:
      - name: scan
        type: call
        call: assets.installations
        with:
          sw: '{{software}}'
      - name: entitlements
        type: call
        call: licenses.get
        with:
          sw: '{{software}}'
      - name: flag
        type: call
        call: compliance.flag
        with:
          installed: '{{scan.count}}'
          entitled: '{{entitlements.count}}'
      - name: procure
        type: call
        call: servicenow.create-request
        with:
          type: license
          sw: '{{software}}'
  consumes:
  - type: http
    namespace: assets
    baseUri: https://assets.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.asset_token
    resources:
    - name: installations
      path: /installations
      operations:
      - name: installations
        method: GET
  - type: http
    namespace: licenses
    baseUri: https://licenses.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.license_token
    resources:
    - name: ent
      path: /entitlements
      operations:
      - name: get
        method: GET
  - type: http
    namespace: compliance
    baseUri: https://compliance.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.compliance_token
    resources:
    - name: overages
      path: /flag
      operations:
      - name: flag
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://gm.com.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: requests
      path: /table/sc_request
      operations:
      - name: create-request
        method: POST
Open in Framework → View in Fleet → license-compliance-pipeline.yml

Plans capacity at GM by collecting utilization and forecasting.

naftiko: '0.5'
info:
  label: Capacity Planning Pipeline
  description: Plans capacity at GM by collecting utilization and forecasting.
  tags:
  - infrastructure
  - capacity-planning
  - forecasting
capability:
  exposes:
  - type: mcp
    namespace: capacity
    port: 8080
    tools:
    - name: plan-capacity
      description: Plan capacity at GM.
      inputParameters:
      - name: resource
        in: body
        type: string
        description: Resource type.
      - name: months
        in: body
        type: number
        description: Forecast months.
      steps:
      - name: util
        type: call
        call: monitoring.get-util
        with:
          resource: '{{resource}}'
      - name: forecast
        type: call
        call: analytics.forecast
        with:
          current: '{{util.pct}}'
          months: '{{months}}'
      - name: procure
        type: call
        call: servicenow.create-request
        with:
          type: capacity
          resource: '{{resource}}'
      - name: dashboard
        type: call
        call: power-bi.refresh
        with:
          dataset: capacity
  consumes:
  - type: http
    namespace: monitoring
    baseUri: https://monitoring.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.monitoring_token
    resources:
    - name: util
      path: /resources/{{resource}}/util
      inputParameters:
      - name: resource
        in: path
      operations:
      - name: get-util
        method: GET
  - type: http
    namespace: analytics
    baseUri: https://analytics.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.analytics_token
    resources:
    - name: forecast
      path: /demand
      operations:
      - name: forecast
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://gm.com.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: requests
      path: /table/sc_request
      operations:
      - name: create-request
        method: POST
  - type: http
    namespace: power-bi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.power_bi_token
    resources:
    - name: datasets
      path: /datasets/{{dataset}}/refreshes
      inputParameters:
      - name: dataset
        in: path
      operations:
      - name: refresh
        method: POST
Open in Framework → View in Fleet → capacity-planning-pipeline.yml

Checks SAP PO at GM.

naftiko: '0.5'
info:
  label: SAP PO Check
  description: Checks SAP PO at GM.
  tags:
  - procurement
  - sap
  - purchase-orders
capability:
  exposes:
  - type: mcp
    namespace: sap-po
    port: 8080
    tools:
    - name: get-po
      description: Check PO at GM.
      inputParameters:
      - name: po_number
        in: body
        type: string
        description: PO number.
      call: sap.get-po
      with:
        po_number: '{{po_number}}'
      outputParameters:
      - name: vendor
        type: string
        mapping: $.order.vendor
      - name: status
        type: string
        mapping: $.order.status
  consumes:
  - type: http
    namespace: sap
    baseUri: https://sap.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: purchase-orders
      path: /purchase-orders/{{po_number}}
      inputParameters:
      - name: po_number
        in: path
      operations:
      - name: get-po
        method: GET
Open in Framework → View in Fleet → sap-po-check.yml

Checks Power BI refresh at GM.

naftiko: '0.5'
info:
  label: Power BI Refresh Check
  description: Checks Power BI refresh at GM.
  tags:
  - analytics
  - power-bi
  - dashboards
capability:
  exposes:
  - type: mcp
    namespace: pbi-refresh
    port: 8080
    tools:
    - name: check-refresh
      description: Check refresh at GM.
      inputParameters:
      - name: dataset_id
        in: body
        type: string
        description: Dataset ID.
      call: power-bi.get-refresh
      with:
        dataset_id: '{{dataset_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.value[0].status
  consumes:
  - type: http
    namespace: power-bi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.power_bi_token
    resources:
    - name: datasets
      path: /datasets/{{dataset_id}}/refreshes
      inputParameters:
      - name: dataset_id
        in: path
      operations:
      - name: get-refresh
        method: GET
Open in Framework → View in Fleet → power-bi-refresh-check.yml

Checks release readiness at GM.

naftiko: '0.5'
info:
  label: Release Readiness Pipeline
  description: Checks release readiness at GM.
  tags:
  - release-management
  - devops
  - quality
capability:
  exposes:
  - type: mcp
    namespace: release-ready
    port: 8080
    tools:
    - name: check-release
      description: Check release at GM.
      inputParameters:
      - name: release_id
        in: body
        type: string
        description: Release ID.
      - name: project
        in: body
        type: string
        description: Project.
      steps:
      - name: tests
        type: call
        call: azdo.get-tests
        with:
          project: '{{project}}'
          release: '{{release_id}}'
      - name: quality
        type: call
        call: sonarqube.get-gate
        with:
          project: '{{project}}'
      - name: security
        type: call
        call: security.get-scan
        with:
          project: '{{project}}'
      - name: doc
        type: call
        call: confluence.create-page
        with:
          title: Release - {{release_id}}
          body: 'Tests: {{tests.pass_rate}}% Quality: {{quality.status}}'
  consumes:
  - type: http
    namespace: azdo
    baseUri: https://dev.azure.com/gm.com
    authentication:
      type: bearer
      token: $secrets.azdo_token
    resources:
    - name: tests
      path: /{{project}}/_apis/test/runs
      inputParameters:
      - name: project
        in: path
      operations:
      - name: get-tests
        method: GET
  - type: http
    namespace: sonarqube
    baseUri: https://sonarqube.gm.com/api
    authentication:
      type: bearer
      token: $secrets.sonarqube_token
    resources:
    - name: quality
      path: /qualitygates/project_status
      operations:
      - name: get-gate
        method: GET
  - type: http
    namespace: security
    baseUri: https://security.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.security_token
    resources:
    - name: scans
      path: /results
      operations:
      - name: get-scan
        method: GET
  - type: http
    namespace: confluence
    baseUri: https://gm.com.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: pages
      path: /content
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → release-readiness-pipeline.yml

When a lead arrives in Salesforce from gm.com, enriches the lead with dealer proximity data, assigns it to the nearest dealer, and notifies the dealer sales manager via Microsoft Teams.

naftiko: '0.5'
info:
  label: Dealer Sales Lead Assignment
  description: When a lead arrives in Salesforce from gm.com, enriches the lead with dealer proximity data, assigns it to the nearest dealer, and notifies the dealer sales manager via Microsoft Teams.
  tags:
  - sales
  - dealer
  - salesforce
  - microsoft-teams
  - lead-management
capability:
  exposes:
  - type: mcp
    namespace: lead-assignment
    port: 8080
    tools:
    - name: assign-lead-to-dealer
      description: Given a Salesforce lead ID, enrich with location, assign to the nearest dealer, and notify the sales manager.
      inputParameters:
      - name: lead_id
        in: body
        type: string
        description: The Salesforce lead ID.
      steps:
      - name: get-lead
        type: call
        call: salesforce.get-lead
        with:
          lead_id: '{{lead_id}}'
      - name: find-nearest-dealer
        type: call
        call: dealer-api.find-nearest
        with:
          zip_code: '{{get-lead.postal_code}}'
          brand: '{{get-lead.vehicle_brand}}'
      - name: assign-lead
        type: call
        call: salesforce.update-lead
        with:
          lead_id: '{{lead_id}}'
          dealer_code: '{{find-nearest-dealer.dealer_code}}'
          dealer_name: '{{find-nearest-dealer.dealer_name}}'
      - name: notify-dealer
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{find-nearest-dealer.sales_manager_email}}'
          text: 'New lead assigned: {{get-lead.first_name}} {{get-lead.last_name}} interested in {{get-lead.vehicle_model}}. Lead ID: {{lead_id}}. Contact: {{get-lead.email}}.'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://gm.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
      - name: update-lead
        method: PATCH
  - type: http
    namespace: dealer-api
    baseUri: https://dealer-api.gm.com/locator/v2
    authentication:
      type: bearer
      token: $secrets.gm_dealer_api_token
    resources:
    - name: nearest
      path: /dealers/nearest
      inputParameters:
      - name: zip_code
        in: query
      - name: brand
        in: query
      operations:
      - name: find-nearest
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → dealer-sales-lead-assignment.yml

Optimizes cloud costs at GM via Azure, FinOps, Jira, and Power BI.

naftiko: '0.5'
info:
  label: Cloud Cost Optimization Pipeline
  description: Optimizes cloud costs at GM via Azure, FinOps, Jira, and Power BI.
  tags:
  - cloud
  - cost-management
  - finops
capability:
  exposes:
  - type: mcp
    namespace: cloud-opt
    port: 8080
    tools:
    - name: optimize
      description: Optimize cloud costs at GM.
      inputParameters:
      - name: provider
        in: body
        type: string
        description: Provider.
      - name: range
        in: body
        type: string
        description: Range.
      steps:
      - name: spend
        type: call
        call: cloud.get-costs
        with:
          provider: '{{provider}}'
          range: '{{range}}'
      - name: savings
        type: call
        call: finops.analyze
        with:
          data: '{{spend.data}}'
      - name: action
        type: call
        call: jira.create-issue
        with:
          project: FINOPS
          summary: Save ${{savings.potential}}
      - name: report
        type: call
        call: power-bi.refresh
        with:
          dataset: cloud
  consumes:
  - type: http
    namespace: cloud
    baseUri: https://management.azure.com
    authentication:
      type: bearer
      token: $secrets.azure_token
    resources:
    - name: costs
      path: /providers/Microsoft.CostManagement/query
      operations:
      - name: get-costs
        method: POST
  - type: http
    namespace: finops
    baseUri: https://finops.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.finops_token
    resources:
    - name: analysis
      path: /savings
      operations:
      - name: analyze
        method: POST
  - type: http
    namespace: jira
    baseUri: https://gm.com.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: power-bi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.power_bi_token
    resources:
    - name: datasets
      path: /datasets/{{dataset}}/refreshes
      inputParameters:
      - name: dataset
        in: path
      operations:
      - name: refresh
        method: POST
Open in Framework → View in Fleet → cloud-cost-optimization-pipeline.yml

Checks GitHub repo at GM.

naftiko: '0.5'
info:
  label: GitHub Repo Check
  description: Checks GitHub repo at GM.
  tags:
  - devops
  - github
  - version-control
capability:
  exposes:
  - type: mcp
    namespace: gh-repo
    port: 8080
    tools:
    - name: get-branch
      description: Check branch at GM.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: Repo.
      - name: branch
        in: body
        type: string
        description: Branch.
      call: github.get-branch
      with:
        repo: '{{repo}}'
        branch: '{{branch}}'
      outputParameters:
      - name: sha
        type: string
        mapping: $.commit.sha
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: branches
      path: /repos/org/{{repo}}/branches/{{branch}}
      inputParameters:
      - name: repo
        in: path
      - name: branch
        in: path
      operations:
      - name: get-branch
        method: GET
Open in Framework → View in Fleet → github-repo-check.yml

Audits expenses at GM via Concur, compliance checks, and email.

naftiko: '0.5'
info:
  label: Expense Audit Pipeline
  description: Audits expenses at GM via Concur, compliance checks, and email.
  tags:
  - finance
  - travel
  - sap-concur
  - compliance
capability:
  exposes:
  - type: mcp
    namespace: expense-audit
    port: 8080
    tools:
    - name: audit
      description: Audit expenses at GM.
      inputParameters:
      - name: report_id
        in: body
        type: string
        description: Report ID.
      steps:
      - name: get
        type: call
        call: concur.get-report
        with:
          id: '{{report_id}}'
      - name: check
        type: call
        call: compliance.check
        with:
          expenses: '{{get.entries}}'
      - name: flag
        type: call
        call: workflow.flag
        with:
          id: '{{report_id}}'
          violations: '{{check.violations}}'
      - name: notify
        type: call
        call: email.send
        with:
          to: '{{get.approver}}'
          subject: Expense {{report_id}} violations
  consumes:
  - type: http
    namespace: concur
    baseUri: https://us.api.concursolutions.com/api/v3.0
    authentication:
      type: bearer
      token: $secrets.concur_token
    resources:
    - name: reports
      path: /expense/reports/{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-report
        method: GET
  - type: http
    namespace: compliance
    baseUri: https://compliance.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.compliance_token
    resources:
    - name: policies
      path: /check
      operations:
      - name: check
        method: POST
  - type: http
    namespace: workflow
    baseUri: https://workflow.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.workflow_token
    resources:
    - name: reviews
      path: /flag
      operations:
      - name: flag
        method: POST
  - type: http
    namespace: email
    baseUri: https://email.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.email_token
    resources:
    - name: messages
      path: /send
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → expense-audit-pipeline.yml

Looks up a SAP S/4HANA purchase order by number and returns header status, vendor, total value, and delivery date for GM procurement.

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

Monitors SLAs at GM via Datadog and Slack.

naftiko: '0.5'
info:
  label: SLA Monitoring Pipeline
  description: Monitors SLAs at GM via Datadog and Slack.
  tags:
  - operations
  - sla
  - datadog
  - slack
capability:
  exposes:
  - type: mcp
    namespace: sla-monitor
    port: 8080
    tools:
    - name: check-sla
      description: Monitor SLAs at GM.
      inputParameters:
      - name: service
        in: body
        type: string
        description: Service.
      - name: target
        in: body
        type: number
        description: SLA target %.
      steps:
      - name: metrics
        type: call
        call: datadog.get-sla
        with:
          service: '{{service}}'
      - name: check
        type: call
        call: analytics.check-sla
        with:
          uptime: '{{metrics.uptime}}'
          target: '{{target}}'
      - name: alert
        type: call
        call: slack.post-message
        with:
          channel: '#ops'
          text: 'SLA: {{service}} at {{metrics.uptime}}% (target: {{target}}%)'
      - name: log
        type: call
        call: servicenow.create-incident
        with:
          desc: 'SLA breach: {{service}}'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: metrics
      path: /metrics
      operations:
      - name: get-sla
        method: GET
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://gm.com.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → sla-monitoring-pipeline.yml

Reviews vendors at GM.

naftiko: '0.5'
info:
  label: Quarterly Vendor Review Pipeline
  description: Reviews vendors at GM.
  tags:
  - procurement
  - vendor-management
  - review
capability:
  exposes:
  - type: mcp
    namespace: vendor-review
    port: 8080
    tools:
    - name: review-vendor
      description: Review vendors at GM.
      inputParameters:
      - name: vendor_id
        in: body
        type: string
        description: Vendor ID.
      - name: quarter
        in: body
        type: string
        description: Quarter.
      steps:
      - name: perf
        type: call
        call: procurement.get-metrics
        with:
          vendor: '{{vendor_id}}'
          q: '{{quarter}}'
      - name: scorecard
        type: call
        call: analytics.scorecard
        with:
          data: '{{perf.data}}'
      - name: invite
        type: call
        call: email.send
        with:
          to: '{{perf.contact}}'
          subject: QBR - {{quarter}}
      - name: schedule
        type: call
        call: calendar.create-event
        with:
          title: QBR - {{perf.name}}
  consumes:
  - type: http
    namespace: procurement
    baseUri: https://procurement.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.procurement_token
    resources:
    - name: vendors
      path: /vendors/{{vendor}}/metrics
      inputParameters:
      - name: vendor
        in: path
      operations:
      - name: get-metrics
        method: GET
  - type: http
    namespace: analytics
    baseUri: https://analytics.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.analytics_token
    resources:
    - name: scorecards
      path: /compute
      operations:
      - name: scorecard
        method: POST
  - type: http
    namespace: email
    baseUri: https://email.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.email_token
    resources:
    - name: messages
      path: /send
      operations:
      - name: send
        method: POST
  - type: http
    namespace: calendar
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.microsoft_graph_token
    resources:
    - name: events
      path: /users/proc/events
      operations:
      - name: create-event
        method: POST
Open in Framework → View in Fleet → quarterly-vendor-review-pipeline.yml

When a supply chain risk is flagged in Resilinc, enriches the alert with SAP Ariba supplier data, opens a ServiceNow incident for procurement, and notifies the commodity manager in Microsoft Teams.

naftiko: '0.5'
info:
  label: Supplier Disruption Alert Pipeline
  description: When a supply chain risk is flagged in Resilinc, enriches the alert with SAP Ariba supplier data, opens a ServiceNow incident for procurement, and notifies the commodity manager in Microsoft Teams.
  tags:
  - supply-chain
  - resilinc
  - sap-ariba
  - servicenow
  - microsoft-teams
  - risk-management
capability:
  exposes:
  - type: mcp
    namespace: supply-risk
    port: 8080
    tools:
    - name: process-disruption-alert
      description: Given a Resilinc alert ID and commodity manager email, enrich the alert, open a ServiceNow incident, and notify the manager.
      inputParameters:
      - name: alert_id
        in: body
        type: string
        description: The Resilinc supply disruption alert ID.
      - name: commodity_manager_email
        in: body
        type: string
        description: The email of the commodity manager to notify.
      steps:
      - name: get-alert
        type: call
        call: resilinc.get-alert
        with:
          alert_id: '{{alert_id}}'
      - name: get-supplier
        type: call
        call: ariba.get-supplier
        with:
          supplier_id: '{{get-alert.supplier_id}}'
      - name: open-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Supply disruption: {{get-supplier.supplier_name}} — {{get-alert.event_type}}'
          description: 'Resilinc alert {{alert_id}}: {{get-alert.description}}. Supplier: {{get-supplier.supplier_name}}, Region: {{get-alert.region}}. Impact: {{get-alert.severity}}.'
          category: supply_chain_disruption
          assigned_group: Procurement_Risk
      - name: notify-manager
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{commodity_manager_email}}'
          text: 'Supply Disruption Alert: {{get-supplier.supplier_name}} — {{get-alert.event_type}} ({{get-alert.severity}}). Incident {{open-incident.number}} opened. Details: {{get-alert.description}}'
  consumes:
  - type: http
    namespace: resilinc
    baseUri: https://api.resilinc.com/v2
    authentication:
      type: bearer
      token: $secrets.resilinc_token
    resources:
    - name: alerts
      path: /alerts/{{alert_id}}
      inputParameters:
      - name: alert_id
        in: path
      operations:
      - name: get-alert
        method: GET
  - type: http
    namespace: ariba
    baseUri: https://openapi.ariba.com/api/supplier-mgmt/v2
    authentication:
      type: bearer
      token: $secrets.ariba_token
    resources:
    - name: suppliers
      path: /suppliers/{{supplier_id}}
      inputParameters:
      - name: supplier_id
        in: path
      operations:
      - name: get-supplier
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://gm.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → supplier-disruption-alert-pipeline.yml

When a supplier shipment misses its delivery window, retrieves the PO from SAP, pulls the supplier scorecard from Ariba, logs a delivery exception, and notifies the buyer in Slack.

naftiko: '0.5'
info:
  label: Supplier On-Time Delivery Alert
  description: When a supplier shipment misses its delivery window, retrieves the PO from SAP, pulls the supplier scorecard from Ariba, logs a delivery exception, and notifies the buyer in Slack.
  tags:
  - supply-chain
  - sap
  - sap-s4hana
  - sap-ariba
  - slack
  - delivery
capability:
  exposes:
  - type: mcp
    namespace: delivery-exception
    port: 8080
    tools:
    - name: handle-late-delivery
      description: Given a PO number and supplier ID, pull PO details, check scorecard, log exception, and notify buyer.
      inputParameters:
      - name: po_number
        in: body
        type: string
        description: The SAP purchase order number.
      - name: supplier_id
        in: body
        type: string
        description: The SAP Ariba supplier ID.
      - name: buyer_slack_id
        in: body
        type: string
        description: The buyer's Slack user ID.
      steps:
      - name: get-po
        type: call
        call: sap.get-po
        with:
          po_number: '{{po_number}}'
      - name: get-scorecard
        type: call
        call: ariba.get-supplier-scorecard
        with:
          supplier_id: '{{supplier_id}}'
      - name: log-exception
        type: call
        call: logistics-api.create-exception
        with:
          po_number: '{{po_number}}'
          supplier_id: '{{supplier_id}}'
          exception_type: late_delivery
          expected_date: '{{get-po.delivery_date}}'
      - name: notify-buyer
        type: call
        call: slack.post-message
        with:
          channel: '#procurement-alerts'
          text: '<@{{buyer_slack_id}}> Late delivery: PO {{po_number}} from {{get-po.vendor}} was due {{get-po.delivery_date}}. Supplier OTD score: {{get-scorecard.on_time_delivery_pct}}%. Exception logged: {{log-exception.exception_id}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://gm-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    inputParameters:
    - name: Accept
      in: header
      value: application/json
    resources:
    - name: purchase-orders
      path: /A_PurchaseOrder('{{po_number}}')
      inputParameters:
      - name: po_number
        in: path
      operations:
      - name: get-po
        method: GET
  - type: http
    namespace: ariba
    baseUri: https://openapi.ariba.com/api/supplier-mgmt/v2
    authentication:
      type: bearer
      token: $secrets.ariba_token
    resources:
    - name: scorecards
      path: /suppliers/{{supplier_id}}/scorecard
      inputParameters:
      - name: supplier_id
        in: path
      operations:
      - name: get-supplier-scorecard
        method: GET
  - type: http
    namespace: logistics-api
    baseUri: https://logistics-api.gm.com/exceptions/v1
    authentication:
      type: bearer
      token: $secrets.gm_logistics_token
    resources:
    - name: exceptions
      path: /exceptions
      operations:
      - name: create-exception
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → supplier-on-time-delivery-alert.yml

Checks K8s pod health at GM.

naftiko: '0.5'
info:
  label: K8s Pod Health
  description: Checks K8s pod health at GM.
  tags:
  - containers
  - kubernetes
  - infrastructure
capability:
  exposes:
  - type: mcp
    namespace: k8s-pod
    port: 8080
    tools:
    - name: check-pod
      description: Check pod at GM.
      inputParameters:
      - name: namespace
        in: body
        type: string
        description: Namespace.
      - name: pod
        in: body
        type: string
        description: Pod name.
      call: k8s.get-pod
      with:
        namespace: '{{namespace}}'
        pod: '{{pod}}'
      outputParameters:
      - name: phase
        type: string
        mapping: $.status.phase
  consumes:
  - type: http
    namespace: k8s
    baseUri: https://k8s.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.k8s_token
    resources:
    - name: pods
      path: /namespaces/{{namespace}}/pods/{{pod}}
      inputParameters:
      - name: namespace
        in: path
      - name: pod
        in: path
      operations:
      - name: get-pod
        method: GET
Open in Framework → View in Fleet → k8s-pod-health.yml

When a workplace safety incident is reported, creates a ServiceNow incident, pulls the employee record from Workday for context, files an OSHA-reportable event if applicable, and notifies the plant safety manager in Microsoft Teams.

naftiko: '0.5'
info:
  label: Safety Incident Investigation Orchestrator
  description: When a workplace safety incident is reported, creates a ServiceNow incident, pulls the employee record from Workday for context, files an OSHA-reportable event if applicable, and notifies the plant safety manager in Microsoft Teams.
  tags:
  - safety
  - manufacturing
  - servicenow
  - workday
  - microsoft-teams
  - ehs
capability:
  exposes:
  - type: mcp
    namespace: safety-incident
    port: 8080
    tools:
    - name: report-safety-incident
      description: Given incident details, create ServiceNow record, pull employee info, file OSHA report if needed, and notify safety manager.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The Workday employee ID of the injured worker.
      - name: plant_code
        in: body
        type: string
        description: The plant code where the incident occurred.
      - name: incident_description
        in: body
        type: string
        description: Description of the safety incident.
      - name: severity
        in: body
        type: string
        description: Incident severity (minor, moderate, severe).
      - name: safety_manager_email
        in: body
        type: string
        description: The plant safety manager email.
      steps:
      - name: get-employee
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Safety incident — Plant {{plant_code}}: {{incident_description}}'
          description: 'Employee: {{get-employee.full_name}} ({{employee_id}}). Plant: {{plant_code}}. Department: {{get-employee.department}}. Severity: {{severity}}. Description: {{incident_description}}.'
          urgency: '1'
          category: workplace_safety
          assigned_group: EHS_{{plant_code}}
      - name: file-osha-report
        type: call
        call: ehs-api.create-osha-record
        with:
          employee_name: '{{get-employee.full_name}}'
          plant_code: '{{plant_code}}'
          description: '{{incident_description}}'
          severity: '{{severity}}'
      - name: notify-manager
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{safety_manager_email}}'
          text: 'Safety Incident: Plant {{plant_code}}, {{get-employee.full_name}}. Severity: {{severity}}. Incident: {{create-incident.number}}. OSHA: {{file-osha-report.record_id}}. Details: {{incident_description}}'
  consumes:
  - type: http
    namespace: workday
    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: servicenow
    baseUri: https://gm.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: ehs-api
    baseUri: https://ehs-api.gm.com/safety/v1
    authentication:
      type: bearer
      token: $secrets.gm_ehs_token
    resources:
    - name: osha-records
      path: /osha-reports
      operations:
      - name: create-osha-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → safety-incident-investigation-orchestrator.yml

Searches Confluence at GM.

naftiko: '0.5'
info:
  label: Confluence Article Search
  description: Searches Confluence at GM.
  tags:
  - knowledge-management
  - confluence
  - documentation
capability:
  exposes:
  - type: mcp
    namespace: confluence-search
    port: 8080
    tools:
    - name: search-articles
      description: Search Confluence at GM.
      inputParameters:
      - name: query
        in: body
        type: string
        description: Query.
      call: confluence.search
      with:
        query: '{{query}}'
      outputParameters:
      - name: title
        type: string
        mapping: $.results[0].title
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://gm.com.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: content
      path: /content/search
      operations:
      - name: search
        method: GET
Open in Framework → View in Fleet → confluence-article-search.yml

Checks whether a vehicle has open recalls by VIN using the GM safety compliance system, returning recall campaign IDs, descriptions, and remedy status.

naftiko: '0.5'
info:
  label: Vehicle Recall Check
  description: Checks whether a vehicle has open recalls by VIN using the GM safety compliance system, returning recall campaign IDs, descriptions, and remedy status.
  tags:
  - safety
  - recall
  - compliance
capability:
  exposes:
  - type: mcp
    namespace: safety-compliance
    port: 8080
    tools:
    - name: check-recalls
      description: Check open recalls for a vehicle by VIN.
      inputParameters:
      - name: vin
        in: body
        type: string
        description: The 17-character Vehicle Identification Number.
      call: recall-api.get-recalls
      with:
        vin: '{{vin}}'
      outputParameters:
      - name: open_recalls
        type: array
        mapping: $.recalls
      - name: recall_count
        type: number
        mapping: $.totalCount
  consumes:
  - type: http
    namespace: recall-api
    baseUri: https://safety-api.gm.com/compliance/v1
    authentication:
      type: bearer
      token: $secrets.gm_safety_token
    resources:
    - name: recalls
      path: /vehicles/{{vin}}/recalls
      inputParameters:
      - name: vin
        in: path
      operations:
      - name: get-recalls
        method: GET
Open in Framework → View in Fleet → vehicle-recall-check.yml

Sends a remote command (lock, unlock, start) to a connected vehicle via OnStar and logs the action in the fleet management system.

naftiko: '0.5'
info:
  label: Connected Vehicle Remote Command
  description: Sends a remote command (lock, unlock, start) to a connected vehicle via OnStar and logs the action in the fleet management system.
  tags:
  - connected-vehicle
  - onstar
  - fleet
  - remote-command
capability:
  exposes:
  - type: mcp
    namespace: remote-command
    port: 8080
    tools:
    - name: send-remote-command
      description: Send a remote command to a vehicle by VIN and log the action.
      inputParameters:
      - name: vin
        in: body
        type: string
        description: The 17-character Vehicle Identification Number.
      - name: command
        in: body
        type: string
        description: The remote command (lock, unlock, start, stop).
      - name: operator_id
        in: body
        type: string
        description: The fleet operator ID issuing the command.
      steps:
      - name: execute-command
        type: call
        call: onstar.send-command
        with:
          vin: '{{vin}}'
          command: '{{command}}'
      - name: log-action
        type: call
        call: fleet-api.log-command
        with:
          vin: '{{vin}}'
          command: '{{command}}'
          operator_id: '{{operator_id}}'
          status: '{{execute-command.result_status}}'
          timestamp: '{{execute-command.timestamp}}'
  consumes:
  - type: http
    namespace: onstar
    baseUri: https://api.onstar.com/connected/v2
    authentication:
      type: oauth2
      tokenUrl: https://api.onstar.com/oauth/token
      clientId: $secrets.onstar_client_id
      clientSecret: $secrets.onstar_client_secret
    resources:
    - name: commands
      path: /vehicles/{{vin}}/commands
      inputParameters:
      - name: vin
        in: path
      operations:
      - name: send-command
        method: POST
  - type: http
    namespace: fleet-api
    baseUri: https://fleet-api.gm.com/management/v1
    authentication:
      type: bearer
      token: $secrets.gm_fleet_token
    resources:
    - name: command-log
      path: /vehicles/{{vin}}/commands
      inputParameters:
      - name: vin
        in: path
      operations:
      - name: log-command
        method: POST
Open in Framework → View in Fleet → connected-vehicle-remote-command.yml

Checks New Relic APM at GM.

naftiko: '0.5'
info:
  label: New Relic APM Check
  description: Checks New Relic APM at GM.
  tags:
  - monitoring
  - new-relic
  - apm
capability:
  exposes:
  - type: mcp
    namespace: nr-apm
    port: 8080
    tools:
    - name: check-apm
      description: Check APM at GM.
      inputParameters:
      - name: app_id
        in: body
        type: string
        description: App ID.
      call: newrelic.get-app
      with:
        app_id: '{{app_id}}'
      outputParameters:
      - name: health
        type: string
        mapping: $.application.health_status
  consumes:
  - type: http
    namespace: newrelic
    baseUri: https://api.newrelic.com/v2
    authentication:
      type: bearer
      token: $secrets.new_relic_api_key
    resources:
    - name: applications
      path: /applications/{{app_id}}.json
      inputParameters:
      - name: app_id
        in: path
      operations:
      - name: get-app
        method: GET
Open in Framework → View in Fleet → new-relic-apm-check.yml

When an assembly line stop is triggered, fetches the stop details from the MES system, opens an urgent ServiceNow incident, and broadcasts an alert to the plant operations Slack channel and the plant manager in Microsoft Teams.

naftiko: '0.5'
info:
  label: Assembly Line Stop Notification
  description: When an assembly line stop is triggered, fetches the stop details from the MES system, opens an urgent ServiceNow incident, and broadcasts an alert to the plant operations Slack channel and the plant manager in Microsoft Teams.
  tags:
  - manufacturing
  - mes
  - servicenow
  - slack
  - microsoft-teams
  - plant-operations
capability:
  exposes:
  - type: mcp
    namespace: line-stop
    port: 8080
    tools:
    - name: handle-line-stop
      description: Given a line stop event ID and plant code, fetch details, open an incident, and alert operations.
      inputParameters:
      - name: stop_event_id
        in: body
        type: string
        description: The MES line stop event identifier.
      - name: plant_code
        in: body
        type: string
        description: The manufacturing plant code.
      - name: plant_manager_email
        in: body
        type: string
        description: The plant manager email address.
      steps:
      - name: get-stop-details
        type: call
        call: mes.get-line-stop
        with:
          event_id: '{{stop_event_id}}'
      - name: open-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: Line stop — {{get-stop-details.line_name}}, Plant {{plant_code}}
          description: 'Line stop event {{stop_event_id}} on {{get-stop-details.line_name}}. Reason: {{get-stop-details.stop_reason}}. Station: {{get-stop-details.station}}. Duration: {{get-stop-details.elapsed_minutes}} min.'
          urgency: '1'
          category: production_stoppage
          assigned_group: Plant_Maintenance_{{plant_code}}
      - name: alert-slack
        type: call
        call: slack.post-message
        with:
          channel: '#plant-{{plant_code}}-ops'
          text: 'LINE STOP: {{get-stop-details.line_name}} at station {{get-stop-details.station}}. Reason: {{get-stop-details.stop_reason}}. Incident: {{open-incident.number}}.'
      - name: alert-manager
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{plant_manager_email}}'
          text: 'Line Stop Alert: {{get-stop-details.line_name}} stopped at station {{get-stop-details.station}}. Reason: {{get-stop-details.stop_reason}}. Duration: {{get-stop-details.elapsed_minutes}} min. Incident: {{open-incident.number}}.'
  consumes:
  - type: http
    namespace: mes
    baseUri: https://mes-api.gm.com/production/v1
    authentication:
      type: bearer
      token: $secrets.gm_mes_token
    resources:
    - name: line-stops
      path: /events/{{event_id}}
      inputParameters:
      - name: event_id
        in: path
      operations:
      - name: get-line-stop
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://gm.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → assembly-line-stop-notification.yml

Maintains KB at GM by finding stale articles and notifying owners.

naftiko: '0.5'
info:
  label: Knowledge Base Maintenance Pipeline
  description: Maintains KB at GM by finding stale articles and notifying owners.
  tags:
  - knowledge-management
  - confluence
  - maintenance
capability:
  exposes:
  - type: mcp
    namespace: kb-maint
    port: 8080
    tools:
    - name: maintain-kb
      description: Maintain KB at GM.
      inputParameters:
      - name: space
        in: body
        type: string
        description: Confluence space.
      - name: stale_days
        in: body
        type: number
        description: Days threshold.
      steps:
      - name: find
        type: call
        call: confluence.search-stale
        with:
          space: '{{space}}'
          days: '{{stale_days}}'
      - name: notify
        type: call
        call: email.batch
        with:
          to: '{{find.owners}}'
          subject: KB review needed
      - name: flag
        type: call
        call: confluence.add-label
        with:
          pages: '{{find.ids}}'
          label: needs-review
      - name: report
        type: call
        call: slack.post-message
        with:
          channel: '#kb'
          text: 'KB: {{find.count}} stale articles'
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://gm.com.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: content
      path: /content/search
      operations:
      - name: search-stale
        method: GET
  - type: http
    namespace: email
    baseUri: https://email.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.email_token
    resources:
    - name: batch
      path: /send-batch
      operations:
      - name: batch
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → knowledge-base-maintenance-pipeline.yml

Pulls real-time energy consumption from the plant IoT platform, retrieves utility rate data, and updates the Tableau dashboard data source for the energy management team.

naftiko: '0.5'
info:
  label: Energy Management Dashboard Sync
  description: Pulls real-time energy consumption from the plant IoT platform, retrieves utility rate data, and updates the Tableau dashboard data source for the energy management team.
  tags:
  - manufacturing
  - energy
  - iot
  - tableau
  - sustainability
capability:
  exposes:
  - type: mcp
    namespace: energy-mgmt
    port: 8080
    tools:
    - name: sync-energy-data
      description: Given a plant code, pull energy consumption and utility rates, and update the Tableau data source.
      inputParameters:
      - name: plant_code
        in: body
        type: string
        description: The plant code.
      - name: date
        in: body
        type: string
        description: The date to sync (YYYY-MM-DD).
      steps:
      - name: get-consumption
        type: call
        call: iot-api.get-energy
        with:
          plant_code: '{{plant_code}}'
          date: '{{date}}'
      - name: get-rates
        type: call
        call: utility-api.get-rates
        with:
          plant_code: '{{plant_code}}'
          date: '{{date}}'
      - name: update-tableau
        type: call
        call: tableau.update-extract
        with:
          datasource_id: plant_energy_{{plant_code}}
  consumes:
  - type: http
    namespace: iot-api
    baseUri: https://iot-api.gm.com/sensors/v1
    authentication:
      type: bearer
      token: $secrets.gm_iot_token
    resources:
    - name: energy
      path: /plants/{{plant_code}}/energy
      inputParameters:
      - name: plant_code
        in: path
      - name: date
        in: query
      operations:
      - name: get-energy
        method: GET
  - type: http
    namespace: utility-api
    baseUri: https://utility-api.gm.com/rates/v1
    authentication:
      type: bearer
      token: $secrets.gm_utility_token
    resources:
    - name: rates
      path: /plants/{{plant_code}}/rates
      inputParameters:
      - name: plant_code
        in: path
      - name: date
        in: query
      operations:
      - name: get-rates
        method: GET
  - type: http
    namespace: tableau
    baseUri: https://tableau.gm.com/api/3.19
    authentication:
      type: bearer
      token: $secrets.tableau_token
    resources:
    - name: extracts
      path: /sites/gm/datasources/{{datasource_id}}/data
      inputParameters:
      - name: datasource_id
        in: path
      operations:
      - name: update-extract
        method: POST
Open in Framework → View in Fleet → energy-management-dashboard-sync.yml

Pulls emissions data from the plant environmental monitoring system, retrieves permit limits from the compliance database, and generates a variance report logged in SharePoint for the environmental team.

naftiko: '0.5'
info:
  label: Environmental Compliance Report
  description: Pulls emissions data from the plant environmental monitoring system, retrieves permit limits from the compliance database, and generates a variance report logged in SharePoint for the environmental team.
  tags:
  - manufacturing
  - environmental
  - compliance
  - sharepoint
capability:
  exposes:
  - type: mcp
    namespace: env-compliance
    port: 8080
    tools:
    - name: generate-emissions-report
      description: Given a plant code and reporting period, pull emissions data, check against permits, and store the report.
      inputParameters:
      - name: plant_code
        in: body
        type: string
        description: The manufacturing plant code.
      - name: period
        in: body
        type: string
        description: The reporting period (e.g., 2026-Q1).
      steps:
      - name: get-emissions
        type: call
        call: env-api.get-emissions
        with:
          plant_code: '{{plant_code}}'
          period: '{{period}}'
      - name: get-permit-limits
        type: call
        call: compliance-db.get-permits
        with:
          plant_code: '{{plant_code}}'
      - name: store-report
        type: call
        call: sharepoint.upload-file
        with:
          site_id: environmental_compliance
          folder_path: Reports/{{plant_code}}/{{period}}
          content: 'Emissions report for plant {{plant_code}}, {{period}}. VOC: {{get-emissions.voc_tons}} tons (limit: {{get-permit-limits.voc_limit}}). NOx: {{get-emissions.nox_tons}} tons (limit: {{get-permit-limits.nox_limit}}). CO2: {{get-emissions.co2_tons}} tons.'
  consumes:
  - type: http
    namespace: env-api
    baseUri: https://env-api.gm.com/monitoring/v1
    authentication:
      type: bearer
      token: $secrets.gm_env_token
    resources:
    - name: emissions
      path: /plants/{{plant_code}}/emissions
      inputParameters:
      - name: plant_code
        in: path
      - name: period
        in: query
      operations:
      - name: get-emissions
        method: GET
  - type: http
    namespace: compliance-db
    baseUri: https://compliance-api.gm.com/permits/v1
    authentication:
      type: bearer
      token: $secrets.gm_compliance_token
    resources:
    - name: permits
      path: /plants/{{plant_code}}/permits
      inputParameters:
      - name: plant_code
        in: path
      operations:
      - name: get-permits
        method: GET
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: files
      path: /{{site_id}}/drive/root:/{{folder_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      operations:
      - name: upload-file
        method: PUT
Open in Framework → View in Fleet → environmental-compliance-report.yml

Reviews access at GM via Okta, IAM, and Jira.

naftiko: '0.5'
info:
  label: Access Review Pipeline
  description: Reviews access at GM via Okta, IAM, and Jira.
  tags:
  - security
  - access-management
  - okta
  - compliance
capability:
  exposes:
  - type: mcp
    namespace: access-rev
    port: 8080
    tools:
    - name: review
      description: Review access at GM.
      inputParameters:
      - name: dept
        in: body
        type: string
        description: Department.
      steps:
      - name: ent
        type: call
        call: okta.get-users
        with:
          dept: '{{dept}}'
      - name: compare
        type: call
        call: iam.compare
        with:
          data: '{{ent.data}}'
      - name: flag
        type: call
        call: iam.flag
        with:
          violations: '{{compare.violations}}'
      - name: fix
        type: call
        call: jira.create-issue
        with:
          project: IAM
          summary: Violations in {{dept}}
  consumes:
  - type: http
    namespace: okta
    baseUri: https://gm.com.okta.com/api/v1
    authentication:
      type: bearer
      token: $secrets.okta_api_token
    resources:
    - name: users
      path: /users
      operations:
      - name: get-users
        method: GET
  - type: http
    namespace: iam
    baseUri: https://iam.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.iam_token
    resources:
    - name: reviews
      path: /compare
      operations:
      - name: compare
        method: POST
  - type: http
    namespace: jira
    baseUri: https://gm.com.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → access-review-pipeline.yml

Retrieves a warranty claim record from GM's warranty management system by claim number, returning VIN, repair code, dealer, labor hours, and claim status.

naftiko: '0.5'
info:
  label: Warranty Claim Lookup
  description: Retrieves a warranty claim record from GM's warranty management system by claim number, returning VIN, repair code, dealer, labor hours, and claim status.
  tags:
  - warranty
  - dealer
  - claim-management
capability:
  exposes:
  - type: mcp
    namespace: warranty
    port: 8080
    tools:
    - name: get-warranty-claim
      description: Look up a warranty claim by claim number. Returns VIN, repair code, dealer, labor hours, and status.
      inputParameters:
      - name: claim_number
        in: body
        type: string
        description: The warranty claim reference number.
      call: warranty-api.get-claim
      with:
        claim_number: '{{claim_number}}'
      outputParameters:
      - name: vin
        type: string
        mapping: $.claim.vin
      - name: repair_code
        type: string
        mapping: $.claim.repairCode
      - name: dealer_code
        type: string
        mapping: $.claim.dealerCode
      - name: status
        type: string
        mapping: $.claim.claimStatus
  consumes:
  - type: http
    namespace: warranty-api
    baseUri: https://warranty-api.gm.com/claims/v1
    authentication:
      type: bearer
      token: $secrets.gm_warranty_token
    resources:
    - name: claims
      path: /claims/{{claim_number}}
      inputParameters:
      - name: claim_number
        in: path
      operations:
      - name: get-claim
        method: GET
Open in Framework → View in Fleet → warranty-claim-lookup.yml

When a dealer requests a vehicle build sheet by VIN, retrieves the production order from SAP, fetches installed option codes from the vehicle configuration system, and delivers the compiled build sheet via Salesforce case update.

naftiko: '0.5'
info:
  label: Vehicle Build Sheet Orchestrator
  description: When a dealer requests a vehicle build sheet by VIN, retrieves the production order from SAP, fetches installed option codes from the vehicle configuration system, and delivers the compiled build sheet via Salesforce case update.
  tags:
  - manufacturing
  - dealer
  - sap
  - sap-s4hana
  - salesforce
  - vehicle-configuration
capability:
  exposes:
  - type: mcp
    namespace: build-sheet
    port: 8080
    tools:
    - name: generate-build-sheet
      description: Given a VIN and Salesforce case ID, compile the vehicle build sheet from SAP and configuration data and update the dealer case.
      inputParameters:
      - name: vin
        in: body
        type: string
        description: The 17-character Vehicle Identification Number.
      - name: case_id
        in: body
        type: string
        description: The Salesforce case ID for the dealer request.
      steps:
      - name: get-production-order
        type: call
        call: sap.get-order-by-vin
        with:
          vin: '{{vin}}'
      - name: get-options
        type: call
        call: vehicle-config.get-options
        with:
          vin: '{{vin}}'
      - name: update-case
        type: call
        call: salesforce.update-case
        with:
          case_id: '{{case_id}}'
          comment: 'Build sheet for VIN {{vin}}: Plant {{get-production-order.plant}}, Build Date {{get-production-order.build_date}}. Options: {{get-options.option_summary}}.'
          status: Resolved
  consumes:
  - type: http
    namespace: sap
    baseUri: https://gm-s4.sap.com/sap/opu/odata/sap/PP_PROD_ORDER_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    inputParameters:
    - name: Accept
      in: header
      value: application/json
    resources:
    - name: orders-by-vin
      path: /A_ProductionOrder?$filter=VIN eq '{{vin}}'
      inputParameters:
      - name: vin
        in: path
      operations:
      - name: get-order-by-vin
        method: GET
  - type: http
    namespace: vehicle-config
    baseUri: https://vehicle-config-api.gm.com/v1
    authentication:
      type: bearer
      token: $secrets.gm_config_token
    resources:
    - name: options
      path: /vehicles/{{vin}}/options
      inputParameters:
      - name: vin
        in: path
      operations:
      - name: get-options
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://gm.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
Open in Framework → View in Fleet → vehicle-build-sheet-orchestrator.yml

When a tooling change is requested for a stamping die, creates the engineering change order in SAP, opens a JIRA task for the tooling team, and notifies the manufacturing engineer in Microsoft Teams.

naftiko: '0.5'
info:
  label: Tooling Change Request Workflow
  description: When a tooling change is requested for a stamping die, creates the engineering change order in SAP, opens a JIRA task for the tooling team, and notifies the manufacturing engineer in Microsoft Teams.
  tags:
  - manufacturing
  - tooling
  - sap
  - sap-s4hana
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: tooling-change
    port: 8080
    tools:
    - name: submit-tooling-change
      description: Given tooling details, create an SAP change order, open a JIRA task, and notify the engineer.
      inputParameters:
      - name: tool_id
        in: body
        type: string
        description: The stamping die or tool identifier.
      - name: change_description
        in: body
        type: string
        description: Description of the requested tooling change.
      - name: part_number
        in: body
        type: string
        description: The affected part number.
      - name: engineer_email
        in: body
        type: string
        description: The manufacturing engineer email.
      steps:
      - name: create-eco
        type: call
        call: sap.create-change-order
        with:
          tool_id: '{{tool_id}}'
          description: '{{change_description}}'
          material: '{{part_number}}'
      - name: create-jira-task
        type: call
        call: jira.create-issue
        with:
          project: TOOLING
          issue_type: Task
          summary: Tooling change — {{tool_id}} for part {{part_number}}
          description: 'ECO: {{create-eco.eco_number}}. Change: {{change_description}}. Tool: {{tool_id}}, Part: {{part_number}}.'
      - name: notify-engineer
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{engineer_email}}'
          text: 'Tooling Change Request: Tool {{tool_id}}, Part {{part_number}}. ECO: {{create-eco.eco_number}}. JIRA: {{create-jira-task.key}}. Details: {{change_description}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://gm-s4.sap.com/sap/opu/odata/sap/PLM_ECO_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: change-orders
      path: /A_EngineeringChangeOrder
      operations:
      - name: create-change-order
        method: POST
  - type: http
    namespace: jira
    baseUri: https://gm-engineering.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → tooling-change-request-workflow.yml

Retrieves an autonomous driving test run summary from the Cruise test platform by run ID, returning miles driven, disengagement count, route, and weather conditions.

naftiko: '0.5'
info:
  label: Autonomous Vehicle Test Run Summary
  description: Retrieves an autonomous driving test run summary from the Cruise test platform by run ID, returning miles driven, disengagement count, route, and weather conditions.
  tags:
  - autonomous-driving
  - cruise
  - testing
capability:
  exposes:
  - type: mcp
    namespace: av-testing
    port: 8080
    tools:
    - name: get-test-run
      description: Retrieve an AV test run summary by run ID. Returns miles, disengagements, route, and conditions.
      inputParameters:
      - name: run_id
        in: body
        type: string
        description: The Cruise test run identifier.
      call: cruise.get-test-run
      with:
        run_id: '{{run_id}}'
      outputParameters:
      - name: miles_driven
        type: number
        mapping: $.run.milesDriven
      - name: disengagements
        type: number
        mapping: $.run.disengagementCount
      - name: route_name
        type: string
        mapping: $.run.routeName
      - name: weather
        type: string
        mapping: $.run.weatherCondition
  consumes:
  - type: http
    namespace: cruise
    baseUri: https://platform-api.cruise.com/testing/v1
    authentication:
      type: bearer
      token: $secrets.cruise_api_token
    resources:
    - name: test-runs
      path: /runs/{{run_id}}
      inputParameters:
      - name: run_id
        in: path
      operations:
      - name: get-test-run
        method: GET
Open in Framework → View in Fleet → autonomous-vehicle-test-run-summary.yml

When a vehicle completes production, updates the SAP delivery record, notifies the allocated dealer via the DMS, and sends the customer an estimated delivery date through Salesforce Marketing Cloud.

naftiko: '0.5'
info:
  label: Vehicle Delivery Coordination
  description: When a vehicle completes production, updates the SAP delivery record, notifies the allocated dealer via the DMS, and sends the customer an estimated delivery date through Salesforce Marketing Cloud.
  tags:
  - manufacturing
  - dealer
  - sap
  - sap-s4hana
  - dms
  - salesforce-marketing-cloud
  - delivery
capability:
  exposes:
  - type: mcp
    namespace: vehicle-delivery
    port: 8080
    tools:
    - name: coordinate-delivery
      description: Given a VIN and dealer code, update the SAP delivery, notify the dealer, and send customer ETA.
      inputParameters:
      - name: vin
        in: body
        type: string
        description: The VIN of the completed vehicle.
      - name: dealer_code
        in: body
        type: string
        description: The dealer BAC code.
      - name: estimated_arrival
        in: body
        type: string
        description: Estimated dealer arrival date in YYYY-MM-DD format.
      steps:
      - name: update-delivery
        type: call
        call: sap.update-delivery
        with:
          vin: '{{vin}}'
          delivery_date: '{{estimated_arrival}}'
          status: SHIPPED
      - name: notify-dealer
        type: call
        call: dms.send-notification
        with:
          dealer_code: '{{dealer_code}}'
          message: 'VIN {{vin}} has shipped. Estimated arrival: {{estimated_arrival}}.'
          notification_type: vehicle_shipment
      - name: get-customer
        type: call
        call: salesforce.get-order-by-vin
        with:
          vin: '{{vin}}'
      - name: send-customer-eta
        type: call
        call: sfmc.send-transactional
        with:
          email: '{{get-customer.customer_email}}'
          template: vehicle_delivery_eta
  consumes:
  - type: http
    namespace: sap
    baseUri: https://gm-s4.sap.com/sap/opu/odata/sap/VMS_DELIVERY_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: deliveries
      path: /A_VehicleDelivery('{{vin}}')
      inputParameters:
      - name: vin
        in: path
      operations:
      - name: update-delivery
        method: PATCH
  - type: http
    namespace: dms
    baseUri: https://dealer-api.gm.com/dms/v2
    authentication:
      type: bearer
      token: $secrets.gm_dms_token
    resources:
    - name: notifications
      path: /dealers/{{dealer_code}}/notifications
      inputParameters:
      - name: dealer_code
        in: path
      operations:
      - name: send-notification
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://gm.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: orders
      path: /sobjects/Vehicle_Order__c/vin/{{vin}}
      inputParameters:
      - name: vin
        in: path
      operations:
      - name: get-order-by-vin
        method: GET
  - type: http
    namespace: sfmc
    baseUri: https://mcj6cy1x9m-t.rest.marketingcloudapis.com
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: transactional
      path: /messaging/v1/email/messages
      operations:
      - name: send-transactional
        method: POST
Open in Framework → View in Fleet → vehicle-delivery-coordination.yml

Monitors cert expiry at GM.

naftiko: '0.5'
info:
  label: Certificate Expiry Pipeline
  description: Monitors cert expiry at GM.
  tags:
  - security
  - certificates
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: cert-monitor
    port: 8080
    tools:
    - name: check-certs
      description: Monitor certs at GM.
      inputParameters:
      - name: domains
        in: body
        type: string
        description: Domains to check.
      steps:
      - name: scan
        type: call
        call: cert-scanner.scan
        with:
          domains: '{{domains}}'
      - name: filter
        type: call
        call: analytics.filter-expiring
        with:
          certs: '{{scan.results}}'
      - name: ticket
        type: call
        call: jira.create-issue
        with:
          project: SEC
          summary: '{{filter.count}} certs expiring'
      - name: alert
        type: call
        call: slack.post-message
        with:
          channel: '#security'
          text: 'Cert alert: {{filter.count}} expiring'
  consumes:
  - type: http
    namespace: cert-scanner
    baseUri: https://certs.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.cert_token
    resources:
    - name: scans
      path: /scan
      operations:
      - name: scan
        method: POST
  - type: http
    namespace: jira
    baseUri: https://gm.com.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → certificate-expiry-pipeline.yml

Looks up a dealer technician's current certifications from the GM training platform by technician ID, returning active certifications, expiry dates, and pending courses.

naftiko: '0.5'
info:
  label: Dealer Technician Certification Tracker
  description: Looks up a dealer technician's current certifications from the GM training platform by technician ID, returning active certifications, expiry dates, and pending courses.
  tags:
  - dealer
  - training
  - certification
capability:
  exposes:
  - type: mcp
    namespace: dealer-training
    port: 8080
    tools:
    - name: get-technician-certs
      description: Retrieve a dealer technician's certifications by technician ID.
      inputParameters:
      - name: technician_id
        in: body
        type: string
        description: The GM training platform technician ID.
      call: training-api.get-certifications
      with:
        technician_id: '{{technician_id}}'
      outputParameters:
      - name: active_certs
        type: array
        mapping: $.certifications.active
      - name: expiring_soon
        type: array
        mapping: $.certifications.expiringSoon
      - name: pending_courses
        type: array
        mapping: $.certifications.pendingCourses
  consumes:
  - type: http
    namespace: training-api
    baseUri: https://training-api.gm.com/dealer-ed/v1
    authentication:
      type: bearer
      token: $secrets.gm_training_token
    resources:
    - name: certifications
      path: /technicians/{{technician_id}}/certifications
      inputParameters:
      - name: technician_id
        in: path
      operations:
      - name: get-certifications
        method: GET
Open in Framework → View in Fleet → dealer-technician-certification-tracker.yml

Analyzes budget variance at GM via Oracle, Workday, and Slack.

naftiko: '0.5'
info:
  label: Budget Variance Pipeline
  description: Analyzes budget variance at GM via Oracle, Workday, and Slack.
  tags:
  - finance
  - budget
  - oracle
  - workday
capability:
  exposes:
  - type: mcp
    namespace: budget-var
    port: 8080
    tools:
    - name: analyze-variance
      description: Check budget variance at GM.
      inputParameters:
      - name: cc
        in: body
        type: string
        description: Cost center.
      - name: period
        in: body
        type: string
        description: Period.
      steps:
      - name: actuals
        type: call
        call: oracle.get-actuals
        with:
          cc: '{{cc}}'
          period: '{{period}}'
      - name: budget
        type: call
        call: workday.get-budget
        with:
          cc: '{{cc}}'
      - name: compute
        type: call
        call: analytics.variance
        with:
          a: '{{actuals.total}}'
          b: '{{budget.total}}'
      - name: alert
        type: call
        call: slack.post-message
        with:
          channel: '#finance'
          text: 'Variance {{cc}}: ${{compute.variance}}'
  consumes:
  - type: http
    namespace: oracle
    baseUri: https://oracle.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.oracle_token
    resources:
    - name: fin
      path: /actuals
      operations:
      - name: get-actuals
        method: GET
  - type: http
    namespace: workday
    baseUri: https://wd5.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: budgets
      path: /budgets
      operations:
      - name: get-budget
        method: GET
  - type: http
    namespace: analytics
    baseUri: https://analytics.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.analytics_token
    resources:
    - name: var
      path: /compute
      operations:
      - name: variance
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → budget-variance-pipeline.yml

Tracks an inbound parts shipment from a tier-1 supplier by retrieving the shipment from the TMS, checking customs clearance status, and updating the SAP inbound delivery.

naftiko: '0.5'
info:
  label: Inbound Logistics Shipment Tracker
  description: Tracks an inbound parts shipment from a tier-1 supplier by retrieving the shipment from the TMS, checking customs clearance status, and updating the SAP inbound delivery.
  tags:
  - supply-chain
  - logistics
  - tms
  - sap
  - sap-s4hana
  - customs
capability:
  exposes:
  - type: mcp
    namespace: inbound-logistics
    port: 8080
    tools:
    - name: track-inbound-shipment
      description: Given a shipment ID, track location and customs status and update SAP delivery.
      inputParameters:
      - name: shipment_id
        in: body
        type: string
        description: The TMS shipment identifier.
      - name: sap_delivery_number
        in: body
        type: string
        description: The SAP inbound delivery number.
      steps:
      - name: get-shipment
        type: call
        call: tms.get-shipment
        with:
          shipment_id: '{{shipment_id}}'
      - name: check-customs
        type: call
        call: customs-api.get-clearance
        with:
          shipment_ref: '{{shipment_id}}'
      - name: update-sap-delivery
        type: call
        call: sap.update-inbound-delivery
        with:
          delivery_number: '{{sap_delivery_number}}'
          eta: '{{get-shipment.estimated_arrival}}'
          customs_status: '{{check-customs.clearance_status}}'
          current_location: '{{get-shipment.current_location}}'
  consumes:
  - type: http
    namespace: tms
    baseUri: https://tms-api.gm.com/logistics/v1
    authentication:
      type: bearer
      token: $secrets.gm_tms_token
    resources:
    - name: shipments
      path: /shipments/{{shipment_id}}
      inputParameters:
      - name: shipment_id
        in: path
      operations:
      - name: get-shipment
        method: GET
  - type: http
    namespace: customs-api
    baseUri: https://customs-api.gm.com/trade/v1
    authentication:
      type: bearer
      token: $secrets.gm_customs_token
    resources:
    - name: clearance
      path: /clearance/{{shipment_ref}}
      inputParameters:
      - name: shipment_ref
        in: path
      operations:
      - name: get-clearance
        method: GET
  - type: http
    namespace: sap
    baseUri: https://gm-s4.sap.com/sap/opu/odata/sap/MM_INBOUND_DELIVERY_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: deliveries
      path: /A_InboundDelivery('{{delivery_number}}')
      inputParameters:
      - name: delivery_number
        in: path
      operations:
      - name: update-inbound-delivery
        method: PATCH
Open in Framework → View in Fleet → inbound-logistics-shipment-tracker.yml

When a Salesforce case reaches a defined age threshold, pulls the case details, checks the customer vehicle warranty status, escalates in ServiceNow, and notifies the regional service director in Microsoft Teams.

naftiko: '0.5'
info:
  label: Customer Service Case Escalation
  description: When a Salesforce case reaches a defined age threshold, pulls the case details, checks the customer vehicle warranty status, escalates in ServiceNow, and notifies the regional service director in Microsoft Teams.
  tags:
  - customer-service
  - salesforce
  - warranty
  - servicenow
  - microsoft-teams
  - escalation
capability:
  exposes:
  - type: mcp
    namespace: case-escalation
    port: 8080
    tools:
    - name: escalate-service-case
      description: Given a Salesforce case ID and VIN, check warranty, escalate, and notify the director.
      inputParameters:
      - name: case_id
        in: body
        type: string
        description: The Salesforce case ID.
      - name: vin
        in: body
        type: string
        description: The customer vehicle VIN.
      - name: director_email
        in: body
        type: string
        description: The regional service director email.
      steps:
      - name: get-case
        type: call
        call: salesforce.get-case
        with:
          case_id: '{{case_id}}'
      - name: check-warranty
        type: call
        call: warranty-api.get-coverage
        with:
          vin: '{{vin}}'
      - name: escalate-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Escalated case: {{get-case.subject}}'
          description: 'Salesforce case {{case_id}} open {{get-case.age_days}} days. Customer: {{get-case.customer_name}}. VIN: {{vin}}. Warranty: {{check-warranty.coverage_status}}. Original issue: {{get-case.description}}.'
          urgency: '2'
          category: customer_escalation
          assigned_group: Customer_Experience
      - name: notify-director
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{director_email}}'
          text: 'Case Escalation: {{get-case.subject}} ({{case_id}}) open {{get-case.age_days}} days. Customer: {{get-case.customer_name}}, VIN {{vin}}. Warranty: {{check-warranty.coverage_status}}. Incident: {{escalate-incident.number}}.'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://gm.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: warranty-api
    baseUri: https://warranty-api.gm.com/claims/v1
    authentication:
      type: bearer
      token: $secrets.gm_warranty_token
    resources:
    - name: coverage
      path: /vehicles/{{vin}}/coverage
      inputParameters:
      - name: vin
        in: path
      operations:
      - name: get-coverage
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://gm.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → customer-service-case-escalation.yml

Retrieves a vehicle production order from SAP S/4HANA by order number and returns current build status, plant assignment, scheduled completion date, and VIN allocation.

naftiko: '0.5'
info:
  label: Vehicle Production Order Status
  description: Retrieves a vehicle production order from SAP S/4HANA by order number and returns current build status, plant assignment, scheduled completion date, and VIN allocation.
  tags:
  - manufacturing
  - erp
  - sap
  - sap-s4hana
  - production-order
capability:
  exposes:
  - type: mcp
    namespace: manufacturing
    port: 8080
    tools:
    - name: get-production-order
      description: Look up a SAP S/4HANA vehicle production order by order number. Returns build status, plant, scheduled date, and VIN.
      inputParameters:
      - name: order_number
        in: body
        type: string
        description: The SAP production order number.
      call: sap.get-production-order
      with:
        order_number: '{{order_number}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.d.OrderStatus
      - name: plant
        type: string
        mapping: $.d.ProductionPlant
      - name: scheduled_date
        type: string
        mapping: $.d.ScheduledCompletionDate
      - name: vin
        type: string
        mapping: $.d.VehicleIdentificationNumber
  consumes:
  - type: http
    namespace: sap
    baseUri: https://gm-s4.sap.com/sap/opu/odata/sap/PP_PROD_ORDER_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    inputParameters:
    - name: Accept
      in: header
      value: application/json
    - name: sap-client
      in: header
      value: '100'
    resources:
    - name: production-orders
      path: /A_ProductionOrder('{{order_number}}')
      inputParameters:
      - name: order_number
        in: path
      operations:
      - name: get-production-order
        method: GET
Open in Framework → View in Fleet → vehicle-production-order-status.yml

Checks ES index at GM.

naftiko: '0.5'
info:
  label: ES Index Health
  description: Checks ES index at GM.
  tags:
  - search
  - elasticsearch
  - infrastructure
capability:
  exposes:
  - type: mcp
    namespace: es-health
    port: 8080
    tools:
    - name: check-index
      description: Check ES index at GM.
      inputParameters:
      - name: index
        in: body
        type: string
        description: Index name.
      call: es.get-health
      with:
        index: '{{index}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.status
      - name: docs
        type: number
        mapping: $.docs.count
  consumes:
  - type: http
    namespace: es
    baseUri: https://es.gm.com:9200
    authentication:
      type: bearer
      token: $secrets.es_token
    resources:
    - name: indices
      path: /{{index}}/_stats
      inputParameters:
      - name: index
        in: path
      operations:
      - name: get-health
        method: GET
Open in Framework → View in Fleet → es-index-health.yml

Checks material availability in SAP S/4HANA by material number and plant, returning available stock, reserved quantity, and next planned receipt date.

naftiko: '0.5'
info:
  label: SAP Material Availability Check
  description: Checks material availability in SAP S/4HANA by material number and plant, returning available stock, reserved quantity, and next planned receipt date.
  tags:
  - supply-chain
  - erp
  - sap
  - sap-s4hana
  - inventory
capability:
  exposes:
  - type: mcp
    namespace: material-mgmt
    port: 8080
    tools:
    - name: check-material-availability
      description: Check material stock in SAP by material number and plant.
      inputParameters:
      - name: material_number
        in: body
        type: string
        description: The SAP material number.
      - name: plant
        in: body
        type: string
        description: The SAP plant code.
      call: sap.get-material-stock
      with:
        material_number: '{{material_number}}'
        plant: '{{plant}}'
      outputParameters:
      - name: available_stock
        type: number
        mapping: $.d.AvailableStock
      - name: reserved_qty
        type: number
        mapping: $.d.ReservedQuantity
      - name: next_receipt_date
        type: string
        mapping: $.d.NextPlannedReceiptDate
  consumes:
  - type: http
    namespace: sap
    baseUri: https://gm-s4.sap.com/sap/opu/odata/sap/MM_MATERIAL_STOCK_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    inputParameters:
    - name: Accept
      in: header
      value: application/json
    - name: sap-client
      in: header
      value: '100'
    resources:
    - name: material-stock
      path: /A_MaterialStock(Material='{{material_number}}',Plant='{{plant}}')
      inputParameters:
      - name: material_number
        in: path
      - name: plant
        in: path
      operations:
      - name: get-material-stock
        method: GET
Open in Framework → View in Fleet → sap-material-availability-check.yml

Detects infrastructure drift at GM via Terraform, Slack, and Jira.

naftiko: '0.5'
info:
  label: Drift Detection Pipeline
  description: Detects infrastructure drift at GM via Terraform, Slack, and Jira.
  tags:
  - infrastructure
  - terraform
  - drift-detection
  - devops
capability:
  exposes:
  - type: mcp
    namespace: drift-det
    port: 8080
    tools:
    - name: detect
      description: Detect drift at GM.
      inputParameters:
      - name: ws_id
        in: body
        type: string
        description: Workspace ID.
      - name: env
        in: body
        type: string
        description: Environment.
      steps:
      - name: plan
        type: call
        call: terraform.run
        with:
          ws: '{{ws_id}}'
      - name: check
        type: call
        call: terraform.get-plan
        with:
          run: '{{plan.id}}'
      - name: alert
        type: call
        call: slack.post-message
        with:
          channel: '#infra'
          text: 'Drift {{env}}: {{check.changes}} changes'
      - name: ticket
        type: call
        call: jira.create-issue
        with:
          project: INFRA
          summary: Drift in {{env}}
  consumes:
  - type: http
    namespace: terraform
    baseUri: https://app.terraform.io/api/v2
    authentication:
      type: bearer
      token: $secrets.terraform_token
    resources:
    - name: runs
      path: /runs
      operations:
      - name: run
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
  - type: http
    namespace: jira
    baseUri: https://gm.com.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → drift-detection-pipeline.yml

Pulls the latest OnStar diagnostic snapshot for a connected vehicle by VIN, returning battery health, tire pressure, oil life, and active DTC codes.

naftiko: '0.5'
info:
  label: Connected Vehicle Diagnostic Pull
  description: Pulls the latest OnStar diagnostic snapshot for a connected vehicle by VIN, returning battery health, tire pressure, oil life, and active DTC codes.
  tags:
  - connected-vehicle
  - onstar
  - diagnostics
  - telematics
capability:
  exposes:
  - type: mcp
    namespace: connected-vehicle
    port: 8080
    tools:
    - name: get-vehicle-diagnostics
      description: Retrieve the latest OnStar diagnostics for a VIN. Returns battery health, tire pressure, oil life, and DTCs.
      inputParameters:
      - name: vin
        in: body
        type: string
        description: The 17-character Vehicle Identification Number.
      call: onstar.get-diagnostics
      with:
        vin: '{{vin}}'
      outputParameters:
      - name: battery_voltage
        type: number
        mapping: $.diagnostics.batteryVoltage
      - name: oil_life_pct
        type: number
        mapping: $.diagnostics.oilLifePercent
      - name: tire_pressure
        type: object
        mapping: $.diagnostics.tirePressure
      - name: dtc_codes
        type: array
        mapping: $.diagnostics.activeDtcCodes
  consumes:
  - type: http
    namespace: onstar
    baseUri: https://api.onstar.com/connected/v2
    authentication:
      type: oauth2
      tokenUrl: https://api.onstar.com/oauth/token
      clientId: $secrets.onstar_client_id
      clientSecret: $secrets.onstar_client_secret
    resources:
    - name: diagnostics
      path: /vehicles/{{vin}}/diagnostics
      inputParameters:
      - name: vin
        in: path
      operations:
      - name: get-diagnostics
        method: GET
Open in Framework → View in Fleet → connected-vehicle-diagnostic-pull.yml

Retrieves the current incentive programs applicable to a dealer by dealer code and vehicle model from the GM incentive management system.

naftiko: '0.5'
info:
  label: Dealer Incentive Program Lookup
  description: Retrieves the current incentive programs applicable to a dealer by dealer code and vehicle model from the GM incentive management system.
  tags:
  - dealer
  - sales
  - incentives
capability:
  exposes:
  - type: mcp
    namespace: dealer-incentives
    port: 8080
    tools:
    - name: get-dealer-incentives
      description: Retrieve active incentive programs for a dealer and vehicle model.
      inputParameters:
      - name: dealer_code
        in: body
        type: string
        description: The GM dealer BAC code.
      - name: model
        in: body
        type: string
        description: The vehicle model name.
      call: incentive-api.get-programs
      with:
        dealer_code: '{{dealer_code}}'
        model: '{{model}}'
      outputParameters:
      - name: programs
        type: array
        mapping: $.incentives.activePrograms
      - name: total_available
        type: number
        mapping: $.incentives.totalAvailableAmount
  consumes:
  - type: http
    namespace: incentive-api
    baseUri: https://incentive-api.gm.com/programs/v1
    authentication:
      type: bearer
      token: $secrets.gm_incentive_token
    resources:
    - name: programs
      path: /dealers/{{dealer_code}}/models/{{model}}/incentives
      inputParameters:
      - name: dealer_code
        in: path
      - name: model
        in: path
      operations:
      - name: get-programs
        method: GET
Open in Framework → View in Fleet → dealer-incentive-program-lookup.yml

When a dealer submits a warranty repair, validates the VIN against open recalls, retrieves the dealer profile from DMS, files the warranty claim, and updates the Salesforce service case with claim details.

naftiko: '0.5'
info:
  label: Dealer Warranty Claim Orchestrator
  description: When a dealer submits a warranty repair, validates the VIN against open recalls, retrieves the dealer profile from DMS, files the warranty claim, and updates the Salesforce service case with claim details.
  tags:
  - warranty
  - dealer
  - recall
  - salesforce
  - dms
capability:
  exposes:
  - type: mcp
    namespace: warranty-processing
    port: 8080
    tools:
    - name: process-warranty-claim
      description: Given a VIN, dealer code, repair code, and Salesforce case ID, validate recalls, file the claim, and update the case.
      inputParameters:
      - name: vin
        in: body
        type: string
        description: The VIN of the repaired vehicle.
      - name: dealer_code
        in: body
        type: string
        description: The GM dealer BAC code.
      - name: repair_code
        in: body
        type: string
        description: The warranty repair operation code.
      - name: case_id
        in: body
        type: string
        description: The Salesforce service case ID.
      steps:
      - name: check-recalls
        type: call
        call: recall-api.get-recalls
        with:
          vin: '{{vin}}'
      - name: get-dealer
        type: call
        call: dms.get-dealer
        with:
          dealer_code: '{{dealer_code}}'
      - name: file-claim
        type: call
        call: warranty-api.create-claim
        with:
          vin: '{{vin}}'
          dealer_code: '{{dealer_code}}'
          repair_code: '{{repair_code}}'
          recall_ids: '{{check-recalls.open_recall_ids}}'
      - name: update-case
        type: call
        call: salesforce.update-case
        with:
          case_id: '{{case_id}}'
          comment: 'Warranty claim {{file-claim.claim_number}} filed for VIN {{vin}} at {{get-dealer.dealer_name}}. Repair: {{repair_code}}. Open recalls addressed: {{check-recalls.recall_count}}.'
          status: In Progress
  consumes:
  - type: http
    namespace: recall-api
    baseUri: https://safety-api.gm.com/compliance/v1
    authentication:
      type: bearer
      token: $secrets.gm_safety_token
    resources:
    - name: recalls
      path: /vehicles/{{vin}}/recalls
      inputParameters:
      - name: vin
        in: path
      operations:
      - name: get-recalls
        method: GET
  - type: http
    namespace: dms
    baseUri: https://dealer-api.gm.com/dms/v2
    authentication:
      type: bearer
      token: $secrets.gm_dms_token
    resources:
    - name: dealers
      path: /dealers/{{dealer_code}}
      inputParameters:
      - name: dealer_code
        in: path
      operations:
      - name: get-dealer
        method: GET
  - type: http
    namespace: warranty-api
    baseUri: https://warranty-api.gm.com/claims/v1
    authentication:
      type: bearer
      token: $secrets.gm_warranty_token
    resources:
    - name: claims
      path: /claims
      operations:
      - name: create-claim
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://gm.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
Open in Framework → View in Fleet → dealer-warranty-claim-orchestrator.yml

Monitors data pipelines at GM via Databricks, Snowflake, Slack, and ServiceNow.

naftiko: '0.5'
info:
  label: Data Pipeline Monitor Pipeline
  description: Monitors data pipelines at GM via Databricks, Snowflake, Slack, and ServiceNow.
  tags:
  - data-engineering
  - databricks
  - monitoring
  - slack
capability:
  exposes:
  - type: mcp
    namespace: pipeline-mon
    port: 8080
    tools:
    - name: monitor
      description: Monitor pipelines at GM.
      inputParameters:
      - name: pipeline_id
        in: body
        type: string
        description: Pipeline ID.
      steps:
      - name: status
        type: call
        call: databricks.get-run
        with:
          id: '{{pipeline_id}}'
      - name: quality
        type: call
        call: snowflake.query
        with:
          query: SELECT COUNT(*) FROM out WHERE p='{{pipeline_id}}'
      - name: alert
        type: call
        call: slack.post-message
        with:
          channel: '#data'
          text: 'Pipeline {{pipeline_id}}: {{status.state}}'
      - name: incident
        type: call
        call: servicenow.create-incident
        with:
          desc: Pipeline {{pipeline_id}} issue
  consumes:
  - type: http
    namespace: databricks
    baseUri: https://gm.com.cloud.databricks.com/api/2.1
    authentication:
      type: bearer
      token: $secrets.databricks_token
    resources:
    - name: jobs
      path: /jobs/runs/get
      operations:
      - name: get-run
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://gm.com.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://gm.com.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → data-pipeline-monitor-pipeline.yml

Checks Terraform workspace at GM.

naftiko: '0.5'
info:
  label: Terraform Workspace Check
  description: Checks Terraform workspace at GM.
  tags:
  - infrastructure
  - terraform
  - iac
capability:
  exposes:
  - type: mcp
    namespace: tf-ws
    port: 8080
    tools:
    - name: check-ws
      description: Check workspace at GM.
      inputParameters:
      - name: workspace_id
        in: body
        type: string
        description: Workspace ID.
      call: terraform.get-ws
      with:
        workspace_id: '{{workspace_id}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.data.attributes.name
  consumes:
  - type: http
    namespace: terraform
    baseUri: https://app.terraform.io/api/v2
    authentication:
      type: bearer
      token: $secrets.terraform_token
    resources:
    - name: workspaces
      path: /workspaces/{{workspace_id}}
      inputParameters:
      - name: workspace_id
        in: path
      operations:
      - name: get-ws
        method: GET
Open in Framework → View in Fleet → terraform-workspace-check.yml

When a SAP Ariba requisition exceeds a spend threshold, routes for manager approval via Workday and notifies the requestor in Microsoft Teams with approval status.

naftiko: '0.5'
info:
  label: Procurement Requisition Approval
  description: When a SAP Ariba requisition exceeds a spend threshold, routes for manager approval via Workday and notifies the requestor in Microsoft Teams with approval status.
  tags:
  - procurement
  - sap-ariba
  - workday
  - microsoft-teams
  - approval
capability:
  exposes:
  - type: mcp
    namespace: procurement-approval
    port: 8080
    tools:
    - name: route-requisition-approval
      description: Given an Ariba requisition ID and requestor employee ID, resolve the approver and notify both parties.
      inputParameters:
      - name: requisition_id
        in: body
        type: string
        description: The SAP Ariba requisition identifier.
      - name: requestor_employee_id
        in: body
        type: string
        description: The Workday employee ID of the requestor.
      - name: spend_amount
        in: body
        type: number
        description: The total spend amount.
      steps:
      - name: get-requisition
        type: call
        call: ariba.get-requisition
        with:
          requisition_id: '{{requisition_id}}'
      - name: get-requestor
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{requestor_employee_id}}'
      - name: get-manager
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{get-requestor.manager_id}}'
      - name: notify-approver
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-manager.work_email}}'
          text: 'Approval Required: Ariba requisition {{requisition_id}} from {{get-requestor.full_name}} for ${{spend_amount}}. Vendor: {{get-requisition.vendor_name}}.'
      - name: notify-requestor
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-requestor.work_email}}'
          text: Your requisition {{requisition_id}} (${{spend_amount}}) has been routed to {{get-manager.full_name}} for approval.
  consumes:
  - type: http
    namespace: ariba
    baseUri: https://openapi.ariba.com/api/purchase-req/v1
    authentication:
      type: bearer
      token: $secrets.ariba_token
    resources:
    - name: requisitions
      path: /requisitions/{{requisition_id}}
      inputParameters:
      - name: requisition_id
        in: path
      operations:
      - name: get-requisition
        method: GET
  - type: http
    namespace: workday
    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: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → procurement-requisition-approval.yml

When an autonomous vehicle disengagement is logged in the Cruise platform, retrieves the event telemetry, creates a JIRA investigation ticket, and alerts the AV safety team in Slack.

naftiko: '0.5'
info:
  label: AV Disengagement Incident Workflow
  description: When an autonomous vehicle disengagement is logged in the Cruise platform, retrieves the event telemetry, creates a JIRA investigation ticket, and alerts the AV safety team in Slack.
  tags:
  - autonomous-driving
  - cruise
  - jira
  - slack
  - safety
capability:
  exposes:
  - type: mcp
    namespace: av-disengagement
    port: 8080
    tools:
    - name: handle-disengagement
      description: Given a Cruise disengagement event ID, pull telemetry, create a JIRA ticket, and alert the safety team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The Cruise disengagement event ID.
      steps:
      - name: get-event
        type: call
        call: cruise.get-disengagement
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project: AVSAFETY
          issue_type: Investigation
          summary: Disengagement — {{get-event.vehicle_id}}, {{get-event.location}}
          description: 'Disengagement event {{event_id}} at {{get-event.timestamp}}. Reason: {{get-event.reason}}. Speed: {{get-event.speed_mph}} mph. Weather: {{get-event.weather}}. Location: {{get-event.location}}.'
      - name: alert-team
        type: call
        call: slack.post-message
        with:
          channel: '#av-safety'
          text: 'Disengagement: Vehicle {{get-event.vehicle_id}} at {{get-event.location}}. Reason: {{get-event.reason}}. JIRA: {{create-ticket.key}}.'
  consumes:
  - type: http
    namespace: cruise
    baseUri: https://platform-api.cruise.com/testing/v1
    authentication:
      type: bearer
      token: $secrets.cruise_api_token
    resources:
    - name: disengagements
      path: /disengagements/{{event_id}}
      inputParameters:
      - name: event_id
        in: path
      operations:
      - name: get-disengagement
        method: GET
  - type: http
    namespace: jira
    baseUri: https://gm-engineering.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
    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
Open in Framework → View in Fleet → av-disengagement-incident-workflow.yml

Checks Datadog monitor at GM.

naftiko: '0.5'
info:
  label: Datadog Monitor Check
  description: Checks Datadog monitor at GM.
  tags:
  - monitoring
  - datadog
  - observability
capability:
  exposes:
  - type: mcp
    namespace: dd-monitor
    port: 8080
    tools:
    - name: check-monitor
      description: Check monitor at GM.
      inputParameters:
      - name: monitor_id
        in: body
        type: string
        description: Monitor ID.
      call: datadog.get-monitor
      with:
        monitor_id: '{{monitor_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.overall_state
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: monitors
      path: /monitor/{{monitor_id}}
      inputParameters:
      - name: monitor_id
        in: path
      operations:
      - name: get-monitor
        method: GET
Open in Framework → View in Fleet → datadog-monitor-check.yml

Traces a battery pack by serial number through the Ultium manufacturing system, returning cell lot origins, module assembly records, and final pack test results.

naftiko: '0.5'
info:
  label: Battery Pack Serial Traceability
  description: Traces a battery pack by serial number through the Ultium manufacturing system, returning cell lot origins, module assembly records, and final pack test results.
  tags:
  - ev
  - battery
  - traceability
  - ultium
capability:
  exposes:
  - type: mcp
    namespace: battery-trace
    port: 8080
    tools:
    - name: trace-battery-pack
      description: Trace a battery pack by serial number through manufacturing.
      inputParameters:
      - name: pack_serial
        in: body
        type: string
        description: The battery pack serial number.
      call: ultium.get-pack-trace
      with:
        pack_serial: '{{pack_serial}}'
      outputParameters:
      - name: cell_lots
        type: array
        mapping: $.trace.cellLots
      - name: module_assembly_date
        type: string
        mapping: $.trace.moduleAssemblyDate
      - name: pack_test_result
        type: string
        mapping: $.trace.packTestResult
      - name: pack_capacity_kwh
        type: number
        mapping: $.trace.packCapacityKwh
  consumes:
  - type: http
    namespace: ultium
    baseUri: https://ultium-api.gm.com/manufacturing/v1
    authentication:
      type: bearer
      token: $secrets.ultium_api_token
    resources:
    - name: pack-trace
      path: /packs/{{pack_serial}}/trace
      inputParameters:
      - name: pack_serial
        in: path
      operations:
      - name: get-pack-trace
        method: GET
Open in Framework → View in Fleet → battery-pack-serial-traceability.yml

Checks on-call at GM.

naftiko: '0.5'
info:
  label: PagerDuty On-Call Check
  description: Checks on-call at GM.
  tags:
  - incident-management
  - pagerduty
  - on-call
capability:
  exposes:
  - type: mcp
    namespace: pd-oncall
    port: 8080
    tools:
    - name: get-oncall
      description: Check on-call at GM.
      inputParameters:
      - name: schedule_id
        in: body
        type: string
        description: Schedule ID.
      call: pagerduty.get-oncall
      with:
        schedule_id: '{{schedule_id}}'
      outputParameters:
      - name: user
        type: string
        mapping: $.oncalls[0].user.summary
  consumes:
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: oncalls
      path: /oncalls
      operations:
      - name: get-oncall
        method: GET
Open in Framework → View in Fleet → pagerduty-on-call-check.yml

When a quality escape is identified at a plant, retrieves the production order from SAP, queries affected VINs from the vehicle tracking system, opens a quality incident in ServiceNow, and alerts the quality team in Microsoft Teams.

naftiko: '0.5'
info:
  label: Plant Quality Escape Workflow
  description: When a quality escape is identified at a plant, retrieves the production order from SAP, queries affected VINs from the vehicle tracking system, opens a quality incident in ServiceNow, and alerts the quality team in Microsoft Teams.
  tags:
  - manufacturing
  - quality
  - sap
  - sap-s4hana
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: quality-escape
    port: 8080
    tools:
    - name: handle-quality-escape
      description: Given a production order number and defect description, identify affected VINs, open a quality incident, and alert the team.
      inputParameters:
      - name: order_number
        in: body
        type: string
        description: The SAP production order number.
      - name: defect_description
        in: body
        type: string
        description: Description of the quality defect found.
      - name: plant_code
        in: body
        type: string
        description: The manufacturing plant code.
      steps:
      - name: get-order
        type: call
        call: sap.get-production-order
        with:
          order_number: '{{order_number}}'
      - name: get-affected-vins
        type: call
        call: vehicle-tracking.get-vins-by-order
        with:
          order_number: '{{order_number}}'
      - name: open-quality-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: Quality escape — Plant {{plant_code}}, Order {{order_number}}
          description: 'Defect: {{defect_description}}. Production order: {{order_number}}. Affected VINs: {{get-affected-vins.vin_count}}. Model: {{get-order.material_description}}.'
          category: quality_escape
          urgency: '2'
          assigned_group: Plant_Quality_{{plant_code}}
      - name: alert-quality-team
        type: call
        call: msteams.send-message
        with:
          recipient_upn: quality-team-{{plant_code}}@gm.com
          text: 'QUALITY ESCAPE: Plant {{plant_code}}, Order {{order_number}}. {{get-affected-vins.vin_count}} VINs affected. Defect: {{defect_description}}. Incident: {{open-quality-incident.number}}.'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://gm-s4.sap.com/sap/opu/odata/sap/PP_PROD_ORDER_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    inputParameters:
    - name: Accept
      in: header
      value: application/json
    resources:
    - name: production-orders
      path: /A_ProductionOrder('{{order_number}}')
      inputParameters:
      - name: order_number
        in: path
      operations:
      - name: get-production-order
        method: GET
  - type: http
    namespace: vehicle-tracking
    baseUri: https://vehicle-tracking-api.gm.com/v1
    authentication:
      type: bearer
      token: $secrets.gm_tracking_token
    resources:
    - name: vins
      path: /orders/{{order_number}}/vins
      inputParameters:
      - name: order_number
        in: path
      operations:
      - name: get-vins-by-order
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://gm.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → plant-quality-escape-workflow.yml

Checks Redis at GM.

naftiko: '0.5'
info:
  label: Redis Cache Status
  description: Checks Redis at GM.
  tags:
  - caching
  - redis
  - infrastructure
capability:
  exposes:
  - type: mcp
    namespace: redis
    port: 8080
    tools:
    - name: check-cache
      description: Check Redis at GM.
      inputParameters:
      - name: instance
        in: body
        type: string
        description: Instance ID.
      call: redis.get-info
      with:
        instance: '{{instance}}'
      outputParameters:
      - name: memory
        type: string
        mapping: $.used_memory_human
  consumes:
  - type: http
    namespace: redis
    baseUri: https://redis.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.redis_token
    resources:
    - name: instances
      path: /instances/{{instance}}/info
      inputParameters:
      - name: instance
        in: path
      operations:
      - name: get-info
        method: GET
Open in Framework → View in Fleet → redis-cache-status.yml

Queries the Ultium Cells battery inventory system to return current cell stock levels, lot traceability, and warehouse location for a given battery cell part number.

naftiko: '0.5'
info:
  label: EV Battery Cell Inventory Check
  description: Queries the Ultium Cells battery inventory system to return current cell stock levels, lot traceability, and warehouse location for a given battery cell part number.
  tags:
  - ev
  - battery
  - inventory
  - supply-chain
capability:
  exposes:
  - type: mcp
    namespace: ev-battery
    port: 8080
    tools:
    - name: check-battery-inventory
      description: Query battery cell inventory by part number. Returns stock quantity, lot numbers, and warehouse location.
      inputParameters:
      - name: part_number
        in: body
        type: string
        description: The Ultium battery cell part number.
      call: battery-inventory.get-stock
      with:
        part_number: '{{part_number}}'
      outputParameters:
      - name: quantity_on_hand
        type: number
        mapping: $.inventory.quantityOnHand
      - name: lot_number
        type: string
        mapping: $.inventory.lotNumber
      - name: warehouse
        type: string
        mapping: $.inventory.warehouseCode
  consumes:
  - type: http
    namespace: battery-inventory
    baseUri: https://ultium-api.gm.com/inventory/v1
    authentication:
      type: bearer
      token: $secrets.ultium_api_token
    resources:
    - name: stock
      path: /cells/{{part_number}}/stock
      inputParameters:
      - name: part_number
        in: path
      operations:
      - name: get-stock
        method: GET
Open in Framework → View in Fleet → ev-battery-cell-inventory-check.yml

When OnStar detects a vehicle crash event, retrieves crash telemetry, looks up the owner in Salesforce, creates an emergency case, and dispatches a notification to the OnStar advisor queue.

naftiko: '0.5'
info:
  label: Vehicle Crash Notification Response
  description: When OnStar detects a vehicle crash event, retrieves crash telemetry, looks up the owner in Salesforce, creates an emergency case, and dispatches a notification to the OnStar advisor queue.
  tags:
  - connected-vehicle
  - onstar
  - safety
  - salesforce
  - emergency-response
capability:
  exposes:
  - type: mcp
    namespace: crash-response
    port: 8080
    tools:
    - name: process-crash-event
      description: Given a VIN and crash event ID, pull telemetry, look up the owner, create an emergency case, and dispatch.
      inputParameters:
      - name: vin
        in: body
        type: string
        description: The VIN of the crashed vehicle.
      - name: event_id
        in: body
        type: string
        description: The OnStar crash event identifier.
      steps:
      - name: get-crash-data
        type: call
        call: onstar.get-crash-event
        with:
          vin: '{{vin}}'
          event_id: '{{event_id}}'
      - name: get-owner
        type: call
        call: salesforce.get-owner-by-vin
        with:
          vin: '{{vin}}'
      - name: create-case
        type: call
        call: salesforce.create-case
        with:
          subject: Crash Event — VIN {{vin}}
          description: 'Crash detected. Severity: {{get-crash-data.severity}}. Location: {{get-crash-data.latitude}}, {{get-crash-data.longitude}}. Speed at impact: {{get-crash-data.impact_speed_mph}} mph. Airbags: {{get-crash-data.airbags_deployed}}. Owner: {{get-owner.customer_name}}.'
          priority: Critical
          type: Emergency
      - name: dispatch-advisor
        type: call
        call: onstar.dispatch-advisor
        with:
          event_id: '{{event_id}}'
          case_id: '{{create-case.case_id}}'
          owner_phone: '{{get-owner.phone}}'
  consumes:
  - type: http
    namespace: onstar
    baseUri: https://api.onstar.com/connected/v2
    authentication:
      type: oauth2
      tokenUrl: https://api.onstar.com/oauth/token
      clientId: $secrets.onstar_client_id
      clientSecret: $secrets.onstar_client_secret
    resources:
    - name: crash-events
      path: /vehicles/{{vin}}/crash-events/{{event_id}}
      inputParameters:
      - name: vin
        in: path
      - name: event_id
        in: path
      operations:
      - name: get-crash-event
        method: GET
    - name: advisor-dispatch
      path: /crash-events/{{event_id}}/dispatch
      inputParameters:
      - name: event_id
        in: path
      operations:
      - name: dispatch-advisor
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://gm.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: owners
      path: /sobjects/Vehicle_Ownership__c/vin/{{vin}}
      inputParameters:
      - name: vin
        in: path
      operations:
      - name: get-owner-by-vin
        method: GET
    - name: cases
      path: /sobjects/Case
      operations:
      - name: create-case
        method: POST
Open in Framework → View in Fleet → vehicle-crash-notification-response.yml

Checks IT incident in ServiceNow for GM.

naftiko: '0.5'
info:
  label: ServiceNow Incident Detail Check
  description: Checks IT incident in ServiceNow for GM.
  tags:
  - it-service
  - servicenow
  - incident-management
capability:
  exposes:
  - type: mcp
    namespace: snow-incident
    port: 8080
    tools:
    - name: check-incident
      description: Check incident at GM.
      inputParameters:
      - name: incident_number
        in: body
        type: string
        description: Incident number.
      call: servicenow.get-incident
      with:
        number: '{{incident_number}}'
      outputParameters:
      - name: state
        type: string
        mapping: $.result.state
      - name: priority
        type: string
        mapping: $.result.priority
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://gm.com.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: get-incident
        method: GET
Open in Framework → View in Fleet → servicenow-incident-detail-check.yml

Retrieves a charging session history for a fleet vehicle from the Ultium charging platform by VIN, enriches it with vehicle info from OnStar, and posts the summary to a Salesforce fleet account.

naftiko: '0.5'
info:
  label: Fleet EV Charging Session Report
  description: Retrieves a charging session history for a fleet vehicle from the Ultium charging platform by VIN, enriches it with vehicle info from OnStar, and posts the summary to a Salesforce fleet account.
  tags:
  - fleet
  - ev
  - charging
  - onstar
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: fleet-charging
    port: 8080
    tools:
    - name: generate-charging-report
      description: Given a VIN and Salesforce fleet account ID, compile charging session data and update the fleet account.
      inputParameters:
      - name: vin
        in: body
        type: string
        description: The fleet vehicle VIN.
      - name: account_id
        in: body
        type: string
        description: The Salesforce fleet account ID.
      - name: date_from
        in: body
        type: string
        description: Start date for the report period (YYYY-MM-DD).
      - name: date_to
        in: body
        type: string
        description: End date for the report period (YYYY-MM-DD).
      steps:
      - name: get-sessions
        type: call
        call: charging-api.get-sessions
        with:
          vin: '{{vin}}'
          from: '{{date_from}}'
          to: '{{date_to}}'
      - name: get-vehicle-info
        type: call
        call: onstar.get-vehicle
        with:
          vin: '{{vin}}'
      - name: update-account
        type: call
        call: salesforce.update-account
        with:
          account_id: '{{account_id}}'
          note: 'Charging report for {{get-vehicle-info.model_year}} {{get-vehicle-info.model_name}} ({{vin}}), {{date_from}} to {{date_to}}: {{get-sessions.total_sessions}} sessions, {{get-sessions.total_kwh}} kWh consumed, ${{get-sessions.total_cost}} total cost.'
  consumes:
  - type: http
    namespace: charging-api
    baseUri: https://charging-api.gm.com/ultium/v1
    authentication:
      type: bearer
      token: $secrets.gm_charging_token
    resources:
    - name: sessions
      path: /vehicles/{{vin}}/sessions
      inputParameters:
      - name: vin
        in: path
      - name: from
        in: query
      - name: to
        in: query
      operations:
      - name: get-sessions
        method: GET
  - type: http
    namespace: onstar
    baseUri: https://api.onstar.com/connected/v2
    authentication:
      type: oauth2
      tokenUrl: https://api.onstar.com/oauth/token
      clientId: $secrets.onstar_client_id
      clientSecret: $secrets.onstar_client_secret
    resources:
    - name: vehicles
      path: /vehicles/{{vin}}
      inputParameters:
      - name: vin
        in: path
      operations:
      - name: get-vehicle
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://gm.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /sobjects/Account/{{account_id}}
      inputParameters:
      - name: account_id
        in: path
      operations:
      - name: update-account
        method: PATCH
Open in Framework → View in Fleet → fleet-ev-charging-session-report.yml

Compiles a dealer's monthly performance by pulling sales data from Salesforce, service metrics from DMS, and customer satisfaction scores, then uploads the report to SharePoint.

naftiko: '0.5'
info:
  label: Dealer Monthly Performance Report
  description: Compiles a dealer's monthly performance by pulling sales data from Salesforce, service metrics from DMS, and customer satisfaction scores, then uploads the report to SharePoint.
  tags:
  - dealer
  - salesforce
  - dms
  - sharepoint
  - performance
capability:
  exposes:
  - type: mcp
    namespace: dealer-performance
    port: 8080
    tools:
    - name: generate-dealer-report
      description: Given a dealer code and month, compile sales, service, and satisfaction data and upload to SharePoint.
      inputParameters:
      - name: dealer_code
        in: body
        type: string
        description: The GM dealer BAC code.
      - name: month
        in: body
        type: string
        description: The reporting month (YYYY-MM).
      steps:
      - name: get-sales
        type: call
        call: salesforce.get-dealer-sales
        with:
          dealer_code: '{{dealer_code}}'
          month: '{{month}}'
      - name: get-service-metrics
        type: call
        call: dms.get-service-metrics
        with:
          dealer_code: '{{dealer_code}}'
          month: '{{month}}'
      - name: get-csat
        type: call
        call: survey-api.get-dealer-scores
        with:
          dealer_code: '{{dealer_code}}'
          month: '{{month}}'
      - name: upload-report
        type: call
        call: sharepoint.upload-file
        with:
          site_id: dealer_performance
          folder_path: Reports/{{dealer_code}}/{{month}}
          content: 'Dealer {{dealer_code}} — {{month}}. Units sold: {{get-sales.units_sold}}. Revenue: ${{get-sales.revenue}}. Service ROs: {{get-service-metrics.repair_orders}}. Avg CSAT: {{get-csat.overall_score}}/5.'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://gm.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: dealer-sales
      path: /sobjects/Dealer_Sales__c/dealer/{{dealer_code}}
      inputParameters:
      - name: dealer_code
        in: path
      - name: month
        in: query
      operations:
      - name: get-dealer-sales
        method: GET
  - type: http
    namespace: dms
    baseUri: https://dealer-api.gm.com/dms/v2
    authentication:
      type: bearer
      token: $secrets.gm_dms_token
    resources:
    - name: service-metrics
      path: /dealers/{{dealer_code}}/metrics
      inputParameters:
      - name: dealer_code
        in: path
      - name: month
        in: query
      operations:
      - name: get-service-metrics
        method: GET
  - type: http
    namespace: survey-api
    baseUri: https://survey-api.gm.com/satisfaction/v1
    authentication:
      type: bearer
      token: $secrets.gm_survey_token
    resources:
    - name: scores
      path: /dealers/{{dealer_code}}/scores
      inputParameters:
      - name: dealer_code
        in: path
      - name: month
        in: query
      operations:
      - name: get-dealer-scores
        method: GET
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: files
      path: /{{site_id}}/drive/root:/{{folder_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      operations:
      - name: upload-file
        method: PUT
Open in Framework → View in Fleet → dealer-monthly-performance-report.yml

When an IT change request is submitted in ServiceNow, retrieves the change details, looks up the change manager in Workday, and sends an approval request via Microsoft Teams.

naftiko: '0.5'
info:
  label: IT Change Request Approval
  description: When an IT change request is submitted in ServiceNow, retrieves the change details, looks up the change manager in Workday, and sends an approval request via Microsoft Teams.
  tags:
  - it
  - servicenow
  - workday
  - microsoft-teams
  - change-management
capability:
  exposes:
  - type: mcp
    namespace: it-change
    port: 8080
    tools:
    - name: route-change-approval
      description: Given a ServiceNow change number, look up the manager and send approval request.
      inputParameters:
      - name: change_number
        in: body
        type: string
        description: The ServiceNow change request number.
      steps:
      - name: get-change
        type: call
        call: servicenow.get-change
        with:
          change_number: '{{change_number}}'
      - name: get-manager
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{get-change.requested_by_employee_id}}'
      - name: send-approval
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-manager.manager_email}}'
          text: 'IT Change Approval Needed: {{change_number}} — {{get-change.short_description}}. Requested by: {{get-manager.full_name}}. Risk: {{get-change.risk_level}}. Planned start: {{get-change.planned_start}}.'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://gm.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: changes
      path: /table/change_request/{{change_number}}
      inputParameters:
      - name: change_number
        in: path
      operations:
      - name: get-change
        method: GET
  - type: http
    namespace: workday
    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: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → it-change-request-approval.yml

When a robot cell faults in the body shop, retrieves the error code from the MES, checks the maintenance history in SAP PM, opens a ServiceNow incident, and pages the robotics technician via PagerDuty.

naftiko: '0.5'
info:
  label: Robot Cell Error Recovery
  description: When a robot cell faults in the body shop, retrieves the error code from the MES, checks the maintenance history in SAP PM, opens a ServiceNow incident, and pages the robotics technician via PagerDuty.
  tags:
  - manufacturing
  - robotics
  - mes
  - sap
  - sap-s4hana
  - servicenow
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: robot-recovery
    port: 8080
    tools:
    - name: handle-robot-fault
      description: Given a robot cell ID and plant code, retrieve the fault, check history, open incident, and page technician.
      inputParameters:
      - name: cell_id
        in: body
        type: string
        description: The robot cell identifier.
      - name: plant_code
        in: body
        type: string
        description: The plant code.
      steps:
      - name: get-fault
        type: call
        call: mes.get-robot-fault
        with:
          cell_id: '{{cell_id}}'
      - name: get-maintenance-history
        type: call
        call: sap.get-equipment-history
        with:
          equipment_id: '{{cell_id}}'
          plant: '{{plant_code}}'
      - name: open-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: Robot fault — Cell {{cell_id}}, Plant {{plant_code}}
          description: 'Error: {{get-fault.error_code}} — {{get-fault.error_description}}. Cell: {{cell_id}}. Last PM: {{get-maintenance-history.last_pm_date}}. Fault count (30d): {{get-maintenance-history.recent_fault_count}}.'
          urgency: '1'
          category: robot_fault
          assigned_group: Robotics_Maintenance_{{plant_code}}
      - name: page-technician
        type: call
        call: pagerduty.create-incident
        with:
          service_id: robotics-{{plant_code}}
          title: 'Robot Cell {{cell_id}} Fault: {{get-fault.error_code}}'
          body: 'Cell {{cell_id}} faulted at Plant {{plant_code}}. Error: {{get-fault.error_description}}. ServiceNow: {{open-incident.number}}.'
  consumes:
  - type: http
    namespace: mes
    baseUri: https://mes-api.gm.com/production/v1
    authentication:
      type: bearer
      token: $secrets.gm_mes_token
    resources:
    - name: robot-faults
      path: /cells/{{cell_id}}/faults/latest
      inputParameters:
      - name: cell_id
        in: path
      operations:
      - name: get-robot-fault
        method: GET
  - type: http
    namespace: sap
    baseUri: https://gm-s4.sap.com/sap/opu/odata/sap/PM_EQUIPMENT_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: equipment-history
      path: /A_Equipment('{{equipment_id}}')/MaintenanceHistory
      inputParameters:
      - name: equipment_id
        in: path
      operations:
      - name: get-equipment-history
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://gm.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: incidents
      path: /incidents
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → robot-cell-error-recovery.yml

When a supplier quality issue is identified, creates a corrective action request in the QMS, notifies the supplier via SAP Ariba, creates a JIRA tracking issue, and alerts the SQE in Microsoft Teams.

naftiko: '0.5'
info:
  label: Supplier Corrective Action Workflow
  description: When a supplier quality issue is identified, creates a corrective action request in the QMS, notifies the supplier via SAP Ariba, creates a JIRA tracking issue, and alerts the SQE in Microsoft Teams.
  tags:
  - supply-chain
  - quality
  - qms
  - sap-ariba
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: supplier-corrective
    port: 8080
    tools:
    - name: initiate-corrective-action
      description: Given a supplier ID, defect info, and SQE email, create corrective action records and notify all parties.
      inputParameters:
      - name: supplier_id
        in: body
        type: string
        description: The SAP Ariba supplier ID.
      - name: part_number
        in: body
        type: string
        description: The affected part number.
      - name: defect_description
        in: body
        type: string
        description: Description of the quality defect.
      - name: sqe_email
        in: body
        type: string
        description: The SQE email address.
      steps:
      - name: get-supplier
        type: call
        call: ariba.get-supplier
        with:
          supplier_id: '{{supplier_id}}'
      - name: create-car
        type: call
        call: qms.create-corrective-action
        with:
          supplier_id: '{{supplier_id}}'
          supplier_name: '{{get-supplier.supplier_name}}'
          part_number: '{{part_number}}'
          defect: '{{defect_description}}'
      - name: notify-supplier
        type: call
        call: ariba.send-supplier-message
        with:
          supplier_id: '{{supplier_id}}'
          subject: Corrective Action Required — Part {{part_number}}
          message: 'CAR {{create-car.car_number}} has been issued for part {{part_number}}. Defect: {{defect_description}}. Please respond within 10 business days.'
      - name: create-jira
        type: call
        call: jira.create-issue
        with:
          project: SQE
          issue_type: Task
          summary: CAR {{create-car.car_number}} — {{get-supplier.supplier_name}}, Part {{part_number}}
          description: 'Corrective action for {{get-supplier.supplier_name}}. Part: {{part_number}}. Defect: {{defect_description}}.'
      - name: notify-sqe
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{sqe_email}}'
          text: 'CAR Issued: {{create-car.car_number}} for {{get-supplier.supplier_name}}, part {{part_number}}. JIRA: {{create-jira.key}}. Defect: {{defect_description}}'
  consumes:
  - type: http
    namespace: ariba
    baseUri: https://openapi.ariba.com/api/supplier-mgmt/v2
    authentication:
      type: bearer
      token: $secrets.ariba_token
    resources:
    - name: suppliers
      path: /suppliers/{{supplier_id}}
      inputParameters:
      - name: supplier_id
        in: path
      operations:
      - name: get-supplier
        method: GET
    - name: messages
      path: /suppliers/{{supplier_id}}/messages
      inputParameters:
      - name: supplier_id
        in: path
      operations:
      - name: send-supplier-message
        method: POST
  - type: http
    namespace: qms
    baseUri: https://qms-api.gm.com/quality/v1
    authentication:
      type: bearer
      token: $secrets.gm_qms_token
    resources:
    - name: corrective-actions
      path: /corrective-actions
      operations:
      - name: create-corrective-action
        method: POST
  - type: http
    namespace: jira
    baseUri: https://gm-engineering.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → supplier-corrective-action-workflow.yml

Tracks contract renewals at GM via contracts system, email, Jira, and Salesforce.

naftiko: '0.5'
info:
  label: Contract Renewal Pipeline
  description: Tracks contract renewals at GM via contracts system, email, Jira, and Salesforce.
  tags:
  - procurement
  - contracts
  - salesforce
  - jira
capability:
  exposes:
  - type: mcp
    namespace: contract-renew
    port: 8080
    tools:
    - name: track
      description: Track renewals at GM.
      inputParameters:
      - name: contract_id
        in: body
        type: string
        description: Contract ID.
      - name: owner
        in: body
        type: string
        description: Owner email.
      steps:
      - name: get
        type: call
        call: contracts.get
        with:
          id: '{{contract_id}}'
      - name: remind
        type: call
        call: email.send
        with:
          to: '{{owner}}'
          subject: 'Renewal: {{contract_id}}'
      - name: task
        type: call
        call: jira.create-issue
        with:
          project: PROC
          summary: Renew {{contract_id}}
      - name: crm
        type: call
        call: salesforce.update
        with:
          id: '{{contract_id}}'
          stage: Renewal
  consumes:
  - type: http
    namespace: contracts
    baseUri: https://contracts.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.contracts_token
    resources:
    - name: contracts
      path: /contracts/{{id}}
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get
        method: GET
  - type: http
    namespace: email
    baseUri: https://email.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.email_token
    resources:
    - name: messages
      path: /send
      operations:
      - name: send
        method: POST
  - type: http
    namespace: jira
    baseUri: https://gm.com.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://gm.com.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opps
      path: /sobjects/Opportunity
      operations:
      - name: update
        method: PATCH
Open in Framework → View in Fleet → contract-renewal-pipeline.yml

Onboards employees at GM with Okta, ServiceNow, Slack, and calendar.

naftiko: '0.5'
info:
  label: New Employee IT Onboarding Pipeline
  description: Onboards employees at GM with Okta, ServiceNow, Slack, and calendar.
  tags:
  - hr
  - onboarding
  - okta
  - servicenow
  - slack
capability:
  exposes:
  - type: mcp
    namespace: it-onboarding
    port: 8080
    tools:
    - name: onboard-employee
      description: Onboard employees at GM.
      inputParameters:
      - name: name
        in: body
        type: string
        description: Name.
      - name: dept
        in: body
        type: string
        description: Department.
      - name: start
        in: body
        type: string
        description: Start date.
      steps:
      - name: okta
        type: call
        call: okta.create-user
        with:
          name: '{{name}}'
          department: '{{dept}}'
      - name: equip
        type: call
        call: servicenow.create-request
        with:
          type: new_hire
          for: '{{name}}'
      - name: slack
        type: call
        call: slack.invite
        with:
          email: '{{okta.email}}'
      - name: orient
        type: call
        call: calendar.create-event
        with:
          title: Orientation - {{name}}
          date: '{{start}}'
  consumes:
  - type: http
    namespace: okta
    baseUri: https://gm.com.okta.com/api/v1
    authentication:
      type: bearer
      token: $secrets.okta_api_token
    resources:
    - name: users
      path: /users
      operations:
      - name: create-user
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://gm.com.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: requests
      path: /table/sc_request
      operations:
      - name: create-request
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: users
      path: /users.admin.invite
      operations:
      - name: invite
        method: POST
  - type: http
    namespace: calendar
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.microsoft_graph_token
    resources:
    - name: events
      path: /users/hr/events
      operations:
      - name: create-event
        method: POST
Open in Framework → View in Fleet → new-employee-it-onboarding-pipeline.yml

Fetches a supplier quality scorecard from SAP Ariba by supplier ID, returning PPM defect rate, on-time delivery percentage, and corrective action count.

naftiko: '0.5'
info:
  label: Supplier Quality Scorecard
  description: Fetches a supplier quality scorecard from SAP Ariba by supplier ID, returning PPM defect rate, on-time delivery percentage, and corrective action count.
  tags:
  - supply-chain
  - quality
  - sap-ariba
  - supplier-management
capability:
  exposes:
  - type: mcp
    namespace: supplier-quality
    port: 8080
    tools:
    - name: get-supplier-scorecard
      description: Retrieve supplier quality scorecard by supplier ID. Returns PPM, on-time delivery, and corrective actions.
      inputParameters:
      - name: supplier_id
        in: body
        type: string
        description: The SAP Ariba supplier identifier.
      call: ariba.get-supplier-scorecard
      with:
        supplier_id: '{{supplier_id}}'
      outputParameters:
      - name: ppm_rate
        type: number
        mapping: $.scorecard.ppmDefectRate
      - name: on_time_delivery_pct
        type: number
        mapping: $.scorecard.onTimeDeliveryPercent
      - name: corrective_actions
        type: number
        mapping: $.scorecard.correctiveActionCount
  consumes:
  - type: http
    namespace: ariba
    baseUri: https://openapi.ariba.com/api/supplier-mgmt/v2
    authentication:
      type: bearer
      token: $secrets.ariba_token
    resources:
    - name: scorecards
      path: /suppliers/{{supplier_id}}/scorecard
      inputParameters:
      - name: supplier_id
        in: path
      operations:
      - name: get-supplier-scorecard
        method: GET
Open in Framework → View in Fleet → supplier-quality-scorecard.yml

Verifies backups at GM.

naftiko: '0.5'
info:
  label: Backup Verification Pipeline
  description: Verifies backups at GM.
  tags:
  - database
  - backup
  - operations
capability:
  exposes:
  - type: mcp
    namespace: backup-verify
    port: 8080
    tools:
    - name: verify-backups
      description: Verify backups at GM.
      inputParameters:
      - name: db
        in: body
        type: string
        description: Database.
      - name: date
        in: body
        type: string
        description: Backup date.
      steps:
      - name: status
        type: call
        call: backup.get-status
        with:
          db: '{{db}}'
          date: '{{date}}'
      - name: verify
        type: call
        call: backup.verify
        with:
          id: '{{status.backup_id}}'
      - name: log
        type: call
        call: snowflake.query
        with:
          query: INSERT INTO backup_log VALUES ('{{db}}','{{date}}','{{verify.status}}')
      - name: alert
        type: call
        call: slack.post-message
        with:
          channel: '#dba'
          text: 'Backup {{db}}: {{verify.status}}'
  consumes:
  - type: http
    namespace: backup
    baseUri: https://backup.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.backup_token
    resources:
    - name: backups
      path: /databases/{{db}}/status
      inputParameters:
      - name: db
        in: path
      operations:
      - name: get-status
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://gm.com.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → backup-verification-pipeline.yml

Reallocates costs at GM.

naftiko: '0.5'
info:
  label: Cost Reallocation Pipeline
  description: Reallocates costs at GM.
  tags:
  - finance
  - cost-allocation
  - oracle
capability:
  exposes:
  - type: mcp
    namespace: cost-realloc
    port: 8080
    tools:
    - name: reallocate
      description: Reallocate costs at GM.
      inputParameters:
      - name: source
        in: body
        type: string
        description: Source CC.
      - name: target
        in: body
        type: string
        description: Target CC.
      - name: amount
        in: body
        type: number
        description: Amount.
      steps:
      - name: current
        type: call
        call: oracle.get-alloc
        with:
          cc: '{{source}}'
      - name: compute
        type: call
        call: analytics.realloc
        with:
          source: '{{source}}'
          target: '{{target}}'
          amount: '{{amount}}'
      - name: post
        type: call
        call: oracle.post-journal
        with:
          entries: '{{compute.entries}}'
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: '#finance'
          text: Reallocated ${{amount}} from {{source}} to {{target}}
  consumes:
  - type: http
    namespace: oracle
    baseUri: https://oracle.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.oracle_token
    resources:
    - name: allocations
      path: /cost-centers/{{cc}}/allocations
      inputParameters:
      - name: cc
        in: path
      operations:
      - name: get-alloc
        method: GET
  - type: http
    namespace: analytics
    baseUri: https://analytics.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.analytics_token
    resources:
    - name: realloc
      path: /compute
      operations:
      - name: realloc
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → cost-reallocation-pipeline.yml

When a new recall campaign is published, retrieves affected VINs from the safety system, looks up owner contact info via Salesforce, and triggers recall notification letters through the customer communication platform.

naftiko: '0.5'
info:
  label: Recall Campaign Notification Orchestrator
  description: When a new recall campaign is published, retrieves affected VINs from the safety system, looks up owner contact info via Salesforce, and triggers recall notification letters through the customer communication platform.
  tags:
  - safety
  - recall
  - salesforce
  - customer-communication
capability:
  exposes:
  - type: mcp
    namespace: recall-notification
    port: 8080
    tools:
    - name: send-recall-notifications
      description: Given a recall campaign ID, retrieve affected VINs, look up owners, and trigger notification letters.
      inputParameters:
      - name: campaign_id
        in: body
        type: string
        description: The recall campaign identifier.
      steps:
      - name: get-affected-vins
        type: call
        call: recall-api.get-campaign-vins
        with:
          campaign_id: '{{campaign_id}}'
      - name: get-owners
        type: call
        call: salesforce.get-owners-by-vins
        with:
          vin_list: '{{get-affected-vins.vins}}'
      - name: trigger-letters
        type: call
        call: comms-api.send-recall-letters
        with:
          campaign_id: '{{campaign_id}}'
          recipients: '{{get-owners.owner_contacts}}'
          recall_description: '{{get-affected-vins.recall_description}}'
  consumes:
  - type: http
    namespace: recall-api
    baseUri: https://safety-api.gm.com/compliance/v1
    authentication:
      type: bearer
      token: $secrets.gm_safety_token
    resources:
    - name: campaign-vins
      path: /campaigns/{{campaign_id}}/vins
      inputParameters:
      - name: campaign_id
        in: path
      operations:
      - name: get-campaign-vins
        method: GET
  - type: http
    namespace: salesforce
    baseUri: https://gm.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: owners
      path: /sobjects/Vehicle_Ownership__c
      operations:
      - name: get-owners-by-vins
        method: POST
  - type: http
    namespace: comms-api
    baseUri: https://comms-api.gm.com/notifications/v1
    authentication:
      type: bearer
      token: $secrets.gm_comms_token
    resources:
    - name: recall-letters
      path: /recall-letters
      operations:
      - name: send-recall-letters
        method: POST
Open in Framework → View in Fleet → recall-campaign-notification-orchestrator.yml

When a charging station reports a fault, retrieves the station details, opens a ServiceNow work order for field service, and notifies the regional charging operations team in Slack.

naftiko: '0.5'
info:
  label: EV Charging Network Fault Orchestrator
  description: When a charging station reports a fault, retrieves the station details, opens a ServiceNow work order for field service, and notifies the regional charging operations team in Slack.
  tags:
  - ev
  - charging
  - servicenow
  - slack
  - field-service
capability:
  exposes:
  - type: mcp
    namespace: charging-fault
    port: 8080
    tools:
    - name: handle-station-fault
      description: Given a station ID and fault code, retrieve details, open a work order, and alert operations.
      inputParameters:
      - name: station_id
        in: body
        type: string
        description: The charging station identifier.
      - name: fault_code
        in: body
        type: string
        description: The station fault code.
      steps:
      - name: get-station
        type: call
        call: charging-api.get-station
        with:
          station_id: '{{station_id}}'
      - name: create-work-order
        type: call
        call: servicenow.create-work-order
        with:
          short_description: 'Charging station fault — {{station_id}}: {{fault_code}}'
          description: 'Station {{station_id}} at {{get-station.address}} reported fault {{fault_code}}. Power output: {{get-station.power_kw}} kW. Region: {{get-station.region}}.'
          category: field_service
          assigned_group: Charging_Field_Service_{{get-station.region}}
      - name: alert-ops
        type: call
        call: slack.post-message
        with:
          channel: '#charging-ops-{{get-station.region}}'
          text: 'Station Fault: {{station_id}} at {{get-station.address}}. Fault: {{fault_code}}. Work order: {{create-work-order.number}}. Dispatching field service.'
  consumes:
  - type: http
    namespace: charging-api
    baseUri: https://charging-api.gm.com/ultium/v1
    authentication:
      type: bearer
      token: $secrets.gm_charging_token
    resources:
    - name: stations
      path: /stations/{{station_id}}
      inputParameters:
      - name: station_id
        in: path
      operations:
      - name: get-station
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://gm.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: work-orders
      path: /table/wm_order
      operations:
      - name: create-work-order
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → ev-charging-network-fault-orchestrator.yml

When a vehicle cybersecurity vulnerability is reported, retrieves the CVE details, identifies affected vehicle models from the configuration system, creates a JIRA security issue, and alerts the vehicle cybersecurity team in Slack.

naftiko: '0.5'
info:
  label: Cybersecurity Vulnerability Triage
  description: When a vehicle cybersecurity vulnerability is reported, retrieves the CVE details, identifies affected vehicle models from the configuration system, creates a JIRA security issue, and alerts the vehicle cybersecurity team in Slack.
  tags:
  - cybersecurity
  - connected-vehicle
  - jira
  - slack
  - vulnerability
capability:
  exposes:
  - type: mcp
    namespace: vehicle-security
    port: 8080
    tools:
    - name: triage-vulnerability
      description: Given a CVE ID and affected ECU, identify impacted models, create a JIRA issue, and alert the security team.
      inputParameters:
      - name: cve_id
        in: body
        type: string
        description: The CVE identifier.
      - name: affected_ecu
        in: body
        type: string
        description: The ECU module name affected.
      - name: severity
        in: body
        type: string
        description: CVSS severity (low, medium, high, critical).
      steps:
      - name: get-affected-models
        type: call
        call: vehicle-config.get-models-by-ecu
        with:
          ecu_name: '{{affected_ecu}}'
      - name: create-security-issue
        type: call
        call: jira.create-issue
        with:
          project: VEHSEC
          issue_type: Security Bug
          summary: '{{cve_id}} — {{affected_ecu}} ({{severity}})'
          description: 'CVE: {{cve_id}}. ECU: {{affected_ecu}}. Severity: {{severity}}. Affected models: {{get-affected-models.model_list}}. Affected VIN count: {{get-affected-models.vin_count}}.'
          priority: '{{severity}}'
      - name: alert-team
        type: call
        call: slack.post-message
        with:
          channel: '#vehicle-cybersecurity'
          text: 'VULNERABILITY: {{cve_id}} ({{severity}}) affects {{affected_ecu}}. Models: {{get-affected-models.model_list}}. ~{{get-affected-models.vin_count}} vehicles. JIRA: {{create-security-issue.key}}.'
  consumes:
  - type: http
    namespace: vehicle-config
    baseUri: https://vehicle-config-api.gm.com/v1
    authentication:
      type: bearer
      token: $secrets.gm_config_token
    resources:
    - name: models-by-ecu
      path: /ecus/{{ecu_name}}/models
      inputParameters:
      - name: ecu_name
        in: path
      operations:
      - name: get-models-by-ecu
        method: GET
  - type: http
    namespace: jira
    baseUri: https://gm-engineering.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
    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
Open in Framework → View in Fleet → cybersecurity-vulnerability-triage.yml

Retrieves a dealer parts order from GM's Dealer Management System by order ID, returning line items, fulfillment status, and estimated delivery date.

naftiko: '0.5'
info:
  label: Dealer Parts Order Lookup
  description: Retrieves a dealer parts order from GM's Dealer Management System by order ID, returning line items, fulfillment status, and estimated delivery date.
  tags:
  - dealer
  - parts
  - order-management
  - dms
capability:
  exposes:
  - type: mcp
    namespace: dealer-parts
    port: 8080
    tools:
    - name: get-parts-order
      description: Retrieve a dealer parts order by order ID. Returns line items, fulfillment status, and estimated delivery.
      inputParameters:
      - name: order_id
        in: body
        type: string
        description: The dealer parts order identifier.
      call: dms.get-parts-order
      with:
        order_id: '{{order_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.order.fulfillmentStatus
      - name: line_items
        type: array
        mapping: $.order.lineItems
      - name: estimated_delivery
        type: string
        mapping: $.order.estimatedDeliveryDate
  consumes:
  - type: http
    namespace: dms
    baseUri: https://dealer-api.gm.com/dms/v2
    authentication:
      type: bearer
      token: $secrets.gm_dms_token
    resources:
    - name: parts-orders
      path: /orders/{{order_id}}
      inputParameters:
      - name: order_id
        in: path
      operations:
      - name: get-parts-order
        method: GET
Open in Framework → View in Fleet → dealer-parts-order-lookup.yml

When a customer requests a service appointment through the myChevrolet/myGMC app, checks dealer availability via DMS, creates the appointment, and sends a confirmation to the customer through Salesforce Marketing Cloud.

naftiko: '0.5'
info:
  label: Dealer Service Appointment Scheduler
  description: When a customer requests a service appointment through the myChevrolet/myGMC app, checks dealer availability via DMS, creates the appointment, and sends a confirmation to the customer through Salesforce Marketing Cloud.
  tags:
  - dealer
  - customer-service
  - dms
  - salesforce-marketing-cloud
  - appointment
capability:
  exposes:
  - type: mcp
    namespace: service-appointment
    port: 8080
    tools:
    - name: schedule-service
      description: Given a dealer code, VIN, service type, and customer info, check availability, book the appointment, and confirm.
      inputParameters:
      - name: dealer_code
        in: body
        type: string
        description: The dealer BAC code.
      - name: vin
        in: body
        type: string
        description: The customer vehicle VIN.
      - name: service_type
        in: body
        type: string
        description: The type of service requested.
      - name: preferred_date
        in: body
        type: string
        description: The preferred date (YYYY-MM-DD).
      - name: customer_email
        in: body
        type: string
        description: The customer email address.
      steps:
      - name: check-availability
        type: call
        call: dms.get-availability
        with:
          dealer_code: '{{dealer_code}}'
          date: '{{preferred_date}}'
          service_type: '{{service_type}}'
      - name: create-appointment
        type: call
        call: dms.create-appointment
        with:
          dealer_code: '{{dealer_code}}'
          vin: '{{vin}}'
          service_type: '{{service_type}}'
          date: '{{check-availability.next_available_slot}}'
      - name: send-confirmation
        type: call
        call: sfmc.send-transactional
        with:
          email: '{{customer_email}}'
          template: service_appointment_confirmation
  consumes:
  - type: http
    namespace: dms
    baseUri: https://dealer-api.gm.com/dms/v2
    authentication:
      type: bearer
      token: $secrets.gm_dms_token
    resources:
    - name: availability
      path: /dealers/{{dealer_code}}/availability
      inputParameters:
      - name: dealer_code
        in: path
      - name: date
        in: query
      - name: service_type
        in: query
      operations:
      - name: get-availability
        method: GET
    - name: appointments
      path: /dealers/{{dealer_code}}/appointments
      inputParameters:
      - name: dealer_code
        in: path
      operations:
      - name: create-appointment
        method: POST
  - type: http
    namespace: sfmc
    baseUri: https://mcj6cy1x9m-t.rest.marketingcloudapis.com
    authentication:
      type: bearer
      token: $secrets.sfmc_token
    resources:
    - name: transactional
      path: /messaging/v1/email/messages
      operations:
      - name: send-transactional
        method: POST
Open in Framework → View in Fleet → dealer-service-appointment-scheduler.yml

When a supplier submits a Production Part Approval Process package, validates it in SAP Ariba, logs the submission in the quality management system, and notifies the SQE via Microsoft Teams.

naftiko: '0.5'
info:
  label: Supplier PPAP Submission Workflow
  description: When a supplier submits a Production Part Approval Process package, validates it in SAP Ariba, logs the submission in the quality management system, and notifies the SQE via Microsoft Teams.
  tags:
  - supply-chain
  - quality
  - sap-ariba
  - ppap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: ppap-submission
    port: 8080
    tools:
    - name: process-ppap
      description: Given a supplier ID, part number, and PPAP package reference, validate, log, and notify.
      inputParameters:
      - name: supplier_id
        in: body
        type: string
        description: The SAP Ariba supplier identifier.
      - name: part_number
        in: body
        type: string
        description: The GM part number being approved.
      - name: ppap_package_ref
        in: body
        type: string
        description: Reference ID of the PPAP submission package.
      - name: sqe_email
        in: body
        type: string
        description: The supplier quality engineer email.
      steps:
      - name: get-supplier
        type: call
        call: ariba.get-supplier
        with:
          supplier_id: '{{supplier_id}}'
      - name: log-submission
        type: call
        call: qms.create-ppap-record
        with:
          supplier_id: '{{supplier_id}}'
          supplier_name: '{{get-supplier.supplier_name}}'
          part_number: '{{part_number}}'
          package_ref: '{{ppap_package_ref}}'
      - name: notify-sqe
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{sqe_email}}'
          text: 'PPAP Submission: {{get-supplier.supplier_name}} submitted PPAP for part {{part_number}}. Package ref: {{ppap_package_ref}}. QMS record: {{log-submission.record_id}}. Please review.'
  consumes:
  - type: http
    namespace: ariba
    baseUri: https://openapi.ariba.com/api/supplier-mgmt/v2
    authentication:
      type: bearer
      token: $secrets.ariba_token
    resources:
    - name: suppliers
      path: /suppliers/{{supplier_id}}
      inputParameters:
      - name: supplier_id
        in: path
      operations:
      - name: get-supplier
        method: GET
  - type: http
    namespace: qms
    baseUri: https://qms-api.gm.com/quality/v1
    authentication:
      type: bearer
      token: $secrets.gm_qms_token
    resources:
    - name: ppap-records
      path: /ppap
      operations:
      - name: create-ppap-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → supplier-ppap-submission-workflow.yml

Retrieves submitted expense reports from SAP Concur, validates against Workday cost center data, and opens a ServiceNow task for finance review when policy exceptions are detected.

naftiko: '0.5'
info:
  label: Expense Report Processing
  description: Retrieves submitted expense reports from SAP Concur, validates against Workday cost center data, and opens a ServiceNow task for finance review when policy exceptions are detected.
  tags:
  - finance
  - expense
  - sap-concur
  - workday
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: finance-expense
    port: 8080
    tools:
    - name: review-expense-report
      description: Given a Concur expense report ID and employee ID, fetch, validate, and flag policy violations.
      inputParameters:
      - name: expense_report_id
        in: body
        type: string
        description: The SAP Concur expense report ID.
      - name: employee_id
        in: body
        type: string
        description: The Workday employee ID.
      steps:
      - name: get-report
        type: call
        call: concur.get-expense-report
        with:
          report_id: '{{expense_report_id}}'
      - name: get-employee
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: open-review
        type: call
        call: servicenow.create-task
        with:
          short_description: 'Expense review: {{get-report.report_name}} — {{get-employee.full_name}}'
          description: 'Report {{expense_report_id}} total: {{get-report.total_amount}} {{get-report.currency}}. Cost center: {{get-employee.cost_center}}.'
          assigned_group: Finance_Audit
          category: expense_review
  consumes:
  - type: http
    namespace: concur
    baseUri: https://www.concursolutions.com/api/v3.0
    authentication:
      type: bearer
      token: $secrets.concur_token
    resources:
    - name: expense-reports
      path: /expense/reports/{{report_id}}
      inputParameters:
      - name: report_id
        in: path
      operations:
      - name: get-expense-report
        method: GET
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://gm.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tasks
      path: /table/task
      operations:
      - name: create-task
        method: POST
Open in Framework → View in Fleet → expense-report-processing.yml

Retrieves sprint progress at GM.

naftiko: '0.5'
info:
  label: Jira Sprint Progress Lookup
  description: Retrieves sprint progress at GM.
  tags:
  - project-management
  - jira
  - agile
capability:
  exposes:
  - type: mcp
    namespace: jira-sprint
    port: 8080
    tools:
    - name: get-sprint
      description: Look up sprint at GM.
      inputParameters:
      - name: project_key
        in: body
        type: string
        description: Project key.
      call: jira.get-sprints
      with:
        project: '{{project_key}}'
      outputParameters:
      - name: name
        type: string
        mapping: $.values[0].name
      - name: state
        type: string
        mapping: $.values[0].state
  consumes:
  - type: http
    namespace: jira
    baseUri: https://gm.com.atlassian.net/rest/agile/1.0
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: sprints
      path: /board/1/sprint
      operations:
      - name: get-sprints
        method: GET
Open in Framework → View in Fleet → jira-sprint-progress-lookup.yml

When an OTA update fails on a vehicle, pulls the vehicle diagnostics from OnStar, retrieves the campaign details, opens a ServiceNow incident, and notifies the software delivery team in Slack.

naftiko: '0.5'
info:
  label: OTA Update Failure Triage
  description: When an OTA update fails on a vehicle, pulls the vehicle diagnostics from OnStar, retrieves the campaign details, opens a ServiceNow incident, and notifies the software delivery team in Slack.
  tags:
  - connected-vehicle
  - ota
  - onstar
  - servicenow
  - slack
  - software-update
capability:
  exposes:
  - type: mcp
    namespace: ota-triage
    port: 8080
    tools:
    - name: triage-ota-failure
      description: Given a VIN and OTA campaign ID, pull diagnostics, retrieve campaign info, open an incident, and alert the team.
      inputParameters:
      - name: vin
        in: body
        type: string
        description: The VIN of the vehicle that failed the update.
      - name: campaign_id
        in: body
        type: string
        description: The OTA campaign identifier.
      steps:
      - name: get-diagnostics
        type: call
        call: onstar.get-diagnostics
        with:
          vin: '{{vin}}'
      - name: get-campaign
        type: call
        call: ota-api.get-campaign
        with:
          campaign_id: '{{campaign_id}}'
      - name: open-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: OTA failure — VIN {{vin}}, Campaign {{campaign_id}}
          description: 'OTA update {{get-campaign.campaign_name}} failed on VIN {{vin}}. ECU: {{get-campaign.target_ecu}}. DTCs: {{get-diagnostics.dtc_codes}}. Battery voltage: {{get-diagnostics.battery_voltage}}V.'
          category: ota_failure
          assigned_group: Software_Delivery
      - name: alert-team
        type: call
        call: slack.post-message
        with:
          channel: '#ota-failures'
          text: 'OTA Failure: VIN {{vin}}, Campaign {{get-campaign.campaign_name}}. ECU: {{get-campaign.target_ecu}}. Incident: {{open-incident.number}}.'
  consumes:
  - type: http
    namespace: onstar
    baseUri: https://api.onstar.com/connected/v2
    authentication:
      type: oauth2
      tokenUrl: https://api.onstar.com/oauth/token
      clientId: $secrets.onstar_client_id
      clientSecret: $secrets.onstar_client_secret
    resources:
    - name: diagnostics
      path: /vehicles/{{vin}}/diagnostics
      inputParameters:
      - name: vin
        in: path
      operations:
      - name: get-diagnostics
        method: GET
  - type: http
    namespace: ota-api
    baseUri: https://ota-platform.gm.com/campaigns/v1
    authentication:
      type: bearer
      token: $secrets.gm_ota_token
    resources:
    - name: campaigns
      path: /campaigns/{{campaign_id}}
      inputParameters:
      - name: campaign_id
        in: path
      operations:
      - name: get-campaign
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://gm.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → ota-update-failure-triage.yml

Escalates IT incidents at GM via ServiceNow, PagerDuty, and Slack.

naftiko: '0.5'
info:
  label: IT Incident Escalation Pipeline
  description: Escalates IT incidents at GM via ServiceNow, PagerDuty, and Slack.
  tags:
  - incident-management
  - servicenow
  - pagerduty
  - slack
capability:
  exposes:
  - type: mcp
    namespace: incident-escalation
    port: 8080
    tools:
    - name: escalate-incident
      description: Escalate incidents at GM.
      inputParameters:
      - name: incident_id
        in: body
        type: string
        description: Incident ID.
      - name: severity
        in: body
        type: string
        description: Severity.
      steps:
      - name: get-incident
        type: call
        call: servicenow.get-incident
        with:
          incident_id: '{{incident_id}}'
      - name: page
        type: call
        call: pagerduty.create-incident
        with:
          title: '{{get-incident.description}}'
          urgency: '{{severity}}'
      - name: channel
        type: call
        call: slack.create-channel
        with:
          name: inc-{{incident_id}}
      - name: notify
        type: call
        call: slack.post-message
        with:
          channel: '#inc-{{incident_id}}'
          text: 'P{{severity}}: {{get-incident.description}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://gm.com.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: incidents
      path: /table/incident/{{incident_id}}
      inputParameters:
      - name: incident_id
        in: path
      operations:
      - name: get-incident
        method: GET
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: incidents
      path: /incidents
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: channels
      path: /conversations.create
      operations:
      - name: create-channel
        method: POST
Open in Framework → View in Fleet → it-incident-escalation-pipeline.yml

Checks Vault secret at GM.

naftiko: '0.5'
info:
  label: Vault Secret Metadata
  description: Checks Vault secret at GM.
  tags:
  - security
  - vault
  - secrets-management
capability:
  exposes:
  - type: mcp
    namespace: vault
    port: 8080
    tools:
    - name: check-secret
      description: Check secret at GM.
      inputParameters:
      - name: path
        in: body
        type: string
        description: Secret path.
      call: vault.get-metadata
      with:
        path: '{{path}}'
      outputParameters:
      - name: version
        type: number
        mapping: $.data.current_version
  consumes:
  - type: http
    namespace: vault
    baseUri: https://vault.gm.com/v1
    authentication:
      type: bearer
      token: $secrets.vault_token
    resources:
    - name: secrets
      path: /secret/metadata/{{path}}
      inputParameters:
      - name: path
        in: path
      operations:
      - name: get-metadata
        method: GET
Open in Framework → View in Fleet → vault-secret-metadata.yml

Generates compliance reports at GM from Snowflake, Power BI, and email.

naftiko: '0.5'
info:
  label: Quarterly Compliance Report Pipeline
  description: Generates compliance reports at GM from Snowflake, Power BI, and email.
  tags:
  - compliance
  - reporting
  - snowflake
  - power-bi
capability:
  exposes:
  - type: mcp
    namespace: compliance-rpt
    port: 8080
    tools:
    - name: gen-report
      description: Generate compliance reports at GM.
      inputParameters:
      - name: quarter
        in: body
        type: string
        description: Quarter.
      - name: type
        in: body
        type: string
        description: Type.
      steps:
      - name: data
        type: call
        call: snowflake.query
        with:
          query: SELECT * FROM compliance WHERE q='{{quarter}}'
      - name: metrics
        type: call
        call: analytics.compute
        with:
          data: '{{data.results}}'
      - name: refresh
        type: call
        call: power-bi.refresh
        with:
          dataset: compliance
      - name: send
        type: call
        call: email.send
        with:
          to: compliance@co.com
          subject: '{{type}} - {{quarter}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://gm.com.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query
        method: POST
  - type: http
    namespace: analytics
    baseUri: https://analytics.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.analytics_token
    resources:
    - name: metrics
      path: /compute
      operations:
      - name: compute
        method: POST
  - type: http
    namespace: power-bi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.power_bi_token
    resources:
    - name: datasets
      path: /datasets/{{dataset}}/refreshes
      inputParameters:
      - name: dataset
        in: path
      operations:
      - name: refresh
        method: POST
  - type: http
    namespace: email
    baseUri: https://email.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.email_token
    resources:
    - name: messages
      path: /send
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → quarterly-compliance-report-pipeline.yml

Tests disaster recovery at GM via failover, health checks, and reporting.

naftiko: '0.5'
info:
  label: DR Test Pipeline
  description: Tests disaster recovery at GM via failover, health checks, and reporting.
  tags:
  - disaster-recovery
  - business-continuity
  - testing
capability:
  exposes:
  - type: mcp
    namespace: dr-test
    port: 8080
    tools:
    - name: test-dr
      description: Test DR at GM.
      inputParameters:
      - name: plan_id
        in: body
        type: string
        description: Plan ID.
      - name: type
        in: body
        type: string
        description: Test type.
      steps:
      - name: failover
        type: call
        call: dr.failover
        with:
          plan: '{{plan_id}}'
          type: '{{type}}'
      - name: validate
        type: call
        call: monitoring.check
        with:
          scope: critical
      - name: measure
        type: call
        call: dr.metrics
        with:
          id: '{{failover.id}}'
      - name: report
        type: call
        call: confluence.create-page
        with:
          title: DR - {{plan_id}}
          body: RTO:{{measure.rto}}m RPO:{{measure.rpo}}m
  consumes:
  - type: http
    namespace: dr
    baseUri: https://dr.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.dr_token
    resources:
    - name: failovers
      path: /failovers
      operations:
      - name: failover
        method: POST
  - type: http
    namespace: monitoring
    baseUri: https://monitoring.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.monitoring_token
    resources:
    - name: health
      path: /checks
      operations:
      - name: check
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://gm.com.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: pages
      path: /content
      operations:
      - name: create-page
        method: POST
Open in Framework → View in Fleet → dr-test-pipeline.yml

When a battery thermal anomaly is detected via OnStar telematics, retrieves the vehicle diagnostics, checks the battery lot in the Ultium inventory system, opens a safety incident in ServiceNow, and notifies the battery engineering team in Slack.

naftiko: '0.5'
info:
  label: EV Battery Thermal Event Orchestrator
  description: When a battery thermal anomaly is detected via OnStar telematics, retrieves the vehicle diagnostics, checks the battery lot in the Ultium inventory system, opens a safety incident in ServiceNow, and notifies the battery engineering team in Slack.
  tags:
  - ev
  - battery
  - safety
  - onstar
  - servicenow
  - slack
  - thermal-management
capability:
  exposes:
  - type: mcp
    namespace: battery-safety
    port: 8080
    tools:
    - name: handle-thermal-event
      description: Given a VIN and battery part number, investigate a thermal anomaly by pulling diagnostics, checking the lot, opening a safety incident, and alerting engineering.
      inputParameters:
      - name: vin
        in: body
        type: string
        description: The VIN of the affected vehicle.
      - name: battery_part_number
        in: body
        type: string
        description: The Ultium battery cell part number.
      steps:
      - name: get-diagnostics
        type: call
        call: onstar.get-diagnostics
        with:
          vin: '{{vin}}'
      - name: get-battery-lot
        type: call
        call: ultium.get-lot-info
        with:
          part_number: '{{battery_part_number}}'
      - name: open-safety-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: Battery thermal event — VIN {{vin}}
          description: 'Thermal anomaly on VIN {{vin}}. Battery temp: {{get-diagnostics.battery_temp_c}}C. Lot: {{get-battery-lot.lot_number}}, manufactured: {{get-battery-lot.manufacture_date}}. DTC codes: {{get-diagnostics.dtc_codes}}.'
          category: battery_safety
          urgency: '1'
          assigned_group: Battery_Engineering
      - name: alert-engineering
        type: call
        call: slack.post-message
        with:
          channel: '#battery-safety-alerts'
          text: 'THERMAL EVENT: VIN {{vin}}, Battery lot {{get-battery-lot.lot_number}}. Temp: {{get-diagnostics.battery_temp_c}}C. Incident: {{open-safety-incident.number}}. Immediate investigation required.'
  consumes:
  - type: http
    namespace: onstar
    baseUri: https://api.onstar.com/connected/v2
    authentication:
      type: oauth2
      tokenUrl: https://api.onstar.com/oauth/token
      clientId: $secrets.onstar_client_id
      clientSecret: $secrets.onstar_client_secret
    resources:
    - name: diagnostics
      path: /vehicles/{{vin}}/diagnostics
      inputParameters:
      - name: vin
        in: path
      operations:
      - name: get-diagnostics
        method: GET
  - type: http
    namespace: ultium
    baseUri: https://ultium-api.gm.com/inventory/v1
    authentication:
      type: bearer
      token: $secrets.ultium_api_token
    resources:
    - name: lots
      path: /cells/{{part_number}}/lot
      inputParameters:
      - name: part_number
        in: path
      operations:
      - name: get-lot-info
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://gm.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → ev-battery-thermal-event-orchestrator.yml

Searches Splunk at GM.

naftiko: '0.5'
info:
  label: Splunk Log Search
  description: Searches Splunk at GM.
  tags:
  - security
  - splunk
  - logging
capability:
  exposes:
  - type: mcp
    namespace: splunk-search
    port: 8080
    tools:
    - name: search-logs
      description: Search logs at GM.
      inputParameters:
      - name: query
        in: body
        type: string
        description: SPL query.
      call: splunk.search
      with:
        query: '{{query}}'
      outputParameters:
      - name: count
        type: number
        mapping: $.results.count
  consumes:
  - type: http
    namespace: splunk
    baseUri: https://splunk.gm.com:8089/services
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - name: search
      path: /search/jobs
      operations:
      - name: search
        method: POST
Open in Framework → View in Fleet → splunk-log-search.yml

Checks Grafana dashboard at GM.

naftiko: '0.5'
info:
  label: Grafana Dashboard Status
  description: Checks Grafana dashboard at GM.
  tags:
  - monitoring
  - grafana
  - dashboards
capability:
  exposes:
  - type: mcp
    namespace: grafana
    port: 8080
    tools:
    - name: check-dash
      description: Check dashboard at GM.
      inputParameters:
      - name: uid
        in: body
        type: string
        description: Dashboard UID.
      call: grafana.get-dash
      with:
        uid: '{{uid}}'
      outputParameters:
      - name: title
        type: string
        mapping: $.dashboard.title
  consumes:
  - type: http
    namespace: grafana
    baseUri: https://grafana.gm.com/api
    authentication:
      type: bearer
      token: $secrets.grafana_token
    resources:
    - name: dashboards
      path: /dashboards/uid/{{uid}}
      inputParameters:
      - name: uid
        in: path
      operations:
      - name: get-dash
        method: GET
Open in Framework → View in Fleet → grafana-dashboard-status.yml

Retrieves the real-time status of a GM Ultium charging station by station ID, returning availability, power output, active sessions, and fault codes.

naftiko: '0.5'
info:
  label: Charging Station Status
  description: Retrieves the real-time status of a GM Ultium charging station by station ID, returning availability, power output, active sessions, and fault codes.
  tags:
  - ev
  - charging
  - ultium
  - infrastructure
capability:
  exposes:
  - type: mcp
    namespace: ev-charging
    port: 8080
    tools:
    - name: get-station-status
      description: Get real-time status of an Ultium charging station by station ID.
      inputParameters:
      - name: station_id
        in: body
        type: string
        description: The Ultium charging station identifier.
      call: charging-api.get-station
      with:
        station_id: '{{station_id}}'
      outputParameters:
      - name: availability
        type: string
        mapping: $.station.availabilityStatus
      - name: power_kw
        type: number
        mapping: $.station.powerOutputKw
      - name: active_sessions
        type: number
        mapping: $.station.activeSessionCount
  consumes:
  - type: http
    namespace: charging-api
    baseUri: https://charging-api.gm.com/ultium/v1
    authentication:
      type: bearer
      token: $secrets.gm_charging_token
    resources:
    - name: stations
      path: /stations/{{station_id}}
      inputParameters:
      - name: station_id
        in: path
      operations:
      - name: get-station
        method: GET
Open in Framework → View in Fleet → charging-station-status.yml

Generates monthly security reports at GM from Splunk and Qualys.

naftiko: '0.5'
info:
  label: Monthly Security Report Pipeline
  description: Generates monthly security reports at GM from Splunk and Qualys.
  tags:
  - security
  - reporting
  - splunk
  - compliance
capability:
  exposes:
  - type: mcp
    namespace: sec-report
    port: 8080
    tools:
    - name: gen-sec-report
      description: Generate security report at GM.
      inputParameters:
      - name: month
        in: body
        type: string
        description: Month.
      steps:
      - name: splunk
        type: call
        call: splunk.search
        with:
          query: index=security earliest=-30d
      - name: scans
        type: call
        call: qualys.results
        with:
          month: '{{month}}'
      - name: compile
        type: call
        call: analytics.compile-security
        with:
          events: '{{splunk.count}}'
          vulns: '{{scans.critical}}'
      - name: send
        type: call
        call: email.send
        with:
          to: ciso@co.com
          subject: Security - {{month}}
  consumes:
  - type: http
    namespace: splunk
    baseUri: https://splunk.gm.com:8089/services
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - name: search
      path: /search/jobs
      operations:
      - name: search
        method: POST
  - type: http
    namespace: qualys
    baseUri: https://qualysapi.qualys.com/api/v2
    authentication:
      type: bearer
      token: $secrets.qualys_token
    resources:
    - name: results
      path: /fo/scan/results
      operations:
      - name: results
        method: GET
  - type: http
    namespace: analytics
    baseUri: https://analytics.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.analytics_token
    resources:
    - name: security
      path: /compile
      operations:
      - name: compile-security
        method: POST
  - type: http
    namespace: email
    baseUri: https://email.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.email_token
    resources:
    - name: messages
      path: /send
      operations:
      - name: send
        method: POST
Open in Framework → View in Fleet → monthly-security-report-pipeline.yml

Retrieves Teams activity at GM.

naftiko: '0.5'
info:
  label: Teams Channel Activity
  description: Retrieves Teams activity at GM.
  tags:
  - communications
  - microsoft-teams
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: teams-activity
    port: 8080
    tools:
    - name: get-activity
      description: Check Teams activity at GM.
      inputParameters:
      - name: team_id
        in: body
        type: string
        description: Team ID.
      - name: channel_id
        in: body
        type: string
        description: Channel ID.
      call: teams.get-messages
      with:
        team_id: '{{team_id}}'
        channel_id: '{{channel_id}}'
      outputParameters:
      - name: count
        type: number
        mapping: $.value.length
  consumes:
  - type: http
    namespace: teams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.microsoft_graph_token
    resources:
    - name: messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: get-messages
        method: GET
Open in Framework → View in Fleet → teams-channel-activity.yml

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

naftiko: '0.5'
info:
  label: New Employee Onboarding Orchestrator
  description: On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder for the employee, and sends a Microsoft Teams welcome message.
  tags:
  - hr
  - onboarding
  - workday
  - servicenow
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-onboarding
    port: 8080
    tools:
    - name: trigger-onboarding
      description: Given a Workday employee ID and start date, orchestrate onboarding across ServiceNow, SharePoint, and Microsoft Teams.
      inputParameters:
      - name: workday_employee_id
        in: body
        type: string
        description: The Workday worker ID for the new hire.
      - name: start_date
        in: body
        type: string
        description: The employee start date in YYYY-MM-DD format.
      - name: department
        in: body
        type: string
        description: The department or business unit.
      steps:
      - name: get-employee
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{workday_employee_id}}'
      - name: open-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'New hire onboarding: {{get-employee.full_name}}'
          category: hr_onboarding
          assigned_group: IT_Onboarding
          description: Onboarding for {{get-employee.full_name}} starting {{start_date}} in {{department}}.
      - name: provision-folder
        type: call
        call: sharepoint.create-folder
        with:
          site_id: hr_onboarding_site
          folder_path: OnboardingDocs/{{get-employee.full_name}}_{{start_date}}
      - name: send-welcome
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-employee.work_email}}'
          text: 'Welcome to GM, {{get-employee.first_name}}! Your onboarding ticket is {{open-ticket.number}}. Documents: {{provision-folder.url}}.'
  consumes:
  - type: http
    namespace: workday
    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: servicenow
    baseUri: https://gm.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: drive-items
      path: /{{site_id}}/drive/root:/{{folder_path}}
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      operations:
      - name: create-folder
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → new-employee-onboarding-orchestrator.yml

Collects real-world range data from a connected EV via OnStar, compares against the EPA estimate in the vehicle configuration system, and logs the variance in the engineering analytics platform for model improvement.

naftiko: '0.5'
info:
  label: EV Range Estimation Feedback
  description: Collects real-world range data from a connected EV via OnStar, compares against the EPA estimate in the vehicle configuration system, and logs the variance in the engineering analytics platform for model improvement.
  tags:
  - ev
  - connected-vehicle
  - onstar
  - analytics
  - range-estimation
capability:
  exposes:
  - type: mcp
    namespace: range-analytics
    port: 8080
    tools:
    - name: log-range-variance
      description: Given a VIN, collect real-world range data and log the EPA variance for analytics.
      inputParameters:
      - name: vin
        in: body
        type: string
        description: The VIN of the connected EV.
      steps:
      - name: get-range-data
        type: call
        call: onstar.get-energy-stats
        with:
          vin: '{{vin}}'
      - name: get-epa-estimate
        type: call
        call: vehicle-config.get-range-spec
        with:
          vin: '{{vin}}'
      - name: log-variance
        type: call
        call: analytics-api.log-range-data
        with:
          vin: '{{vin}}'
          actual_range_miles: '{{get-range-data.estimated_range_miles}}'
          epa_range_miles: '{{get-epa-estimate.epa_range}}'
          avg_efficiency_kwh_per_mile: '{{get-range-data.avg_efficiency}}'
          climate_zone: '{{get-range-data.climate_zone}}'
  consumes:
  - type: http
    namespace: onstar
    baseUri: https://api.onstar.com/connected/v2
    authentication:
      type: oauth2
      tokenUrl: https://api.onstar.com/oauth/token
      clientId: $secrets.onstar_client_id
      clientSecret: $secrets.onstar_client_secret
    resources:
    - name: energy
      path: /vehicles/{{vin}}/energy
      inputParameters:
      - name: vin
        in: path
      operations:
      - name: get-energy-stats
        method: GET
  - type: http
    namespace: vehicle-config
    baseUri: https://vehicle-config-api.gm.com/v1
    authentication:
      type: bearer
      token: $secrets.gm_config_token
    resources:
    - name: range-spec
      path: /vehicles/{{vin}}/range
      inputParameters:
      - name: vin
        in: path
      operations:
      - name: get-range-spec
        method: GET
  - type: http
    namespace: analytics-api
    baseUri: https://analytics-api.gm.com/engineering/v1
    authentication:
      type: bearer
      token: $secrets.gm_analytics_token
    resources:
    - name: range-data
      path: /range-variance
      operations:
      - name: log-range-data
        method: POST
Open in Framework → View in Fleet → ev-range-estimation-feedback.yml

When a paint defect is detected by the vision inspection system, logs the defect in the MES, creates a quality record in the QMS, and alerts the paint shop supervisor in Slack.

naftiko: '0.5'
info:
  label: Paint Shop Defect Tracking
  description: When a paint defect is detected by the vision inspection system, logs the defect in the MES, creates a quality record in the QMS, and alerts the paint shop supervisor in Slack.
  tags:
  - manufacturing
  - quality
  - mes
  - paint-shop
  - slack
capability:
  exposes:
  - type: mcp
    namespace: paint-quality
    port: 8080
    tools:
    - name: log-paint-defect
      description: Given defect details from the vision system, log in MES and QMS, and alert the supervisor.
      inputParameters:
      - name: vin
        in: body
        type: string
        description: The VIN of the vehicle with the defect.
      - name: defect_type
        in: body
        type: string
        description: The paint defect type (e.g., orange peel, run, sag, dirt).
      - name: defect_location
        in: body
        type: string
        description: Panel location of the defect.
      - name: plant_code
        in: body
        type: string
        description: The plant code.
      steps:
      - name: log-in-mes
        type: call
        call: mes.create-defect
        with:
          vin: '{{vin}}'
          defect_type: '{{defect_type}}'
          location: '{{defect_location}}'
          shop: paint
      - name: create-quality-record
        type: call
        call: qms.create-defect-record
        with:
          vin: '{{vin}}'
          defect_type: '{{defect_type}}'
          location: '{{defect_location}}'
          mes_ref: '{{log-in-mes.defect_id}}'
      - name: alert-supervisor
        type: call
        call: slack.post-message
        with:
          channel: '#paint-shop-{{plant_code}}'
          text: 'Paint defect on VIN {{vin}}: {{defect_type}} on {{defect_location}}. MES ID: {{log-in-mes.defect_id}}. QMS: {{create-quality-record.record_id}}.'
  consumes:
  - type: http
    namespace: mes
    baseUri: https://mes-api.gm.com/production/v1
    authentication:
      type: bearer
      token: $secrets.gm_mes_token
    resources:
    - name: defects
      path: /defects
      operations:
      - name: create-defect
        method: POST
  - type: http
    namespace: qms
    baseUri: https://qms-api.gm.com/quality/v1
    authentication:
      type: bearer
      token: $secrets.gm_qms_token
    resources:
    - name: defect-records
      path: /defects
      operations:
      - name: create-defect-record
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_bot_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → paint-shop-defect-tracking.yml

Manages API deprecation at GM via consumer identification, notices, and tracking.

naftiko: '0.5'
info:
  label: API Deprecation Pipeline
  description: Manages API deprecation at GM via consumer identification, notices, and tracking.
  tags:
  - api-management
  - communications
  - governance
capability:
  exposes:
  - type: mcp
    namespace: api-sunset
    port: 8080
    tools:
    - name: notify-sunset
      description: Manage API sunset at GM.
      inputParameters:
      - name: api
        in: body
        type: string
        description: API name.
      - name: date
        in: body
        type: string
        description: Sunset date.
      steps:
      - name: consumers
        type: call
        call: api-gw.consumers
        with:
          api: '{{api}}'
      - name: notify
        type: call
        call: email.batch
        with:
          to: '{{consumers.emails}}'
          subject: '{{api}} sunset: {{date}}'
      - name: track
        type: call
        call: analytics.usage
        with:
          api: '{{api}}'
      - name: ticket
        type: call
        call: jira.create-issue
        with:
          project: API
          summary: Sunset {{api}} by {{date}}
  consumes:
  - type: http
    namespace: api-gw
    baseUri: https://api-gw.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.api_gw_token
    resources:
    - name: consumers
      path: /apis/{{api}}/consumers
      inputParameters:
      - name: api
        in: path
      operations:
      - name: consumers
        method: GET
  - type: http
    namespace: email
    baseUri: https://email.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.email_token
    resources:
    - name: batch
      path: /send-batch
      operations:
      - name: batch
        method: POST
  - type: http
    namespace: analytics
    baseUri: https://analytics.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.analytics_token
    resources:
    - name: usage
      path: /api-usage
      operations:
      - name: usage
        method: GET
  - type: http
    namespace: jira
    baseUri: https://gm.com.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → api-deprecation-pipeline.yml

Checks build at GM.

naftiko: '0.5'
info:
  label: Azure DevOps Build Check
  description: Checks build at GM.
  tags:
  - devops
  - azure-devops
  - ci-cd
capability:
  exposes:
  - type: mcp
    namespace: azdo-build
    port: 8080
    tools:
    - name: check-build
      description: Check build at GM.
      inputParameters:
      - name: project
        in: body
        type: string
        description: Project.
      - name: build_id
        in: body
        type: string
        description: Build ID.
      call: azdo.get-build
      with:
        project: '{{project}}'
        build_id: '{{build_id}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: azdo
    baseUri: https://dev.azure.com/gm.com
    authentication:
      type: bearer
      token: $secrets.azdo_token
    resources:
    - name: builds
      path: /{{project}}/_apis/build/builds/{{build_id}}
      inputParameters:
      - name: project
        in: path
      - name: build_id
        in: path
      operations:
      - name: get-build
        method: GET
Open in Framework → View in Fleet → azure-devops-build-check.yml

Creates postmortems at GM.

naftiko: '0.5'
info:
  label: Incident Postmortem Pipeline
  description: Creates postmortems at GM.
  tags:
  - incident-management
  - postmortem
  - pagerduty
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: postmortem
    port: 8080
    tools:
    - name: create-postmortem
      description: Create postmortem at GM.
      inputParameters:
      - name: incident_id
        in: body
        type: string
        description: Incident ID.
      steps:
      - name: timeline
        type: call
        call: pagerduty.get-log
        with:
          id: '{{incident_id}}'
      - name: metrics
        type: call
        call: datadog.get-metrics
        with:
          incident: '{{incident_id}}'
      - name: doc
        type: call
        call: confluence.create-page
        with:
          title: 'Postmortem: {{timeline.title}}'
          body: 'Impact: {{metrics.impact}}'
      - name: review
        type: call
        call: calendar.create-event
        with:
          title: 'Review: {{timeline.title}}'
  consumes:
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: incidents
      path: /incidents/{{id}}/log_entries
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-log
        method: GET
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v2
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: incidents
      path: /incidents
      operations:
      - name: get-metrics
        method: GET
  - type: http
    namespace: confluence
    baseUri: https://gm.com.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: pages
      path: /content
      operations:
      - name: create-page
        method: POST
  - type: http
    namespace: calendar
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.microsoft_graph_token
    resources:
    - name: events
      path: /users/sre/events
      operations:
      - name: create-event
        method: POST
Open in Framework → View in Fleet → incident-postmortem-pipeline.yml

Offboards employees at GM via Okta, Slack, ServiceNow, and storage.

naftiko: '0.5'
info:
  label: Employee Offboarding Pipeline
  description: Offboards employees at GM via Okta, Slack, ServiceNow, and storage.
  tags:
  - hr
  - offboarding
  - okta
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: offboarding
    port: 8080
    tools:
    - name: offboard
      description: Offboard employees at GM.
      inputParameters:
      - name: emp_id
        in: body
        type: string
        description: Employee ID.
      - name: last_day
        in: body
        type: string
        description: Last day.
      steps:
      - name: disable
        type: call
        call: okta.deactivate
        with:
          user: '{{emp_id}}'
      - name: revoke
        type: call
        call: slack.remove
        with:
          user: '{{emp_id}}'
      - name: return
        type: call
        call: servicenow.create-request
        with:
          type: return
          emp: '{{emp_id}}'
      - name: archive
        type: call
        call: storage.archive
        with:
          user: '{{emp_id}}'
  consumes:
  - type: http
    namespace: okta
    baseUri: https://gm.com.okta.com/api/v1
    authentication:
      type: bearer
      token: $secrets.okta_api_token
    resources:
    - name: users
      path: /users/{{user}}/lifecycle/deactivate
      inputParameters:
      - name: user
        in: path
      operations:
      - name: deactivate
        method: POST
  - type: http
    namespace: slack
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: users
      path: /users.admin.remove
      operations:
      - name: remove
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://gm.com.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: requests
      path: /table/sc_request
      operations:
      - name: create-request
        method: POST
  - type: http
    namespace: storage
    baseUri: https://storage.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.storage_token
    resources:
    - name: archives
      path: /archive
      operations:
      - name: archive
        method: POST
Open in Framework → View in Fleet → employee-offboarding-pipeline.yml

Queries the GM dealer inventory system for current vehicle stock at a specific dealer by dealer code and optional model filter.

naftiko: '0.5'
info:
  label: Dealer Inventory Lookup
  description: Queries the GM dealer inventory system for current vehicle stock at a specific dealer by dealer code and optional model filter.
  tags:
  - dealer
  - inventory
  - sales
capability:
  exposes:
  - type: mcp
    namespace: dealer-inventory
    port: 8080
    tools:
    - name: get-dealer-inventory
      description: Query vehicle inventory at a dealer by dealer code and optional model filter.
      inputParameters:
      - name: dealer_code
        in: body
        type: string
        description: The GM dealer BAC code.
      - name: model
        in: body
        type: string
        description: Optional model name filter (e.g., Silverado, Equinox).
      call: dealer-api.get-inventory
      with:
        dealer_code: '{{dealer_code}}'
        model: '{{model}}'
      outputParameters:
      - name: total_units
        type: number
        mapping: $.inventory.totalCount
      - name: vehicles
        type: array
        mapping: $.inventory.vehicles
  consumes:
  - type: http
    namespace: dealer-api
    baseUri: https://dealer-api.gm.com/inventory/v2
    authentication:
      type: bearer
      token: $secrets.gm_dealer_api_token
    resources:
    - name: inventory
      path: /dealers/{{dealer_code}}/vehicles
      inputParameters:
      - name: dealer_code
        in: path
      - name: model
        in: query
      operations:
      - name: get-inventory
        method: GET
Open in Framework → View in Fleet → dealer-inventory-lookup.yml

Processes invoices at GM via OCR, SAP matching, approval, and Oracle recording.

naftiko: '0.5'
info:
  label: Vendor Invoice Processing Pipeline
  description: Processes invoices at GM via OCR, SAP matching, approval, and Oracle recording.
  tags:
  - finance
  - accounts-payable
  - sap
  - oracle
capability:
  exposes:
  - type: mcp
    namespace: invoice-proc
    port: 8080
    tools:
    - name: process-invoice
      description: Process invoices at GM.
      inputParameters:
      - name: invoice_id
        in: body
        type: string
        description: Invoice ID.
      - name: vendor_id
        in: body
        type: string
        description: Vendor ID.
      steps:
      - name: extract
        type: call
        call: ocr.extract
        with:
          doc: '{{invoice_id}}'
      - name: match
        type: call
        call: sap.match-po
        with:
          vendor: '{{vendor_id}}'
          amount: '{{extract.total}}'
      - name: approve
        type: call
        call: workflow.submit
        with:
          invoice: '{{invoice_id}}'
      - name: record
        type: call
        call: oracle.create-payment
        with:
          invoice: '{{invoice_id}}'
  consumes:
  - type: http
    namespace: ocr
    baseUri: https://ocr.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.ocr_token
    resources:
    - name: invoices
      path: /extract
      operations:
      - name: extract
        method: POST
  - type: http
    namespace: sap
    baseUri: https://sap.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: pos
      path: /match
      operations:
      - name: match-po
        method: POST
  - type: http
    namespace: workflow
    baseUri: https://workflow.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.workflow_token
    resources:
    - name: approvals
      path: /submit
      operations:
      - name: submit
        method: POST
  - type: http
    namespace: oracle
    baseUri: https://oracle.gm.com/api/v1
    authentication:
      type: bearer
      token: $secrets.oracle_token
    resources:
    - name: payments
      path: /payments
      operations:
      - name: create-payment
        method: POST
Open in Framework → View in Fleet → vendor-invoice-processing-pipeline.yml

Checks the current power state of an Azure virtual machine.

naftiko: '0.5'
info:
  label: Azure VM Power State Check
  description: Checks the current power state of an Azure virtual machine.
  tags:
  - cloud
  - azure
  - compute
capability:
  exposes:
  - type: mcp
    namespace: cloud
    port: 8080
    tools:
    - name: get-vm-power-state
      description: Given a VM name, return the current power state.
      inputParameters:
      - name: vm_name
        in: body
        type: string
        description: Azure VM name.
      call: azure.get-vm-status
      with:
        vmName: '{{vm_name}}'
      outputParameters:
      - name: result_id
        type: string
        mapping: $.id
      - name: result_status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: azure
    baseUri: https://management.azure.com
    authentication:
      type: bearer
      token: $secrets.azure_mgmt_token
    resources:
    - name: vms
      path: /virtualMachines
      inputParameters:
      - name: vmName
        in: path
      operations:
      - name: get-vm-status
        method: GET
Open in Framework → View in Fleet → azure-vm-power-state-check.yml

Escalates a ServiceNow incident to P1, reassigns it to Honda's IT escalation group, and notifies the CTO via Teams when a critical system (ERP, connected-vehicle platform, or manufacturing) is impacted.

naftiko: '0.5'
info:
  label: ServiceNow Incident Escalation
  description: Escalates a ServiceNow incident to P1, reassigns it to Honda's IT escalation group, and notifies the CTO via Teams when a critical system (ERP, connected-vehicle platform, or manufacturing) is impacted.
  tags:
  - itsm
  - incident-response
  - servicenow
  - microsoft-teams
  - escalation
  - sla
capability:
  exposes:
  - type: mcp
    namespace: itsm-escalation
    port: 8080
    tools:
    - name: escalate-incident
      description: Given a ServiceNow incident number and escalation reason, update priority to P1, reassign to the IT escalation group, and notify the CTO channel in Teams. Use for critical Honda system failures affecting manufacturing, EV platforms, or enterprise operations.
      inputParameters:
      - name: incident_number
        in: body
        type: string
        description: The ServiceNow incident number, e.g. INC0078901.
      - name: escalation_reason
        in: body
        type: string
        description: Business impact and reason for escalation.
      steps:
      - name: update-incident
        type: call
        call: servicenow-esc.patch-incident
        with:
          incident_number: '{{incident_number}}'
          priority: '1'
          assignment_group: IT_Escalation
          work_notes: 'Escalated to P1: {{escalation_reason}}'
      - name: notify-cto
        type: call
        call: msteams-esc.post-channel-message
        with:
          channel_id: $secrets.teams_cto_channel_id
          message: 'CRITICAL ESCALATION P1 | Incident: {{incident_number}} | Impact: {{escalation_reason}} | IT Escalation team engaged. Manufacturing or platform impact possible.'
  consumes:
  - type: http
    namespace: servicenow-esc
    baseUri: https://honda.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      inputParameters:
      - name: incident_number
        in: query
      operations:
      - name: patch-incident
        method: PATCH
  - type: http
    namespace: msteams-esc
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → servicenow-incident-escalation.yml

When an Azure DevOps build fails, creates a Jira bug and notifies the development team in Teams.

naftiko: '0.5'
info:
  label: Azure DevOps Build Failure Notification
  description: When an Azure DevOps build fails, creates a Jira bug and notifies the development team in Teams.
  tags:
  - devops
  - azure-devops
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: devops
    port: 8080
    tools:
    - name: azure-devops-build-failure-notification
      description: When an Azure DevOps build fails, creates a Jira bug and notifies the development team in Teams.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-azdo
        type: call
        call: azdo.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-jira
        type: call
        call: jira.create-record
        with:
          reference: '{{process-azdo.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_devops_team_id
          channel_id: $secrets.teams_devops_channel_id
          text: 'Azure DevOps Build Failure Notification: {{source_id}} | {{summary}} | Ref: {{create-jira.id}}'
  consumes:
  - type: http
    namespace: azdo
    baseUri: https://dev.azure.com
    authentication:
      type: bearer
      token: $secrets.azdo_token
    resources:
    - name: records
      path: /pipelines
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: jira
    baseUri: https://honda.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: records
      path: /issue
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → azure-devops-build-failure-notification.yml

When a Salesforce CPQ quote is approved, sends it for signature and updates Salesforce.

naftiko: '0.5'
info:
  label: Salesforce Quote Approval to Contract Send
  description: When a Salesforce CPQ quote is approved, sends it for signature and updates Salesforce.
  tags:
  - quote-to-cash
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: quote-to-cash
    port: 8080
    tools:
    - name: salesforce-quote-approval-to-contract-send
      description: When a Salesforce CPQ quote is approved, sends it for signature and updates Salesforce.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-salesforce
        type: call
        call: salesforce.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-msteams
        type: call
        call: msteams.create-record
        with:
          reference: '{{process-salesforce.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_quote_to_cash_team_id
          channel_id: $secrets.teams_quote_to_cash_channel_id
          text: 'Salesforce Quote Approval to Contract Send: {{source_id}} | {{summary}} | Ref: {{create-msteams.id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://honda.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: records
      path: /sobjects
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: records
      path: /teams
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → salesforce-quote-approval-to-contract-send.yml

Retrieves impression, reach, and lead generation metrics from Meta Ads for Honda's vehicle launch campaigns and posts a weekly performance digest to the digital marketing Teams channel.

naftiko: '0.5'
info:
  label: Meta Automotive Campaign Performance Digest
  description: Retrieves impression, reach, and lead generation metrics from Meta Ads for Honda's vehicle launch campaigns and posts a weekly performance digest to the digital marketing Teams channel.
  tags:
  - marketing
  - social
  - meta
  - microsoft-teams
  - digital-marketing
  - automotive
capability:
  exposes:
  - type: mcp
    namespace: digital-marketing
    port: 8080
    tools:
    - name: digest-meta-auto-campaigns
      description: Given a Meta ad account ID and date preset, retrieve vehicle campaign metrics (impressions, reach, leads, cost-per-lead) and post a digest to the digital marketing Teams channel.
      inputParameters:
      - name: ad_account_id
        in: body
        type: string
        description: The Meta ad account ID for Honda's automotive campaigns.
      - name: date_preset
        in: body
        type: string
        description: Meta Insights date preset, e.g. last_7d or last_30d.
      steps:
      - name: get-insights
        type: call
        call: meta.get-ad-insights
        with:
          ad_account_id: '{{ad_account_id}}'
          date_preset: '{{date_preset}}'
      - name: post-digest
        type: call
        call: msteams-mktg.post-channel-message
        with:
          channel_id: $secrets.teams_marketing_channel_id
          message: 'Meta Automotive Campaign Digest | Account: {{ad_account_id}} | Period: {{date_preset}} | Insights retrieved. Full breakdown in Ads Manager.'
  consumes:
  - type: http
    namespace: meta
    baseUri: https://graph.facebook.com/v18.0
    authentication:
      type: bearer
      token: $secrets.meta_access_token
    resources:
    - name: ad-insights
      path: /{{ad_account_id}}/insights
      inputParameters:
      - name: ad_account_id
        in: path
      - name: date_preset
        in: query
      operations:
      - name: get-ad-insights
        method: GET
  - type: http
    namespace: msteams-mktg
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → meta-automotive-campaign-performance-digest.yml

Retrieves engagement and follower metrics for Honda's LinkedIn sponsored content and employer brand posts over the past 30 days, posting a digest to the talent acquisition Teams channel.

naftiko: '0.5'
info:
  label: LinkedIn Employer Brand Campaign Digest
  description: Retrieves engagement and follower metrics for Honda's LinkedIn sponsored content and employer brand posts over the past 30 days, posting a digest to the talent acquisition Teams channel.
  tags:
  - marketing
  - hr
  - linkedin
  - employer-brand
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: talent-brand
    port: 8080
    tools:
    - name: digest-linkedin-employer-brand
      description: Retrieve LinkedIn follower statistics and post engagement metrics for Honda's company page, then post a digest to the talent acquisition channel in Teams. Use for monthly employer brand performance reviews.
      inputParameters:
      - name: organization_id
        in: body
        type: string
        description: Honda's LinkedIn organization URN ID.
      - name: date_range_days
        in: body
        type: integer
        description: Number of days to include in the report, e.g. 30.
      steps:
      - name: get-follower-stats
        type: call
        call: linkedin.get-follower-statistics
        with:
          organization_id: '{{organization_id}}'
      - name: post-digest
        type: call
        call: msteams-talent.post-channel-message
        with:
          channel_id: $secrets.teams_talent_channel_id
          message: LinkedIn Employer Brand Digest | Honda | Last {{date_range_days}} days | Follower and engagement stats retrieved. Full report available in LinkedIn Campaign Manager.
  consumes:
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: follower-statistics
      path: /organizationalEntityFollowerStatistics
      inputParameters:
      - name: organization_id
        in: query
      operations:
      - name: get-follower-statistics
        method: GET
  - type: http
    namespace: msteams-talent
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → linkedin-employer-brand-campaign-digest.yml

When code scanning finds a high-severity issue, creates a Jira remediation ticket and notifies security.

naftiko: '0.5'
info:
  label: GitHub Code Scanning to Jira Remediation
  description: When code scanning finds a high-severity issue, creates a Jira remediation ticket and notifies security.
  tags:
  - security
  - github
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: security
    port: 8080
    tools:
    - name: github-code-scanning-to-jira-remediation
      description: When code scanning finds a high-severity issue, creates a Jira remediation ticket and notifies security.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-github
        type: call
        call: github.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-jira
        type: call
        call: jira.create-record
        with:
          reference: '{{process-github.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_security_team_id
          channel_id: $secrets.teams_security_channel_id
          text: 'GitHub Code Scanning to Jira Remediation: {{source_id}} | {{summary}} | Ref: {{create-jira.id}}'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: records
      path: /repos
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: jira
    baseUri: https://honda.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: records
      path: /issue
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → github-code-scanning-to-jira-remediation.yml

When Datadog APM detects latency degradation, triggers a GitHub Actions rollback and creates a Jira incident.

naftiko: '0.5'
info:
  label: Datadog APM Degradation to Rollback
  description: When Datadog APM detects latency degradation, triggers a GitHub Actions rollback and creates a Jira incident.
  tags:
  - observability
  - datadog
  - github
  - jira
capability:
  exposes:
  - type: mcp
    namespace: observability
    port: 8080
    tools:
    - name: datadog-apm-degradation-to-rollback
      description: When Datadog APM detects latency degradation, triggers a GitHub Actions rollback and creates a Jira incident.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-datadog
        type: call
        call: datadog.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-github
        type: call
        call: github.create-record
        with:
          reference: '{{process-datadog.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_observability_team_id
          channel_id: $secrets.teams_observability_channel_id
          text: 'Datadog APM Degradation to Rollback: {{source_id}} | {{summary}} | Ref: {{create-github.id}}'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: records
      path: /events
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: records
      path: /repos
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → datadog-apm-degradation-to-rollback.yml

When Okta detects suspicious login activity, creates a ServiceNow security incident and alerts SOC via PagerDuty.

naftiko: '0.5'
info:
  label: Okta Suspicious Activity to SOC Alert
  description: When Okta detects suspicious login activity, creates a ServiceNow security incident and alerts SOC via PagerDuty.
  tags:
  - security
  - okta
  - servicenow
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: security
    port: 8080
    tools:
    - name: okta-suspicious-activity-to-soc-alert
      description: When Okta detects suspicious login activity, creates a ServiceNow security incident and alerts SOC via PagerDuty.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-okta
        type: call
        call: okta.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-servicenow
        type: call
        call: servicenow.create-record
        with:
          reference: '{{process-okta.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_security_team_id
          channel_id: $secrets.teams_security_channel_id
          text: 'Okta Suspicious Activity to SOC Alert: {{source_id}} | {{summary}} | Ref: {{create-servicenow.id}}'
  consumes:
  - type: http
    namespace: okta
    baseUri: https://honda.okta.com/api/v1
    authentication:
      type: bearer
      token: $secrets.okta_api_token
    resources:
    - name: records
      path: /users
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://honda.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: records
      path: /table/incident
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → okta-suspicious-activity-to-soc-alert.yml

When GitHub Actions tests fail, creates a Jira bug and alerts the QA channel in Microsoft Teams.

naftiko: '0.5'
info:
  label: GitHub Actions Test Failure to Teams Alert
  description: When GitHub Actions tests fail, creates a Jira bug and alerts the QA channel in Microsoft Teams.
  tags:
  - devops
  - github
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: devops
    port: 8080
    tools:
    - name: github-actions-test-failure-to-teams-alert
      description: When GitHub Actions tests fail, creates a Jira bug and alerts the QA channel in Microsoft Teams.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-github
        type: call
        call: github.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-jira
        type: call
        call: jira.create-record
        with:
          reference: '{{process-github.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_devops_team_id
          channel_id: $secrets.teams_devops_channel_id
          text: 'GitHub Actions Test Failure to Teams Alert: {{source_id}} | {{summary}} | Ref: {{create-jira.id}}'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: records
      path: /repos
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: jira
    baseUri: https://honda.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: records
      path: /issue
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → github-actions-test-failure-to-teams-alert.yml

Enriches a company record with firmographic data from ZoomInfo.

naftiko: '0.5'
info:
  label: ZoomInfo Company Enrichment Lookup
  description: Enriches a company record with firmographic data from ZoomInfo.
  tags:
  - sales
  - zoominfo
  - data-enrichment
capability:
  exposes:
  - type: mcp
    namespace: sales
    port: 8080
    tools:
    - name: enrich-company
      description: Given a domain, return the ZoomInfo company profile.
      inputParameters:
      - name: domain
        in: body
        type: string
        description: Company website domain.
      call: zoominfo.enrich-company
      with:
        companyWebsite: '{{domain}}'
      outputParameters:
      - name: result_id
        type: string
        mapping: $.id
      - name: result_status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: zoominfo
    baseUri: https://api.example.com/v1
    authentication:
      type: bearer
      token: $secrets.zoominfo_token
    resources:
    - name: enrich
      path: /enrich/company
      inputParameters:
      - name: companyWebsite
        in: query
      operations:
      - name: enrich-company
        method: GET
Open in Framework → View in Fleet → zoominfo-company-enrichment-lookup.yml

When a Honda associate's termination is confirmed in Workday, creates a ServiceNow offboarding ticket for access revocation and notifies the IT operations team via Teams.

naftiko: '0.5'
info:
  label: Employee Offboarding Orchestrator
  description: When a Honda associate's termination is confirmed in Workday, creates a ServiceNow offboarding ticket for access revocation and notifies the IT operations team via Teams.
  tags:
  - hr
  - offboarding
  - workday
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-offboarding
    port: 8080
    tools:
    - name: trigger-offboarding
      description: Given a Workday employee ID and termination date, open a ServiceNow access-revocation ticket and notify the IT operations team in Teams. Use when an associate's termination is confirmed in Workday.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The Workday worker ID of the departing associate.
      - name: termination_date
        in: body
        type: string
        description: The associate's last working day in YYYY-MM-DD format.
      steps:
      - name: get-worker
        type: call
        call: workday-off.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: create-offboarding-ticket
        type: call
        call: servicenow-off.create-incident
        with:
          short_description: 'Offboarding: {{get-worker.display_name}} — last day {{termination_date}}'
          category: hr_offboarding
          description: Associate {{get-worker.display_name}} ({{employee_id}}) terminates {{termination_date}}. Revoke all system, network, and building access.
      - name: notify-it-ops
        type: call
        call: msteams-off.post-channel-message
        with:
          channel_id: $secrets.teams_it_ops_channel_id
          message: 'Offboarding initiated | Associate: {{get-worker.display_name}} | Last day: {{termination_date}} | Ticket: {{create-offboarding-ticket.number}} | Begin access revocation.'
  consumes:
  - type: http
    namespace: workday-off
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /honda/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: servicenow-off
    baseUri: https://honda.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: msteams-off
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → employee-offboarding-orchestrator.yml

When a GitHub pull request is merged, transitions the linked Jira issue to Done and posts a release note to Confluence.

naftiko: '0.5'
info:
  label: GitHub PR Merge to Jira Transition
  description: When a GitHub pull request is merged, transitions the linked Jira issue to Done and posts a release note to Confluence.
  tags:
  - devops
  - github
  - jira
  - confluence
capability:
  exposes:
  - type: mcp
    namespace: devops
    port: 8080
    tools:
    - name: github-pr-merge-to-jira-transition
      description: When a GitHub pull request is merged, transitions the linked Jira issue to Done and posts a release note to Confluence.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-github
        type: call
        call: github.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-jira
        type: call
        call: jira.create-record
        with:
          reference: '{{process-github.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_devops_team_id
          channel_id: $secrets.teams_devops_channel_id
          text: 'GitHub PR Merge to Jira Transition: {{source_id}} | {{summary}} | Ref: {{create-jira.id}}'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: records
      path: /repos
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: jira
    baseUri: https://honda.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: records
      path: /issue
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → github-pr-merge-to-jira-transition.yml

Retrieves the latest auto parts demand forecast from Salesforce for a component SKU and pushes the planned independent requirement into SAP S/4HANA for production planning.

naftiko: '0.5'
info:
  label: Supply Chain Parts Demand Forecast Sync
  description: Retrieves the latest auto parts demand forecast from Salesforce for a component SKU and pushes the planned independent requirement into SAP S/4HANA for production planning.
  tags:
  - supply-chain
  - salesforce
  - sap
  - erp
  - demand-planning
  - manufacturing
capability:
  exposes:
  - type: mcp
    namespace: supply-chain-planning
    port: 8080
    tools:
    - name: sync-parts-demand-forecast
      description: Given a parts SKU and planning period, retrieve the demand forecast from Salesforce and create a planned independent requirement in SAP S/4HANA. Use for monthly production planning and parts procurement alignment.
      inputParameters:
      - name: part_number
        in: body
        type: string
        description: The Honda parts number or component SKU, e.g. 45251-T20-A01.
      - name: planning_period
        in: body
        type: string
        description: The planning period in YYYYMM format, e.g. 202504.
      - name: forecast_quantity
        in: body
        type: string
        description: Forecasted demand quantity in units.
      steps:
      - name: get-forecast
        type: call
        call: salesforce-forecast.get-parts-forecast
        with:
          part_number: '{{part_number}}'
      - name: push-to-sap
        type: call
        call: sap-pir.create-planned-requirement
        with:
          material: '{{part_number}}'
          planning_period: '{{planning_period}}'
          quantity: '{{forecast_quantity}}'
  consumes:
  - type: http
    namespace: salesforce-forecast
    baseUri: https://honda.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: parts-forecast
      path: /query
      inputParameters:
      - name: q
        in: query
      operations:
      - name: get-parts-forecast
        method: GET
  - type: http
    namespace: sap-pir
    baseUri: https://honda-s4.sap.com/sap/opu/odata/sap/API_PLND_INDEP_REQMT_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: planned-requirements
      path: /A_PlannedIndepRqmt
      operations:
      - name: create-planned-requirement
        method: POST
Open in Framework → View in Fleet → supply-chain-parts-demand-forecast-sync.yml

When a Honda associate changes roles in Workday (e.g., engineer to lead engineer or cross-division transfer), creates a ServiceNow access update request and notifies the new manager via Teams.

naftiko: '0.5'
info:
  label: Workday Role Change Provisioning
  description: When a Honda associate changes roles in Workday (e.g., engineer to lead engineer or cross-division transfer), creates a ServiceNow access update request and notifies the new manager via Teams.
  tags:
  - hr
  - access-management
  - workday
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-role-change
    port: 8080
    tools:
    - name: provision-role-change
      description: Given a Workday employee ID, new role, effective date, and new manager UPN, create a ServiceNow access-update request and notify the new manager in Teams. Use for promotions and cross-division transfers.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The Workday worker ID of the associate changing roles.
      - name: new_role
        in: body
        type: string
        description: The new job title, e.g. Senior Software Engineer or Vehicle Program Manager.
      - name: effective_date
        in: body
        type: string
        description: The effective date of the role change in YYYY-MM-DD format.
      - name: new_manager_upn
        in: body
        type: string
        description: The Microsoft 365 UPN of the new manager.
      steps:
      - name: get-worker
        type: call
        call: workday-rc.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: create-access-request
        type: call
        call: servicenow-rc.create-incident
        with:
          short_description: 'Access update for {{get-worker.display_name}} — new role: {{new_role}}'
          category: access_management
      - name: notify-manager
        type: call
        call: msteams-rc.send-message
        with:
          recipient_upn: '{{new_manager_upn}}'
          message: '{{get-worker.display_name}} will join your team as {{new_role}} on {{effective_date}}. Access update request: {{create-access-request.number}}.'
  consumes:
  - type: http
    namespace: workday-rc
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /honda/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: servicenow-rc
    baseUri: https://honda.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: msteams-rc
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: mail
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → workday-role-change-provisioning.yml

When a ServiceNow P1 incident is created, schedules a Teams bridge and pages the incident commander via PagerDuty.

naftiko: '0.5'
info:
  label: ServiceNow Major Incident Bridge Setup
  description: When a ServiceNow P1 incident is created, schedules a Teams bridge and pages the incident commander via PagerDuty.
  tags:
  - itsm
  - servicenow
  - microsoft-teams
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: itsm
    port: 8080
    tools:
    - name: servicenow-major-incident-bridge-setup
      description: When a ServiceNow P1 incident is created, schedules a Teams bridge and pages the incident commander via PagerDuty.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-servicenow
        type: call
        call: servicenow.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-msteams
        type: call
        call: msteams.create-record
        with:
          reference: '{{process-servicenow.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_itsm_team_id
          channel_id: $secrets.teams_itsm_channel_id
          text: 'ServiceNow Major Incident Bridge Setup: {{source_id}} | {{summary}} | Ref: {{create-msteams.id}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://honda.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: records
      path: /table/incident
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: records
      path: /teams
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → servicenow-major-incident-bridge-setup.yml

When a GitHub Actions workflow fails on a main or release branch, creates a ServiceNow incident, opens a GitHub issue for the engineering team, and alerts the engineering Teams channel.

naftiko: '0.5'
info:
  label: GitHub Actions CI/CD Failure Handler
  description: When a GitHub Actions workflow fails on a main or release branch, creates a ServiceNow incident, opens a GitHub issue for the engineering team, and alerts the engineering Teams channel.
  tags:
  - devops
  - cicd
  - github
  - servicenow
  - microsoft-teams
  - incident-response
capability:
  exposes:
  - type: mcp
    namespace: devops-cicd
    port: 8080
    tools:
    - name: handle-pipeline-failure
      description: Given a GitHub Actions workflow run ID, repository, and branch, create a ServiceNow incident, open a GitHub issue, and alert the engineering Teams channel. Use when a protected branch CI/CD workflow fails.
      inputParameters:
      - name: repository
        in: body
        type: string
        description: The GitHub repository in owner/repo format, e.g. honda-tech/ev-platform.
      - name: workflow_name
        in: body
        type: string
        description: The GitHub Actions workflow name that failed.
      - name: run_id
        in: body
        type: string
        description: The GitHub Actions workflow run ID.
      - name: branch
        in: body
        type: string
        description: The branch name, e.g. main or release/2025-q2.
      - name: run_url
        in: body
        type: string
        description: Direct URL to the failed workflow run.
      steps:
      - name: create-incident
        type: call
        call: servicenow-cicd.create-incident
        with:
          short_description: 'CI failure: {{repository}} / {{branch}} — {{workflow_name}}'
          category: devops
          urgency: '2'
      - name: open-github-issue
        type: call
        call: github.create-issue
        with:
          repository: '{{repository}}'
          title: '[CI Failure] {{workflow_name}} on {{branch}} (Run {{run_id}})'
          body: 'Workflow {{workflow_name}} failed on {{branch}}.


            Run ID: {{run_id}}

            Run URL: {{run_url}}

            ServiceNow Incident: {{create-incident.number}}'
      - name: alert-engineering
        type: call
        call: msteams-cicd.post-channel-message
        with:
          channel_id: $secrets.teams_engineering_channel_id
          message: 'CI Failure | Repo: {{repository}} | Branch: {{branch}} | Workflow: {{workflow_name}} | Incident: {{create-incident.number}} | Issue: {{open-github-issue.number}} | URL: {{run_url}}'
  consumes:
  - type: http
    namespace: servicenow-cicd
    baseUri: https://honda.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: issues
      path: /repos/{{repository}}/issues
      inputParameters:
      - name: repository
        in: path
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: msteams-cicd
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → github-actions-ci-cd-failure-handler.yml

Retrieves the current stage and amount of a HubSpot deal.

naftiko: '0.5'
info:
  label: HubSpot Deal Stage Lookup
  description: Retrieves the current stage and amount of a HubSpot deal.
  tags:
  - crm
  - hubspot
  - sales
capability:
  exposes:
  - type: mcp
    namespace: crm
    port: 8080
    tools:
    - name: get-deal-stage
      description: Given a HubSpot deal ID, return the deal stage.
      inputParameters:
      - name: deal_id
        in: body
        type: string
        description: HubSpot deal ID.
      call: hubspot.get-deal
      with:
        dealId: '{{deal_id}}'
      outputParameters:
      - name: result_id
        type: string
        mapping: $.id
      - name: result_status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com/crm/v3
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: deals
      path: /objects/deals
      inputParameters:
      - name: dealId
        in: path
      operations:
      - name: get-deal
        method: GET
Open in Framework → View in Fleet → hubspot-deal-stage-lookup.yml

Retrieves open pull requests from a GitHub repository that are awaiting review for more than 24 hours and posts a triage summary to the engineering Teams channel.

naftiko: '0.5'
info:
  label: GitHub Pull Request Code Review Triage
  description: Retrieves open pull requests from a GitHub repository that are awaiting review for more than 24 hours and posts a triage summary to the engineering Teams channel.
  tags:
  - devops
  - github
  - code-review
  - microsoft-teams
  - engineering
capability:
  exposes:
  - type: mcp
    namespace: devops-reviews
    port: 8080
    tools:
    - name: triage-stale-pull-requests
      description: Given a GitHub repository and a staleness threshold in hours, list open pull requests awaiting review and post a triage digest to the engineering Teams channel. Use for daily PR backlog reviews.
      inputParameters:
      - name: repository
        in: body
        type: string
        description: The GitHub repository in owner/repo format, e.g. honda-tech/connected-services.
      - name: stale_hours
        in: body
        type: integer
        description: Number of hours before a PR is considered stale, e.g. 24.
      steps:
      - name: list-prs
        type: call
        call: github-prs.list-pull-requests
        with:
          repository: '{{repository}}'
      - name: post-triage
        type: call
        call: msteams-reviews.post-channel-message
        with:
          channel_id: $secrets.teams_engineering_channel_id
          message: 'Stale PR Triage | Repo: {{repository}} | PRs awaiting review >{{stale_hours}}h | Please review and assign reviewers to unblocked PRs.'
  consumes:
  - type: http
    namespace: github-prs
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: pull-requests
      path: /repos/{{repository}}/pulls
      inputParameters:
      - name: repository
        in: path
      - name: state
        in: query
      operations:
      - name: list-pull-requests
        method: GET
  - type: http
    namespace: msteams-reviews
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → github-pull-request-code-review-triage.yml

Returns the current global headcount breakdown by division, department, and cost center from Workday for workforce planning and finance reporting.

naftiko: '0.5'
info:
  label: Payroll Headcount Snapshot
  description: Returns the current global headcount breakdown by division, department, and cost center from Workday for workforce planning and finance reporting.
  tags:
  - hr
  - finance
  - reporting
  - workday
  - headcount
capability:
  exposes:
  - type: mcp
    namespace: hr-reporting
    port: 8080
    tools:
    - name: get-headcount-snapshot
      description: Returns headcount grouped by division, department, and cost center from Workday. Use for workforce planning, labor cost analysis, and quarterly finance headcount submissions.
      call: workday-hc.headcount-report
      outputParameters:
      - name: employees
        type: array
        mapping: $.Report_Entry
        items:
        - name: employee_id
          type: string
          mapping: $.Employee_ID
        - name: full_name
          type: string
          mapping: $.Employee_Name
        - name: division
          type: string
          mapping: $.Division
        - name: department
          type: string
          mapping: $.Department
        - name: cost_center
          type: string
          mapping: $.Cost_Center
        - name: employment_type
          type: string
          mapping: $.Employment_Type
  consumes:
  - type: http
    namespace: workday-hc
    baseUri: https://wd2-impl-services1.workday.com/ccx/service/customreport2/honda
    authentication:
      type: basic
      username: $secrets.workday_report_user
      password: $secrets.workday_report_password
    resources:
    - name: headcount
      path: /Headcount_By_Division_Department
      operations:
      - name: headcount-report
        method: GET
        outputRawFormat: json
Open in Framework → View in Fleet → payroll-headcount-snapshot.yml

When Azure Policy detects a non-compliant resource, creates a Jira remediation ticket.

naftiko: '0.5'
info:
  label: Azure Resource Compliance to Jira Remediation
  description: When Azure Policy detects a non-compliant resource, creates a Jira remediation ticket.
  tags:
  - compliance
  - azure
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: compliance
    port: 8080
    tools:
    - name: azure-resource-compliance-to-jira-remediation
      description: When Azure Policy detects a non-compliant resource, creates a Jira remediation ticket.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-azure
        type: call
        call: azure.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-jira
        type: call
        call: jira.create-record
        with:
          reference: '{{process-azure.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_compliance_team_id
          channel_id: $secrets.teams_compliance_channel_id
          text: 'Azure Resource Compliance to Jira Remediation: {{source_id}} | {{summary}} | Ref: {{create-jira.id}}'
  consumes:
  - type: http
    namespace: azure
    baseUri: https://management.azure.com
    authentication:
      type: bearer
      token: $secrets.azure_mgmt_token
    resources:
    - name: records
      path: /subscriptions
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: jira
    baseUri: https://honda.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: records
      path: /issue
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → azure-resource-compliance-to-jira-remediation.yml

Lists all channels in a Microsoft Teams team.

naftiko: '0.5'
info:
  label: Microsoft Teams Channel List
  description: Lists all channels in a Microsoft Teams team.
  tags:
  - collaboration
  - microsoft-teams
  - messaging
capability:
  exposes:
  - type: mcp
    namespace: collaboration
    port: 8080
    tools:
    - name: list-team-channels
      description: Given a Teams team ID, return the channel list.
      inputParameters:
      - name: team_id
        in: body
        type: string
        description: Microsoft Teams team ID.
      call: msteams.list-channels
      with:
        teamId: '{{team_id}}'
      outputParameters:
      - name: result_id
        type: string
        mapping: $.id
      - name: result_status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: msteams
    baseUri: https://api.example.com/v1
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams
      inputParameters:
      - name: teamId
        in: path
      operations:
      - name: list-channels
        method: GET
Open in Framework → View in Fleet → microsoft-teams-channel-list.yml

Retrieves SLO compliance data from Datadog for Honda's connected services and telematics platforms, publishing a weekly compliance digest to the engineering leadership Teams channel.

naftiko: '0.5'
info:
  label: Datadog SLO Compliance Report
  description: Retrieves SLO compliance data from Datadog for Honda's connected services and telematics platforms, publishing a weekly compliance digest to the engineering leadership Teams channel.
  tags:
  - observability
  - slo
  - datadog
  - microsoft-teams
  - reporting
  - automotive
capability:
  exposes:
  - type: mcp
    namespace: observability-reporting
    port: 8080
    tools:
    - name: digest-slo-compliance
      description: Given a Datadog SLO ID and time window, retrieve compliance percentage and error budget, then post a digest to the engineering leadership channel in Teams. Use weekly for connected-vehicle and telematics SLO reviews.
      inputParameters:
      - name: slo_id
        in: body
        type: string
        description: The Datadog SLO ID to check, e.g. for telematics or connected-vehicle APIs.
      - name: time_window
        in: body
        type: string
        description: The SLO rolling window, e.g. 7d or 30d.
      steps:
      - name: get-slo-history
        type: call
        call: datadog.get-slo-history
        with:
          slo_id: '{{slo_id}}'
      - name: post-digest
        type: call
        call: msteams-slo.post-channel-message
        with:
          channel_id: $secrets.teams_engineering_channel_id
          message: 'SLO Compliance Report | SLO: {{slo_id}} | Window: {{time_window}} | Compliance and error budget data retrieved from Datadog.'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: slo-history
      path: /slo/{{slo_id}}/history
      inputParameters:
      - name: slo_id
        in: path
      operations:
      - name: get-slo-history
        method: GET
  - type: http
    namespace: msteams-slo
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → datadog-slo-compliance-report.yml

Retrieves category-level procurement spend data from SAP Ariba for the current quarter and posts a spend summary to the procurement leadership Teams channel for category management review.

naftiko: '0.5'
info:
  label: SAP Ariba Spend Analytics Digest
  description: Retrieves category-level procurement spend data from SAP Ariba for the current quarter and posts a spend summary to the procurement leadership Teams channel for category management review.
  tags:
  - procurement
  - finance
  - sap-ariba
  - reporting
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: procurement-reporting
    port: 8080
    tools:
    - name: digest-procurement-spend
      description: Given a spend category and quarter, retrieve Ariba spend analytics and post a digest to the procurement leadership channel in Teams. Use for quarterly category management reviews and cost reduction initiatives.
      inputParameters:
      - name: category
        in: body
        type: string
        description: The spend category, e.g. Steel, Semiconductors, Logistics, or Indirect Procurement.
      - name: quarter
        in: body
        type: string
        description: The fiscal quarter, e.g. Q1-2025.
      steps:
      - name: get-spend
        type: call
        call: ariba-analytics.get-spend-summary
        with:
          category: '{{category}}'
      - name: post-digest
        type: call
        call: msteams-procurement.post-channel-message
        with:
          channel_id: $secrets.teams_procurement_channel_id
          message: 'Procurement Spend Digest | Category: {{category}} | Quarter: {{quarter}} | Data retrieved from Ariba. Full report in Power BI procurement dashboard.'
  consumes:
  - type: http
    namespace: ariba-analytics
    baseUri: https://openapi.ariba.com/api/analytics-reporting-details/v1
    authentication:
      type: apikey
      key: apikey
      value: $secrets.ariba_api_key
      placement: header
    resources:
    - name: spend-summary
      path: /reports/spend
      inputParameters:
      - name: category
        in: query
      operations:
      - name: get-spend-summary
        method: GET
  - type: http
    namespace: msteams-procurement
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → sap-ariba-spend-analytics-digest.yml

Executes a count query against a Snowflake table and returns the row count.

naftiko: '0.5'
info:
  label: Snowflake Table Row Count
  description: Executes a count query against a Snowflake table and returns the row count.
  tags:
  - data
  - snowflake
  - analytics
capability:
  exposes:
  - type: mcp
    namespace: data
    port: 8080
    tools:
    - name: get-table-row-count
      description: Given a Snowflake table name, return the total row count.
      inputParameters:
      - name: table_name
        in: body
        type: string
        description: Fully qualified Snowflake table name.
      call: snowflake.execute-query
      with:
        statement: '{{table_name}}'
      outputParameters:
      - name: result_id
        type: string
        mapping: $.id
      - name: result_status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://honda.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      inputParameters:
      - name: statement
        in: query
      operations:
      - name: execute-query
        method: GET
Open in Framework → View in Fleet → snowflake-table-row-count.yml

Retrieves a Honda dealer account from Salesforce along with its recent vehicle order opportunities to surface relationship health metrics for the regional sales team.

naftiko: '0.5'
info:
  label: Salesforce Dealer Account Health Check
  description: Retrieves a Honda dealer account from Salesforce along with its recent vehicle order opportunities to surface relationship health metrics for the regional sales team.
  tags:
  - sales
  - crm
  - salesforce
  - dealer-management
  - automotive
capability:
  exposes:
  - type: mcp
    namespace: dealer-crm
    port: 8080
    tools:
    - name: get-dealer-account-health
      description: Given a Salesforce dealer account ID, retrieve account details and the five most recent vehicle order opportunities. Use for dealer relationship reviews and regional sales performance monitoring.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: The Salesforce account ID for the Honda dealer.
      steps:
      - name: get-account
        type: call
        call: salesforce-acct.get-account
        with:
          account_id: '{{account_id}}'
      - name: get-opportunities
        type: call
        call: salesforce-opps.list-opportunities
        with:
          account_id: '{{account_id}}'
  consumes:
  - type: http
    namespace: salesforce-acct
    baseUri: https://honda.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: salesforce-opps
    baseUri: https://honda.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunities
      path: /query
      inputParameters:
      - name: q
        in: query
      operations:
      - name: list-opportunities
        method: GET
Open in Framework → View in Fleet → salesforce-dealer-account-health-check.yml

Retrieves the priority and assignment group for a ServiceNow incident by number.

naftiko: '0.5'
info:
  label: ServiceNow Incident Priority Lookup
  description: Retrieves the priority and assignment group for a ServiceNow incident by number.
  tags:
  - itsm
  - servicenow
  - incident-management
capability:
  exposes:
  - type: mcp
    namespace: itsm
    port: 8080
    tools:
    - name: get-incident-priority
      description: Given a ServiceNow incident number, return the priority and assigned group.
      inputParameters:
      - name: incident_number
        in: body
        type: string
        description: ServiceNow incident number.
      call: servicenow.get-incident
      with:
        number: '{{incident_number}}'
      outputParameters:
      - name: result_id
        type: string
        mapping: $.id
      - name: result_status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://honda.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: incidents
      path: /table/incident
      inputParameters:
      - name: number
        in: query
      operations:
      - name: get-incident
        method: GET
Open in Framework → View in Fleet → servicenow-incident-priority-lookup.yml

When a Workday leave request is approved, notifies the manager and blocks the calendar.

naftiko: '0.5'
info:
  label: Workday Leave Request to Calendar Block
  description: When a Workday leave request is approved, notifies the manager and blocks the calendar.
  tags:
  - hr
  - workday
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr
    port: 8080
    tools:
    - name: workday-leave-request-to-calendar-block
      description: When a Workday leave request is approved, notifies the manager and blocks the calendar.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-workday
        type: call
        call: workday.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-msteams
        type: call
        call: msteams.create-record
        with:
          reference: '{{process-workday.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_hr_team_id
          channel_id: $secrets.teams_hr_channel_id
          text: 'Workday Leave Request to Calendar Block: {{source_id}} | {{summary}} | Ref: {{create-msteams.id}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://honda.workday.com/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: records
      path: /workers
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: records
      path: /teams
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → workday-leave-request-to-calendar-block.yml

Retrieves the health status of a monitored host in Dynatrace.

naftiko: '0.5'
info:
  label: Dynatrace Host Health Lookup
  description: Retrieves the health status of a monitored host in Dynatrace.
  tags:
  - observability
  - dynatrace
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: observability
    port: 8080
    tools:
    - name: get-host-health
      description: Given a Dynatrace host ID, return the health state.
      inputParameters:
      - name: host_id
        in: body
        type: string
        description: Dynatrace host entity ID.
      call: dynatrace.get-host
      with:
        entityId: '{{host_id}}'
      outputParameters:
      - name: result_id
        type: string
        mapping: $.id
      - name: result_status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: dynatrace
    baseUri: https://api.example.com/v1
    authentication:
      type: bearer
      token: $secrets.dynatrace_token
    resources:
    - name: entities
      path: /entities
      inputParameters:
      - name: entityId
        in: path
      operations:
      - name: get-host
        method: GET
Open in Framework → View in Fleet → dynatrace-host-health-lookup.yml

Retrieves the content and metadata of a Confluence page by page ID.

naftiko: '0.5'
info:
  label: Confluence Page Content Lookup
  description: Retrieves the content and metadata of a Confluence page by page ID.
  tags:
  - knowledge-management
  - confluence
  - documentation
capability:
  exposes:
  - type: mcp
    namespace: knowledge
    port: 8080
    tools:
    - name: get-page-content
      description: Given a Confluence page ID, return the title and body.
      inputParameters:
      - name: page_id
        in: body
        type: string
        description: Confluence page ID.
      call: confluence.get-page
      with:
        id: '{{page_id}}'
      outputParameters:
      - name: result_id
        type: string
        mapping: $.id
      - name: result_status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://honda.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: content
      path: /content
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-page
        method: GET
Open in Framework → View in Fleet → confluence-page-content-lookup.yml

When Azure Defender raises a security alert, creates a ServiceNow security incident and notifies the SOC team.

naftiko: '0.5'
info:
  label: Azure Security Alert to Incident Response
  description: When Azure Defender raises a security alert, creates a ServiceNow security incident and notifies the SOC team.
  tags:
  - security
  - azure
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: security
    port: 8080
    tools:
    - name: azure-security-alert-to-incident-response
      description: When Azure Defender raises a security alert, creates a ServiceNow security incident and notifies the SOC team.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-azure
        type: call
        call: azure.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-servicenow
        type: call
        call: servicenow.create-record
        with:
          reference: '{{process-azure.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_security_team_id
          channel_id: $secrets.teams_security_channel_id
          text: 'Azure Security Alert to Incident Response: {{source_id}} | {{summary}} | Ref: {{create-servicenow.id}}'
  consumes:
  - type: http
    namespace: azure
    baseUri: https://management.azure.com
    authentication:
      type: bearer
      token: $secrets.azure_mgmt_token
    resources:
    - name: records
      path: /subscriptions
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://honda.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: records
      path: /table/incident
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → azure-security-alert-to-incident-response.yml

Retrieves the current on-call engineer for a PagerDuty escalation policy.

naftiko: '0.5'
info:
  label: PagerDuty On-Call Lookup
  description: Retrieves the current on-call engineer for a PagerDuty escalation policy.
  tags:
  - incident-management
  - pagerduty
  - on-call
capability:
  exposes:
  - type: mcp
    namespace: incident-management
    port: 8080
    tools:
    - name: get-on-call-engineer
      description: Given a PagerDuty escalation policy ID, return the on-call engineer.
      inputParameters:
      - name: policy_id
        in: body
        type: string
        description: PagerDuty escalation policy ID.
      call: pagerduty.get-on-calls
      with:
        escalation_policy_ids: '{{policy_id}}'
      outputParameters:
      - name: result_id
        type: string
        mapping: $.id
      - name: result_status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: oncalls
      path: /oncalls
      inputParameters:
      - name: escalation_policy_ids
        in: query
      operations:
      - name: get-on-calls
        method: GET
Open in Framework → View in Fleet → pagerduty-on-call-lookup.yml

Lists all resources within an Azure resource group.

naftiko: '0.5'
info:
  label: Azure Resource Group Inventory
  description: Lists all resources within an Azure resource group.
  tags:
  - cloud
  - azure
  - infrastructure
capability:
  exposes:
  - type: mcp
    namespace: cloud
    port: 8080
    tools:
    - name: list-resources
      description: Given an Azure resource group, return the resource list.
      inputParameters:
      - name: resource_group
        in: body
        type: string
        description: Azure resource group name.
      call: azure.list-resources
      with:
        resourceGroupName: '{{resource_group}}'
      outputParameters:
      - name: result_id
        type: string
        mapping: $.id
      - name: result_status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: azure
    baseUri: https://management.azure.com
    authentication:
      type: bearer
      token: $secrets.azure_mgmt_token
    resources:
    - name: resources
      path: /subscriptions
      inputParameters:
      - name: resourceGroupName
        in: path
      operations:
      - name: list-resources
        method: GET
Open in Framework → View in Fleet → azure-resource-group-inventory.yml

Retrieves open engineering and manufacturing job requisitions and candidate pipeline counts from Workday Recruiting for a given Honda division or department.

naftiko: '0.5'
info:
  label: Workday Recruiting Pipeline Status
  description: Retrieves open engineering and manufacturing job requisitions and candidate pipeline counts from Workday Recruiting for a given Honda division or department.
  tags:
  - hr
  - recruiting
  - workday
  - talent-acquisition
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: hr-recruiting
    port: 8080
    tools:
    - name: get-recruiting-pipeline
      description: Given a Workday department ID, retrieve all open job requisitions and their candidate pipeline counts. Use for weekly talent acquisition reviews and hiring manager status updates across Honda divisions.
      inputParameters:
      - name: department_id
        in: body
        type: string
        description: The Workday department ID to retrieve open requisitions for.
      call: workday-rec.list-requisitions
      with:
        department_id: '{{department_id}}'
      outputParameters:
      - name: requisitions
        type: array
        mapping: $.data
        items:
        - name: req_id
          type: string
          mapping: $.id
        - name: job_title
          type: string
          mapping: $.jobTitle
        - name: status
          type: string
          mapping: $.status
        - name: candidate_count
          type: string
          mapping: $.candidateCount
  consumes:
  - type: http
    namespace: workday-rec
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/recruiting/v3
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: job-requisitions
      path: /jobRequisitions
      inputParameters:
      - name: department_id
        in: query
      operations:
      - name: list-requisitions
        method: GET
Open in Framework → View in Fleet → workday-recruiting-pipeline-status.yml

When SAP inventory falls below reorder point, creates an Ariba purchase requisition and notifies procurement.

naftiko: '0.5'
info:
  label: SAP Inventory Alert to Procurement Request
  description: When SAP inventory falls below reorder point, creates an Ariba purchase requisition and notifies procurement.
  tags:
  - supply-chain
  - sap
  - sap-ariba
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: supply-chain
    port: 8080
    tools:
    - name: sap-inventory-alert-to-procurement-request
      description: When SAP inventory falls below reorder point, creates an Ariba purchase requisition and notifies procurement.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-sap
        type: call
        call: sap.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-ariba
        type: call
        call: ariba.create-record
        with:
          reference: '{{process-sap.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_supply_chain_team_id
          channel_id: $secrets.teams_supply_chain_channel_id
          text: 'SAP Inventory Alert to Procurement Request: {{source_id}} | {{summary}} | Ref: {{create-ariba.id}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://honda-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: records
      path: /A_BusinessPartner
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: ariba
    baseUri: https://openapi.ariba.com/api/procurement/v1
    authentication:
      type: bearer
      token: $secrets.ariba_token
    resources:
    - name: records
      path: /requisitions
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → sap-inventory-alert-to-procurement-request.yml

Queries the current health status of a monitored service in Datadog.

naftiko: '0.5'
info:
  label: Datadog Service Status Check
  description: Queries the current health status of a monitored service in Datadog.
  tags:
  - observability
  - datadog
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: observability
    port: 8080
    tools:
    - name: get-service-status
      description: Given a Datadog service name, return the current monitor status.
      inputParameters:
      - name: service_name
        in: body
        type: string
        description: Name of the service to check.
      call: datadog.search-monitors
      with:
        query: '{{service_name}}'
      outputParameters:
      - name: result_id
        type: string
        mapping: $.id
      - name: result_status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: monitors
      path: /monitor/search
      inputParameters:
      - name: query
        in: query
      operations:
      - name: search-monitors
        method: GET
Open in Framework → View in Fleet → datadog-service-status-check.yml

When a Power BI refresh fails, creates a Jira ticket and posts error details to the analytics Teams channel.

naftiko: '0.5'
info:
  label: Power BI Report Failure to Jira Ticket
  description: When a Power BI refresh fails, creates a Jira ticket and posts error details to the analytics Teams channel.
  tags:
  - analytics
  - power-bi
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: analytics
    port: 8080
    tools:
    - name: power-bi-report-failure-to-jira-ticket
      description: When a Power BI refresh fails, creates a Jira ticket and posts error details to the analytics Teams channel.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-powerbi
        type: call
        call: powerbi.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-jira
        type: call
        call: jira.create-record
        with:
          reference: '{{process-powerbi.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_analytics_team_id
          channel_id: $secrets.teams_analytics_channel_id
          text: 'Power BI Report Failure to Jira Ticket: {{source_id}} | {{summary}} | Ref: {{create-jira.id}}'
  consumes:
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: records
      path: /datasets
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: jira
    baseUri: https://honda.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: records
      path: /issue
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → power-bi-report-failure-to-jira-ticket.yml

When a new auto parts supplier submits a qualification request in SAP Ariba, creates a ServiceNow change request for vendor master setup in SAP S/4HANA and notifies the purchasing team via Teams.

naftiko: '0.5'
info:
  label: SAP Ariba Supplier Qualification
  description: When a new auto parts supplier submits a qualification request in SAP Ariba, creates a ServiceNow change request for vendor master setup in SAP S/4HANA and notifies the purchasing team via Teams.
  tags:
  - procurement
  - supplier-management
  - sap-ariba
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: procurement-ops
    port: 8080
    tools:
    - name: qualify-supplier
      description: Given an Ariba supplier ID, retrieve supplier details, open a ServiceNow change request for SAP vendor master creation, and notify the purchasing team in Teams. Use when a new auto parts or materials supplier completes Ariba qualification.
      inputParameters:
      - name: supplier_id
        in: body
        type: string
        description: The Ariba supplier ID for the newly qualified vendor.
      steps:
      - name: get-supplier
        type: call
        call: ariba.get-supplier
        with:
          supplier_id: '{{supplier_id}}'
      - name: create-change
        type: call
        call: servicenow-proc.create-change
        with:
          short_description: 'Vendor master setup for qualified supplier: {{get-supplier.name}}'
          category: vendor_master
          description: Supplier {{get-supplier.name}} ({{supplier_id}}) has completed Ariba qualification. Requires SAP S/4HANA vendor master creation and purchasing org assignment.
      - name: notify-purchasing
        type: call
        call: msteams-proc.post-channel-message
        with:
          channel_id: $secrets.teams_purchasing_channel_id
          message: 'Supplier qualified: {{get-supplier.name}} | Ariba ID: {{supplier_id}} | Change request: {{create-change.number}} | Please complete SAP vendor master setup.'
  consumes:
  - type: http
    namespace: ariba
    baseUri: https://openapi.ariba.com/api/supplier/v1
    authentication:
      type: apikey
      key: apikey
      value: $secrets.ariba_api_key
      placement: header
    resources:
    - name: suppliers
      path: /suppliers/{{supplier_id}}
      inputParameters:
      - name: supplier_id
        in: path
      operations:
      - name: get-supplier
        method: GET
  - type: http
    namespace: servicenow-proc
    baseUri: https://honda.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: change-requests
      path: /table/change_request
      operations:
      - name: create-change
        method: POST
  - type: http
    namespace: msteams-proc
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → sap-ariba-supplier-qualification.yml

When a Snowflake schema change is detected, creates a Jira governance review and notifies data stewards.

naftiko: '0.5'
info:
  label: Snowflake Schema Drift to Data Governance
  description: When a Snowflake schema change is detected, creates a Jira governance review and notifies data stewards.
  tags:
  - data-governance
  - snowflake
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: data-governance
    port: 8080
    tools:
    - name: snowflake-schema-drift-to-data-governance
      description: When a Snowflake schema change is detected, creates a Jira governance review and notifies data stewards.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-snowflake
        type: call
        call: snowflake.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-jira
        type: call
        call: jira.create-record
        with:
          reference: '{{process-snowflake.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_data_governance_team_id
          channel_id: $secrets.teams_data_governance_channel_id
          text: 'Snowflake Schema Drift to Data Governance: {{source_id}} | {{summary}} | Ref: {{create-jira.id}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://honda.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: records
      path: /statements
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: jira
    baseUri: https://honda.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: records
      path: /issue
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → snowflake-schema-drift-to-data-governance.yml

When Dependabot raises a critical vulnerability, creates a ServiceNow security change and notifies AppSec.

naftiko: '0.5'
info:
  label: GitHub Dependabot Alert to Security Review
  description: When Dependabot raises a critical vulnerability, creates a ServiceNow security change and notifies AppSec.
  tags:
  - security
  - github
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: security
    port: 8080
    tools:
    - name: github-dependabot-alert-to-security-review
      description: When Dependabot raises a critical vulnerability, creates a ServiceNow security change and notifies AppSec.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-github
        type: call
        call: github.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-servicenow
        type: call
        call: servicenow.create-record
        with:
          reference: '{{process-github.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_security_team_id
          channel_id: $secrets.teams_security_channel_id
          text: 'GitHub Dependabot Alert to Security Review: {{source_id}} | {{summary}} | Ref: {{create-servicenow.id}}'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: records
      path: /repos
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://honda.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: records
      path: /table/incident
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → github-dependabot-alert-to-security-review.yml

When headcount changes are approved, updates the Snowflake model and refreshes the Power BI dashboard.

naftiko: '0.5'
info:
  label: Workday Headcount Change to Finance Forecast
  description: When headcount changes are approved, updates the Snowflake model and refreshes the Power BI dashboard.
  tags:
  - finance
  - workday
  - snowflake
  - power-bi
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: workday-headcount-change-to-finance-forecast
      description: When headcount changes are approved, updates the Snowflake model and refreshes the Power BI dashboard.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-workday
        type: call
        call: workday.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-snowflake
        type: call
        call: snowflake.create-record
        with:
          reference: '{{process-workday.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_finance_team_id
          channel_id: $secrets.teams_finance_channel_id
          text: 'Workday Headcount Change to Finance Forecast: {{source_id}} | {{summary}} | Ref: {{create-snowflake.id}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://honda.workday.com/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: records
      path: /workers
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: snowflake
    baseUri: https://honda.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: records
      path: /statements
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → workday-headcount-change-to-finance-forecast.yml

Looks up a supplier invoice in SAP S/4HANA by document number and fiscal year, returning payment status, due date, and supplier name for accounts payable follow-up.

naftiko: '0.5'
info:
  label: SAP Invoice Processing Status
  description: Looks up a supplier invoice in SAP S/4HANA by document number and fiscal year, returning payment status, due date, and supplier name for accounts payable follow-up.
  tags:
  - finance
  - accounts-payable
  - sap
  - erp
capability:
  exposes:
  - type: mcp
    namespace: finance-ap
    port: 8080
    tools:
    - name: get-invoice-status
      description: Given a SAP invoice document number and fiscal year, retrieve payment status, due date, and supplier name from SAP S/4HANA. Use for accounts payable status checks and payment run planning.
      inputParameters:
      - name: invoice_number
        in: body
        type: string
        description: The SAP accounts payable invoice document number.
      - name: fiscal_year
        in: body
        type: string
        description: The fiscal year of the invoice in YYYY format.
      call: sap-ap.get-invoice
      with:
        invoice_number: '{{invoice_number}}'
        fiscal_year: '{{fiscal_year}}'
      outputParameters:
      - name: payment_status
        type: string
        mapping: $.d.PaymentStatus
      - name: due_date
        type: string
        mapping: $.d.PaymentDueDate
      - name: supplier_name
        type: string
        mapping: $.d.SupplierName
      - name: amount
        type: string
        mapping: $.d.DocumentAmountInCompanyCodeCurrency
  consumes:
  - type: http
    namespace: sap-ap
    baseUri: https://honda-s4.sap.com/sap/opu/odata/sap/API_SUPPLIER_INVOICE_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: supplier-invoices
      path: /A_SupplierInvoice(FiscalYear='{{fiscal_year}}',SupplierInvoiceIDByInvcgParty='{{invoice_number}}')
      inputParameters:
      - name: invoice_number
        in: path
      - name: fiscal_year
        in: path
      operations:
      - name: get-invoice
        method: GET
        outputRawFormat: xml
Open in Framework → View in Fleet → sap-invoice-processing-status.yml

Syncs an updated Confluence runbook to a ServiceNow knowledge base article and notifies operations.

naftiko: '0.5'
info:
  label: Confluence Runbook to ServiceNow KB Sync
  description: Syncs an updated Confluence runbook to a ServiceNow knowledge base article and notifies operations.
  tags:
  - knowledge-management
  - confluence
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: knowledge-management
    port: 8080
    tools:
    - name: confluence-runbook-to-servicenow-kb-sync
      description: Syncs an updated Confluence runbook to a ServiceNow knowledge base article and notifies operations.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-confluence
        type: call
        call: confluence.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-servicenow
        type: call
        call: servicenow.create-record
        with:
          reference: '{{process-confluence.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_knowledge_management_team_id
          channel_id: $secrets.teams_knowledge_management_channel_id
          text: 'Confluence Runbook to ServiceNow KB Sync: {{source_id}} | {{summary}} | Ref: {{create-servicenow.id}}'
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://honda.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: records
      path: /content
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://honda.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: records
      path: /table/incident
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → confluence-runbook-to-servicenow-kb-sync.yml

Retrieves repository metadata from GitHub including language and default branch.

naftiko: '0.5'
info:
  label: GitHub Repository Details Lookup
  description: Retrieves repository metadata from GitHub including language and default branch.
  tags:
  - devops
  - github
  - repositories
capability:
  exposes:
  - type: mcp
    namespace: devops
    port: 8080
    tools:
    - name: get-repository-details
      description: Given an org and repo name, return the primary language.
      inputParameters:
      - name: repo
        in: body
        type: string
        description: GitHub repository name.
      call: github.get-repo
      with:
        repo: '{{repo}}'
      outputParameters:
      - name: result_id
        type: string
        mapping: $.id
      - name: result_status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: repos
      path: /repos
      inputParameters:
      - name: repo
        in: path
      operations:
      - name: get-repo
        method: GET
Open in Framework → View in Fleet → github-repository-details-lookup.yml

Retrieves submitted expense reports from SAP Concur for a Honda cost center and identifies out-of-policy items for review by the travel and expense compliance team.

naftiko: '0.5'
info:
  label: SAP Concur Travel Expense Audit
  description: Retrieves submitted expense reports from SAP Concur for a Honda cost center and identifies out-of-policy items for review by the travel and expense compliance team.
  tags:
  - finance
  - travel
  - sap-concur
  - audit
  - expense-management
capability:
  exposes:
  - type: mcp
    namespace: travel-expense
    port: 8080
    tools:
    - name: audit-expense-reports
      description: Given a SAP Concur cost center code, retrieve all submitted expense reports and flag out-of-policy items. Use for monthly T&E compliance audits and Honda travel policy enforcement.
      inputParameters:
      - name: cost_center
        in: body
        type: string
        description: The Honda cost center code to retrieve expense reports for.
      call: concur.list-reports-by-cost-center
      with:
        cost_center: '{{cost_center}}'
      outputParameters:
      - name: reports
        type: array
        mapping: $.Items
        items:
        - name: report_id
          type: string
          mapping: $.ID
        - name: submitter
          type: string
          mapping: $.OwnerName
        - name: total
          type: string
          mapping: $.Total
        - name: currency
          type: string
          mapping: $.CurrencyCode
        - name: policy_compliant
          type: string
          mapping: $.PolicyCompliant
  consumes:
  - type: http
    namespace: concur
    baseUri: https://www.concursolutions.com/api/v3.0
    authentication:
      type: bearer
      token: $secrets.concur_token
    resources:
    - name: expense-reports
      path: /expense/reports
      inputParameters:
      - name: cost_center
        in: query
      operations:
      - name: list-reports-by-cost-center
        method: GET
Open in Framework → View in Fleet → sap-concur-travel-expense-audit.yml

When a LinkedIn campaign generates leads, imports them into Salesforce and notifies the sales team.

naftiko: '0.5'
info:
  label: LinkedIn Campaign to Salesforce Lead Import
  description: When a LinkedIn campaign generates leads, imports them into Salesforce and notifies the sales team.
  tags:
  - marketing
  - linkedin
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: marketing
    port: 8080
    tools:
    - name: linkedin-campaign-to-salesforce-lead-import
      description: When a LinkedIn campaign generates leads, imports them into Salesforce and notifies the sales team.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-linkedin
        type: call
        call: linkedin.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-salesforce
        type: call
        call: salesforce.create-record
        with:
          reference: '{{process-linkedin.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_marketing_team_id
          channel_id: $secrets.teams_marketing_channel_id
          text: 'LinkedIn Campaign to Salesforce Lead Import: {{source_id}} | {{summary}} | Ref: {{create-salesforce.id}}'
  consumes:
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: records
      path: /campaigns
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://honda.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: records
      path: /sobjects
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → linkedin-campaign-to-salesforce-lead-import.yml

When an Azure budget threshold is breached, creates a ServiceNow ticket and alerts FinOps.

naftiko: '0.5'
info:
  label: Azure Cost Budget Breach Notification
  description: When an Azure budget threshold is breached, creates a ServiceNow ticket and alerts FinOps.
  tags:
  - finops
  - azure
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finops
    port: 8080
    tools:
    - name: azure-cost-budget-breach-notification
      description: When an Azure budget threshold is breached, creates a ServiceNow ticket and alerts FinOps.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-azure
        type: call
        call: azure.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-servicenow
        type: call
        call: servicenow.create-record
        with:
          reference: '{{process-azure.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_finops_team_id
          channel_id: $secrets.teams_finops_channel_id
          text: 'Azure Cost Budget Breach Notification: {{source_id}} | {{summary}} | Ref: {{create-servicenow.id}}'
  consumes:
  - type: http
    namespace: azure
    baseUri: https://management.azure.com
    authentication:
      type: bearer
      token: $secrets.azure_mgmt_token
    resources:
    - name: records
      path: /subscriptions
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://honda.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: records
      path: /table/incident
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → azure-cost-budget-breach-notification.yml

Triggers a Terraform Cloud workspace run to provision or update Azure infrastructure for Honda's connected-vehicle and EV platform services, then posts run status to the platform engineering Teams channel.

naftiko: '0.5'
info:
  label: Azure Terraform Infrastructure Provisioning
  description: Triggers a Terraform Cloud workspace run to provision or update Azure infrastructure for Honda's connected-vehicle and EV platform services, then posts run status to the platform engineering Teams channel.
  tags:
  - cloud
  - infrastructure
  - azure
  - terraform
  - devops
  - automotive
capability:
  exposes:
  - type: mcp
    namespace: platform-engineering
    port: 8080
    tools:
    - name: run-terraform-workspace
      description: Given a Terraform Cloud workspace ID and run message, trigger a plan-and-apply run for Honda's Azure infrastructure and notify the platform engineering channel in Teams with the run ID.
      inputParameters:
      - name: workspace_id
        in: body
        type: string
        description: The Terraform Cloud workspace ID for the Azure environment.
      - name: run_message
        in: body
        type: string
        description: Description of the infrastructure change, e.g. Add EV charging API autoscaling group.
      steps:
      - name: trigger-run
        type: call
        call: terraform.create-run
        with:
          workspace_id: '{{workspace_id}}'
          message: '{{run_message}}'
      - name: notify-platform
        type: call
        call: msteams-platform.post-channel-message
        with:
          channel_id: $secrets.teams_platform_channel_id
          message: 'Terraform run triggered | Workspace: {{workspace_id}} | Change: {{run_message}} | Run ID: {{trigger-run.run_id}}'
  consumes:
  - type: http
    namespace: terraform
    baseUri: https://app.terraform.io/api/v2
    authentication:
      type: bearer
      token: $secrets.terraform_token
    resources:
    - name: runs
      path: /runs
      operations:
      - name: create-run
        method: POST
  - type: http
    namespace: msteams-platform
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → azure-terraform-infrastructure-provisioning.yml

Retrieves a Salesforce contact by email address with account association.

naftiko: '0.5'
info:
  label: Salesforce Contact Lookup
  description: Retrieves a Salesforce contact by email address with account association.
  tags:
  - crm
  - salesforce
  - contacts
capability:
  exposes:
  - type: mcp
    namespace: crm
    port: 8080
    tools:
    - name: get-contact-by-email
      description: Given an email, retrieve the matching Salesforce contact.
      inputParameters:
      - name: email
        in: body
        type: string
        description: Contact email address.
      call: salesforce.query-contacts
      with:
        q: '{{email}}'
      outputParameters:
      - name: result_id
        type: string
        mapping: $.id
      - name: result_status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://honda.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: query
      path: /query
      inputParameters:
      - name: q
        in: query
      operations:
      - name: query-contacts
        method: GET
Open in Framework → View in Fleet → salesforce-contact-lookup.yml

When a HubSpot form is submitted, creates a Salesforce lead and notifies the SDR team.

naftiko: '0.5'
info:
  label: HubSpot Form Submission to Salesforce Lead
  description: When a HubSpot form is submitted, creates a Salesforce lead and notifies the SDR team.
  tags:
  - marketing
  - hubspot
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: marketing
    port: 8080
    tools:
    - name: hubspot-form-submission-to-salesforce-lead
      description: When a HubSpot form is submitted, creates a Salesforce lead and notifies the SDR team.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-hubspot
        type: call
        call: hubspot.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-salesforce
        type: call
        call: salesforce.create-record
        with:
          reference: '{{process-hubspot.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_marketing_team_id
          channel_id: $secrets.teams_marketing_channel_id
          text: 'HubSpot Form Submission to Salesforce Lead: {{source_id}} | {{summary}} | Ref: {{create-salesforce.id}}'
  consumes:
  - type: http
    namespace: hubspot
    baseUri: https://api.hubapi.com/crm/v3
    authentication:
      type: bearer
      token: $secrets.hubspot_token
    resources:
    - name: records
      path: /objects
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://honda.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: records
      path: /sobjects
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → hubspot-form-submission-to-salesforce-lead.yml

Escalates a high-severity Salesforce case by creating a GitHub issue and paging engineering on-call via PagerDuty.

naftiko: '0.5'
info:
  label: Salesforce Case Escalation to Engineering
  description: Escalates a high-severity Salesforce case by creating a GitHub issue and paging engineering on-call via PagerDuty.
  tags:
  - support
  - salesforce
  - github
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: support
    port: 8080
    tools:
    - name: salesforce-case-escalation-to-engineering
      description: Escalates a high-severity Salesforce case by creating a GitHub issue and paging engineering on-call via PagerDuty.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-salesforce
        type: call
        call: salesforce.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-github
        type: call
        call: github.create-record
        with:
          reference: '{{process-salesforce.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_support_team_id
          channel_id: $secrets.teams_support_channel_id
          text: 'Salesforce Case Escalation to Engineering: {{source_id}} | {{summary}} | Ref: {{create-github.id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://honda.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: records
      path: /sobjects
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: records
      path: /repos
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → salesforce-case-escalation-to-engineering.yml

Looks up a Honda SAP S/4HANA purchase order by number and returns header status, supplier name, total value, and currency for procurement and supply chain review.

naftiko: '0.5'
info:
  label: SAP Purchase Order Lookup
  description: Looks up a Honda SAP S/4HANA purchase order by number and returns header status, supplier name, total value, and currency for procurement and supply chain review.
  tags:
  - procurement
  - finance
  - sap
  - erp
  - supply-chain
capability:
  exposes:
  - type: mcp
    namespace: erp-procurement
    port: 8080
    tools:
    - name: get-purchase-order
      description: Given a SAP purchase order number, retrieve its overall status, supplier name, total amount, and currency from SAP S/4HANA. Use for procurement status checks and supplier payment verification.
      inputParameters:
      - name: po_number
        in: body
        type: string
        description: The SAP purchase order number, e.g. 4500067890.
      call: sap-s4.get-po
      with:
        po_number: '{{po_number}}'
      outputParameters:
      - name: status
        type: string
        mapping: $.d.OverallStatus
      - name: supplier
        type: string
        mapping: $.d.Supplier.CompanyName
      - name: total_value
        type: string
        mapping: $.d.TotalAmount
      - name: currency
        type: string
        mapping: $.d.TransactionCurrency
  consumes:
  - type: http
    namespace: sap-s4
    baseUri: https://honda-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: purchase-orders
      path: /A_PurchaseOrder('{{po_number}}')
      inputParameters:
      - name: po_number
        in: path
      operations:
      - name: get-po
        method: GET
        outputRawFormat: xml
Open in Framework → View in Fleet → sap-purchase-order-lookup.yml

When a Jira release is published, generates a changelog in Confluence and notifies the product Teams channel.

naftiko: '0.5'
info:
  label: Jira Release to Confluence Changelog
  description: When a Jira release is published, generates a changelog in Confluence and notifies the product Teams channel.
  tags:
  - release-management
  - jira
  - confluence
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: release-management
    port: 8080
    tools:
    - name: jira-release-to-confluence-changelog
      description: When a Jira release is published, generates a changelog in Confluence and notifies the product Teams channel.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-jira
        type: call
        call: jira.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-confluence
        type: call
        call: confluence.create-record
        with:
          reference: '{{process-jira.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_release_management_team_id
          channel_id: $secrets.teams_release_management_channel_id
          text: 'Jira Release to Confluence Changelog: {{source_id}} | {{summary}} | Ref: {{create-confluence.id}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://honda.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: records
      path: /issue
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://honda.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: records
      path: /content
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → jira-release-to-confluence-changelog.yml

When a goods receipt is posted in SAP, matches it against pending invoices and notifies accounts payable in Microsoft Teams.

naftiko: '0.5'
info:
  label: SAP Goods Receipt to Invoice Match
  description: When a goods receipt is posted in SAP, matches it against pending invoices and notifies accounts payable in Microsoft Teams.
  tags:
  - procurement
  - sap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: procurement
    port: 8080
    tools:
    - name: sap-goods-receipt-to-invoice-match
      description: When a goods receipt is posted in SAP, matches it against pending invoices and notifies accounts payable in Microsoft Teams.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-sap
        type: call
        call: sap.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-msteams
        type: call
        call: msteams.create-record
        with:
          reference: '{{process-sap.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_procurement_team_id
          channel_id: $secrets.teams_procurement_channel_id
          text: 'SAP Goods Receipt to Invoice Match: {{source_id}} | {{summary}} | Ref: {{create-msteams.id}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://honda-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: records
      path: /A_BusinessPartner
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: records
      path: /teams
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → sap-goods-receipt-to-invoice-match.yml

When a compensation change is finalized in Workday, syncs to payroll and confirms with HRBP.

naftiko: '0.5'
info:
  label: Workday Compensation Change to Payroll Sync
  description: When a compensation change is finalized in Workday, syncs to payroll and confirms with HRBP.
  tags:
  - hr
  - workday
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr
    port: 8080
    tools:
    - name: workday-compensation-change-to-payroll-sync
      description: When a compensation change is finalized in Workday, syncs to payroll and confirms with HRBP.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-workday
        type: call
        call: workday.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-msteams
        type: call
        call: msteams.create-record
        with:
          reference: '{{process-workday.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_hr_team_id
          channel_id: $secrets.teams_hr_channel_id
          text: 'Workday Compensation Change to Payroll Sync: {{source_id}} | {{summary}} | Ref: {{create-msteams.id}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://honda.workday.com/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: records
      path: /workers
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: records
      path: /teams
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → workday-compensation-change-to-payroll-sync.yml

When a ServiceNow asset reaches end-of-life, creates an Ariba requisition and notifies IT asset management.

naftiko: '0.5'
info:
  label: ServiceNow Asset Refresh to Procurement
  description: When a ServiceNow asset reaches end-of-life, creates an Ariba requisition and notifies IT asset management.
  tags:
  - asset-management
  - servicenow
  - sap-ariba
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: asset-management
    port: 8080
    tools:
    - name: servicenow-asset-refresh-to-procurement
      description: When a ServiceNow asset reaches end-of-life, creates an Ariba requisition and notifies IT asset management.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-servicenow
        type: call
        call: servicenow.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-ariba
        type: call
        call: ariba.create-record
        with:
          reference: '{{process-servicenow.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_asset_management_team_id
          channel_id: $secrets.teams_asset_management_channel_id
          text: 'ServiceNow Asset Refresh to Procurement: {{source_id}} | {{summary}} | Ref: {{create-ariba.id}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://honda.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: records
      path: /table/incident
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: ariba
    baseUri: https://openapi.ariba.com/api/procurement/v1
    authentication:
      type: bearer
      token: $secrets.ariba_token
    resources:
    - name: records
      path: /requisitions
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → servicenow-asset-refresh-to-procurement.yml

When a purchase order is approved in SAP, syncs the PO to Ariba and posts confirmation to the procurement Teams channel.

naftiko: '0.5'
info:
  label: SAP Purchase Order Approval to Ariba Sync
  description: When a purchase order is approved in SAP, syncs the PO to Ariba and posts confirmation to the procurement Teams channel.
  tags:
  - procurement
  - sap
  - sap-ariba
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: procurement
    port: 8080
    tools:
    - name: sap-purchase-order-approval-to-ariba-sync
      description: When a purchase order is approved in SAP, syncs the PO to Ariba and posts confirmation to the procurement Teams channel.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-sap
        type: call
        call: sap.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-ariba
        type: call
        call: ariba.create-record
        with:
          reference: '{{process-sap.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_procurement_team_id
          channel_id: $secrets.teams_procurement_channel_id
          text: 'SAP Purchase Order Approval to Ariba Sync: {{source_id}} | {{summary}} | Ref: {{create-ariba.id}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://honda-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: records
      path: /A_BusinessPartner
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: ariba
    baseUri: https://openapi.ariba.com/api/procurement/v1
    authentication:
      type: bearer
      token: $secrets.ariba_token
    resources:
    - name: records
      path: /requisitions
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → sap-purchase-order-approval-to-ariba-sync.yml

When a Snowflake ETL pipeline fails, creates a Jira bug and triggers a PagerDuty incident for data engineering.

naftiko: '0.5'
info:
  label: Snowflake ETL Failure to PagerDuty Escalation
  description: When a Snowflake ETL pipeline fails, creates a Jira bug and triggers a PagerDuty incident for data engineering.
  tags:
  - data-engineering
  - snowflake
  - jira
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: data-engineering
    port: 8080
    tools:
    - name: snowflake-etl-failure-to-pagerduty-escalation
      description: When a Snowflake ETL pipeline fails, creates a Jira bug and triggers a PagerDuty incident for data engineering.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-snowflake
        type: call
        call: snowflake.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-jira
        type: call
        call: jira.create-record
        with:
          reference: '{{process-snowflake.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_data_engineering_team_id
          channel_id: $secrets.teams_data_engineering_channel_id
          text: 'Snowflake ETL Failure to PagerDuty Escalation: {{source_id}} | {{summary}} | Ref: {{create-jira.id}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://honda.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: records
      path: /statements
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: jira
    baseUri: https://honda.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: records
      path: /issue
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → snowflake-etl-failure-to-pagerduty-escalation.yml

When PagerDuty creates a major incident, posts a status update to Confluence and creates a timeline page.

naftiko: '0.5'
info:
  label: PagerDuty Incident to Statuspage Update
  description: When PagerDuty creates a major incident, posts a status update to Confluence and creates a timeline page.
  tags:
  - incident-management
  - pagerduty
  - confluence
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: incident-management
    port: 8080
    tools:
    - name: pagerduty-incident-to-statuspage-update
      description: When PagerDuty creates a major incident, posts a status update to Confluence and creates a timeline page.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-pagerduty
        type: call
        call: pagerduty.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-confluence
        type: call
        call: confluence.create-record
        with:
          reference: '{{process-pagerduty.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_incident_management_team_id
          channel_id: $secrets.teams_incident_management_channel_id
          text: 'PagerDuty Incident to Statuspage Update: {{source_id}} | {{summary}} | Ref: {{create-confluence.id}}'
  consumes:
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: bearer
      token: $secrets.pagerduty_token
    resources:
    - name: records
      path: /incidents
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://honda.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: records
      path: /content
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → pagerduty-incident-to-statuspage-update.yml

When a territory assignment changes, updates lead routing and notifies affected reps.

naftiko: '0.5'
info:
  label: Salesforce Territory Change to Routing Update
  description: When a territory assignment changes, updates lead routing and notifies affected reps.
  tags:
  - crm
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: crm
    port: 8080
    tools:
    - name: salesforce-territory-change-to-routing-update
      description: When a territory assignment changes, updates lead routing and notifies affected reps.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-salesforce
        type: call
        call: salesforce.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-msteams
        type: call
        call: msteams.create-record
        with:
          reference: '{{process-salesforce.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_crm_team_id
          channel_id: $secrets.teams_crm_channel_id
          text: 'Salesforce Territory Change to Routing Update: {{source_id}} | {{summary}} | Ref: {{create-msteams.id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://honda.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: records
      path: /sobjects
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: records
      path: /teams
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → salesforce-territory-change-to-routing-update.yml

Uses the Anthropic API to summarize technical engineering documents (vehicle specifications, R&D reports, patent drafts) stored in SharePoint and posts the summary to the relevant engineering Teams channel.

naftiko: '0.5'
info:
  label: AI Technical Document Summarization
  description: Uses the Anthropic API to summarize technical engineering documents (vehicle specifications, R&D reports, patent drafts) stored in SharePoint and posts the summary to the relevant engineering Teams channel.
  tags:
  - ai
  - automation
  - anthropic
  - sharepoint
  - microsoft-teams
  - engineering
capability:
  exposes:
  - type: mcp
    namespace: ai-engineering-docs
    port: 8080
    tools:
    - name: summarize-technical-document
      description: Given the text of a Honda engineering document and its title, call the Anthropic API to produce a structured technical summary and post it to the specified Teams channel. Use for rapid review of vehicle specs, R&D reports, and supplier technical submissions.
      inputParameters:
      - name: document_text
        in: body
        type: string
        description: The full text of the technical document to summarize.
      - name: document_title
        in: body
        type: string
        description: The title of the engineering document.
      - name: target_channel_id
        in: body
        type: string
        description: The Teams channel ID where the summary should be posted.
      steps:
      - name: generate-summary
        type: call
        call: anthropic.create-message
        with:
          model: claude-3-5-sonnet-20241022
          prompt: 'Summarize this Honda engineering document in 3-5 bullet points covering: key specifications, technical decisions, open issues, and next steps. Document:


            {{document_text}}'
      - name: post-summary
        type: call
        call: msteams-docs.post-channel-message
        with:
          channel_id: '{{target_channel_id}}'
          message: 'Technical Document Summary: {{document_title}}


            {{generate-summary.content}}'
  consumes:
  - type: http
    namespace: anthropic
    baseUri: https://api.anthropic.com/v1
    authentication:
      type: apikey
      key: x-api-key
      value: $secrets.anthropic_api_key
      placement: header
    resources:
    - name: messages
      path: /messages
      operations:
      - name: create-message
        method: POST
  - type: http
    namespace: msteams-docs
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → ai-technical-document-summarization.yml

When a new hire is confirmed in Workday, creates a ServiceNow equipment request for laptop provisioning.

naftiko: '0.5'
info:
  label: Workday New Hire to Equipment Request
  description: When a new hire is confirmed in Workday, creates a ServiceNow equipment request for laptop provisioning.
  tags:
  - hr
  - workday
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr
    port: 8080
    tools:
    - name: workday-new-hire-to-equipment-request
      description: When a new hire is confirmed in Workday, creates a ServiceNow equipment request for laptop provisioning.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-workday
        type: call
        call: workday.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-servicenow
        type: call
        call: servicenow.create-record
        with:
          reference: '{{process-workday.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_hr_team_id
          channel_id: $secrets.teams_hr_channel_id
          text: 'Workday New Hire to Equipment Request: {{source_id}} | {{summary}} | Ref: {{create-servicenow.id}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://honda.workday.com/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: records
      path: /workers
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://honda.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: records
      path: /table/incident
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → workday-new-hire-to-equipment-request.yml

When a ServiceNow problem is resolved, creates a Confluence KB article and updates the KEDB.

naftiko: '0.5'
info:
  label: ServiceNow Problem to Known Error KB
  description: When a ServiceNow problem is resolved, creates a Confluence KB article and updates the KEDB.
  tags:
  - itsm
  - servicenow
  - confluence
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: itsm
    port: 8080
    tools:
    - name: servicenow-problem-to-known-error-kb
      description: When a ServiceNow problem is resolved, creates a Confluence KB article and updates the KEDB.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-servicenow
        type: call
        call: servicenow.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-confluence
        type: call
        call: confluence.create-record
        with:
          reference: '{{process-servicenow.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_itsm_team_id
          channel_id: $secrets.teams_itsm_channel_id
          text: 'ServiceNow Problem to Known Error KB: {{source_id}} | {{summary}} | Ref: {{create-confluence.id}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://honda.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: records
      path: /table/incident
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://honda.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: records
      path: /content
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → servicenow-problem-to-known-error-kb.yml

When an SAP Ariba contract approaches expiration, creates a Salesforce renewal opportunity.

naftiko: '0.5'
info:
  label: SAP Contract Expiry to Renewal Workflow
  description: When an SAP Ariba contract approaches expiration, creates a Salesforce renewal opportunity.
  tags:
  - procurement
  - sap-ariba
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: procurement
    port: 8080
    tools:
    - name: sap-contract-expiry-to-renewal-workflow
      description: When an SAP Ariba contract approaches expiration, creates a Salesforce renewal opportunity.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-ariba
        type: call
        call: ariba.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-salesforce
        type: call
        call: salesforce.create-record
        with:
          reference: '{{process-ariba.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_procurement_team_id
          channel_id: $secrets.teams_procurement_channel_id
          text: 'SAP Contract Expiry to Renewal Workflow: {{source_id}} | {{summary}} | Ref: {{create-salesforce.id}}'
  consumes:
  - type: http
    namespace: ariba
    baseUri: https://openapi.ariba.com/api/procurement/v1
    authentication:
      type: bearer
      token: $secrets.ariba_token
    resources:
    - name: records
      path: /requisitions
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://honda.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: records
      path: /sobjects
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → sap-contract-expiry-to-renewal-workflow.yml

When a Salesforce opportunity shows renewal risk, creates a Jira CS task and alerts the account team.

naftiko: '0.5'
info:
  label: Salesforce Renewal Risk to Customer Success
  description: When a Salesforce opportunity shows renewal risk, creates a Jira CS task and alerts the account team.
  tags:
  - crm
  - salesforce
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: crm
    port: 8080
    tools:
    - name: salesforce-renewal-risk-to-customer-success
      description: When a Salesforce opportunity shows renewal risk, creates a Jira CS task and alerts the account team.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-salesforce
        type: call
        call: salesforce.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-jira
        type: call
        call: jira.create-record
        with:
          reference: '{{process-salesforce.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_crm_team_id
          channel_id: $secrets.teams_crm_channel_id
          text: 'Salesforce Renewal Risk to Customer Success: {{source_id}} | {{summary}} | Ref: {{create-jira.id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://honda.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: records
      path: /sobjects
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: jira
    baseUri: https://honda.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: records
      path: /issue
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → salesforce-renewal-risk-to-customer-success.yml

When a Salesforce opportunity is Closed Won, creates a SAP sales order and confirms in Microsoft Teams.

naftiko: '0.5'
info:
  label: Salesforce Win to SAP Sales Order Creation
  description: When a Salesforce opportunity is Closed Won, creates a SAP sales order and confirms in Microsoft Teams.
  tags:
  - order-management
  - salesforce
  - sap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: order-management
    port: 8080
    tools:
    - name: salesforce-win-to-sap-sales-order-creation
      description: When a Salesforce opportunity is Closed Won, creates a SAP sales order and confirms in Microsoft Teams.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-salesforce
        type: call
        call: salesforce.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-sap
        type: call
        call: sap.create-record
        with:
          reference: '{{process-salesforce.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_order_management_team_id
          channel_id: $secrets.teams_order_management_channel_id
          text: 'Salesforce Win to SAP Sales Order Creation: {{source_id}} | {{summary}} | Ref: {{create-sap.id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://honda.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: records
      path: /sobjects
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: sap
    baseUri: https://honda-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: records
      path: /A_BusinessPartner
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → salesforce-win-to-sap-sales-order-creation.yml

Retrieves an expense report summary from SAP Concur by report ID.

naftiko: '0.5'
info:
  label: SAP Concur Expense Report Lookup
  description: Retrieves an expense report summary from SAP Concur by report ID.
  tags:
  - finance
  - sap-concur
  - expense-management
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: get-expense-report
      description: Given a Concur report ID, return the summary.
      inputParameters:
      - name: report_id
        in: body
        type: string
        description: SAP Concur expense report ID.
      call: concur.get-report
      with:
        id: '{{report_id}}'
      outputParameters:
      - name: result_id
        type: string
        mapping: $.id
      - name: result_status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: concur
    baseUri: https://api.example.com/v1
    authentication:
      type: bearer
      token: $secrets.concur_token
    resources:
    - name: reports
      path: /expense/reports
      inputParameters:
      - name: id
        in: path
      operations:
      - name: get-report
        method: GET
Open in Framework → View in Fleet → sap-concur-expense-report-lookup.yml

When Datadog detects disk usage above 85 percent, creates a ServiceNow capacity request and notifies infra.

naftiko: '0.5'
info:
  label: Datadog Disk Usage to Capacity Planning
  description: When Datadog detects disk usage above 85 percent, creates a ServiceNow capacity request and notifies infra.
  tags:
  - infrastructure
  - datadog
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: infrastructure
    port: 8080
    tools:
    - name: datadog-disk-usage-to-capacity-planning
      description: When Datadog detects disk usage above 85 percent, creates a ServiceNow capacity request and notifies infra.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-datadog
        type: call
        call: datadog.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-servicenow
        type: call
        call: servicenow.create-record
        with:
          reference: '{{process-datadog.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_infrastructure_team_id
          channel_id: $secrets.teams_infrastructure_channel_id
          text: 'Datadog Disk Usage to Capacity Planning: {{source_id}} | {{summary}} | Ref: {{create-servicenow.id}}'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: records
      path: /events
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://honda.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: records
      path: /table/incident
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → datadog-disk-usage-to-capacity-planning.yml

Retrieves a contract summary from SAP Ariba by contract ID.

naftiko: '0.5'
info:
  label: SAP Ariba Contract Lookup
  description: Retrieves a contract summary from SAP Ariba by contract ID.
  tags:
  - procurement
  - sap-ariba
  - contracts
capability:
  exposes:
  - type: mcp
    namespace: procurement
    port: 8080
    tools:
    - name: get-contract-summary
      description: Given a SAP Ariba contract ID, return the status.
      inputParameters:
      - name: contract_id
        in: body
        type: string
        description: SAP Ariba contract ID.
      call: ariba.get-contract
      with:
        contractId: '{{contract_id}}'
      outputParameters:
      - name: result_id
        type: string
        mapping: $.id
      - name: result_status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: ariba
    baseUri: https://api.example.com/v1
    authentication:
      type: bearer
      token: $secrets.ariba_token
    resources:
    - name: contracts
      path: /contracts
      inputParameters:
      - name: contractId
        in: path
      operations:
      - name: get-contract
        method: GET
Open in Framework → View in Fleet → sap-ariba-contract-lookup.yml

When a ServiceNow change is approved, triggers a GitHub deployment and updates the change with status.

naftiko: '0.5'
info:
  label: ServiceNow Change to GitHub Deployment
  description: When a ServiceNow change is approved, triggers a GitHub deployment and updates the change with status.
  tags:
  - itsm
  - servicenow
  - github
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: itsm
    port: 8080
    tools:
    - name: servicenow-change-to-github-deployment
      description: When a ServiceNow change is approved, triggers a GitHub deployment and updates the change with status.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-servicenow
        type: call
        call: servicenow.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-github
        type: call
        call: github.create-record
        with:
          reference: '{{process-servicenow.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_itsm_team_id
          channel_id: $secrets.teams_itsm_channel_id
          text: 'ServiceNow Change to GitHub Deployment: {{source_id}} | {{summary}} | Ref: {{create-github.id}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://honda.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: records
      path: /table/incident
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: records
      path: /repos
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → servicenow-change-to-github-deployment.yml

When an SAP payment run completes, notifies vendor management and updates Salesforce records.

naftiko: '0.5'
info:
  label: SAP Payment Run to Vendor Notification
  description: When an SAP payment run completes, notifies vendor management and updates Salesforce records.
  tags:
  - finance
  - sap
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: sap-payment-run-to-vendor-notification
      description: When an SAP payment run completes, notifies vendor management and updates Salesforce records.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-sap
        type: call
        call: sap.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-salesforce
        type: call
        call: salesforce.create-record
        with:
          reference: '{{process-sap.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_finance_team_id
          channel_id: $secrets.teams_finance_channel_id
          text: 'SAP Payment Run to Vendor Notification: {{source_id}} | {{summary}} | Ref: {{create-salesforce.id}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://honda-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: records
      path: /A_BusinessPartner
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://honda.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: records
      path: /sobjects
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → sap-payment-run-to-vendor-notification.yml

When all stories in a Jira epic are completed, generates a Confluence summary and notifies stakeholders.

naftiko: '0.5'
info:
  label: Jira Epic Completion to Stakeholder Update
  description: When all stories in a Jira epic are completed, generates a Confluence summary and notifies stakeholders.
  tags:
  - project-management
  - jira
  - confluence
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: project-management
    port: 8080
    tools:
    - name: jira-epic-completion-to-stakeholder-update
      description: When all stories in a Jira epic are completed, generates a Confluence summary and notifies stakeholders.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-jira
        type: call
        call: jira.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-confluence
        type: call
        call: confluence.create-record
        with:
          reference: '{{process-jira.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_project_management_team_id
          channel_id: $secrets.teams_project_management_channel_id
          text: 'Jira Epic Completion to Stakeholder Update: {{source_id}} | {{summary}} | Ref: {{create-confluence.id}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://honda.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: records
      path: /issue
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://honda.atlassian.net/wiki/rest/api
    authentication:
      type: bearer
      token: $secrets.confluence_token
    resources:
    - name: records
      path: /content
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → jira-epic-completion-to-stakeholder-update.yml

Retrieves a ServiceNow change request for a Honda IT or manufacturing system, returning its approval status, risk level, and implementation schedule for CAB review.

naftiko: '0.5'
info:
  label: ServiceNow Change Request Approval
  description: Retrieves a ServiceNow change request for a Honda IT or manufacturing system, returning its approval status, risk level, and implementation schedule for CAB review.
  tags:
  - itsm
  - change-management
  - servicenow
  - governance
capability:
  exposes:
  - type: mcp
    namespace: itsm-change
    port: 8080
    tools:
    - name: get-change-request
      description: Given a ServiceNow change request number, retrieve its state, risk, approval status, and implementation window. Use for change advisory board review and change governance processes.
      inputParameters:
      - name: change_number
        in: body
        type: string
        description: The ServiceNow change request number, e.g. CHG0056789.
      call: servicenow-change.get-change
      with:
        change_number: '{{change_number}}'
      outputParameters:
      - name: state
        type: string
        mapping: $.result.state
      - name: risk
        type: string
        mapping: $.result.risk
      - name: approval
        type: string
        mapping: $.result.approval
      - name: start_date
        type: string
        mapping: $.result.start_date
  consumes:
  - type: http
    namespace: servicenow-change
    baseUri: https://honda.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: change-requests
      path: /table/change_request
      inputParameters:
      - name: change_number
        in: query
      operations:
      - name: get-change
        method: GET
Open in Framework → View in Fleet → servicenow-change-request-approval.yml

When a Datadog synthetic test fails, creates a ServiceNow incident and triggers a PagerDuty alert.

naftiko: '0.5'
info:
  label: Datadog Synthetic Failure to Incident
  description: When a Datadog synthetic test fails, creates a ServiceNow incident and triggers a PagerDuty alert.
  tags:
  - observability
  - datadog
  - servicenow
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: observability
    port: 8080
    tools:
    - name: datadog-synthetic-failure-to-incident
      description: When a Datadog synthetic test fails, creates a ServiceNow incident and triggers a PagerDuty alert.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-datadog
        type: call
        call: datadog.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-servicenow
        type: call
        call: servicenow.create-record
        with:
          reference: '{{process-datadog.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_observability_team_id
          channel_id: $secrets.teams_observability_channel_id
          text: 'Datadog Synthetic Failure to Incident: {{source_id}} | {{summary}} | Ref: {{create-servicenow.id}}'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: records
      path: /events
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://honda.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: records
      path: /table/incident
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → datadog-synthetic-failure-to-incident.yml

When Terraform Cloud detects infrastructure drift, creates a Jira remediation ticket and notifies the platform engineering team in Microsoft Teams.

naftiko: '0.5'
info:
  label: Terraform Cloud Drift Detection
  description: When Terraform Cloud detects infrastructure drift, creates a Jira remediation ticket and notifies the platform engineering team in Microsoft Teams.
  tags:
  - infrastructure
  - terraform
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: infrastructure
    port: 8080
    tools:
    - name: handle-drift-detection
      description: Given a Terraform workspace with drift, create a remediation ticket and notify the platform team.
      inputParameters:
      - name: workspace_name
        in: body
        type: string
        description: Terraform Cloud workspace name.
      - name: drift_summary
        in: body
        type: string
        description: Summary of detected drift.
      - name: resource_count
        in: body
        type: integer
        description: Number of drifted resources.
      steps:
      - name: create-ticket
        type: call
        call: jira.create-issue
        with:
          project_key: PLATFORM
          issuetype: Bug
          summary: 'Terraform Drift: {{workspace_name}} ({{resource_count}} resources)'
          description: '{{drift_summary}}'
      - name: notify-platform
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_platform_team_id
          channel_id: $secrets.teams_platform_channel_id
          text: 'Terraform Drift: {{workspace_name}} | {{resource_count}} resources | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://honda.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → terraform-cloud-drift-detection.yml

Initiates the annual performance review cycle for a Honda division in Workday by notifying all managers via Teams to complete reviews for their direct reports by the submission deadline.

naftiko: '0.5'
info:
  label: Workday Annual Performance Review Kickoff
  description: Initiates the annual performance review cycle for a Honda division in Workday by notifying all managers via Teams to complete reviews for their direct reports by the submission deadline.
  tags:
  - hr
  - performance-management
  - workday
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-performance
    port: 8080
    tools:
    - name: kickoff-performance-reviews
      description: Given a Workday department ID, review cycle name, and deadline, list active associates and notify managers via Teams to begin the annual review process in Workday.
      inputParameters:
      - name: department_id
        in: body
        type: string
        description: The Workday department ID to kick off reviews for.
      - name: review_cycle
        in: body
        type: string
        description: The review cycle name, e.g. 2025 Annual Performance Review.
      - name: deadline
        in: body
        type: string
        description: Submission deadline in YYYY-MM-DD format.
      steps:
      - name: get-employees
        type: call
        call: workday-perf.list-workers
        with:
          department_id: '{{department_id}}'
      - name: notify-hr-channel
        type: call
        call: msteams-perf.post-channel-message
        with:
          channel_id: $secrets.teams_hr_channel_id
          message: 'Performance Review Kickoff | {{review_cycle}} | Department: {{department_id}} | Deadline: {{deadline}} | Please complete all reviews in Workday.'
  consumes:
  - type: http
    namespace: workday-perf
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /honda/workers
      inputParameters:
      - name: department_id
        in: query
      operations:
      - name: list-workers
        method: GET
  - type: http
    namespace: msteams-perf
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → workday-annual-performance-review-kickoff.yml

When a termination is processed in Workday, deactivates the user in Okta and creates a ServiceNow access revocation ticket.

naftiko: '0.5'
info:
  label: Workday Termination to Okta Deprovisioning
  description: When a termination is processed in Workday, deactivates the user in Okta and creates a ServiceNow access revocation ticket.
  tags:
  - hr
  - workday
  - okta
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: hr
    port: 8080
    tools:
    - name: workday-termination-to-okta-deprovisioning
      description: When a termination is processed in Workday, deactivates the user in Okta and creates a ServiceNow access revocation ticket.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-workday
        type: call
        call: workday.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-okta
        type: call
        call: okta.create-record
        with:
          reference: '{{process-workday.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_hr_team_id
          channel_id: $secrets.teams_hr_channel_id
          text: 'Workday Termination to Okta Deprovisioning: {{source_id}} | {{summary}} | Ref: {{create-okta.id}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://honda.workday.com/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: records
      path: /workers
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: okta
    baseUri: https://honda.okta.com/api/v1
    authentication:
      type: bearer
      token: $secrets.okta_api_token
    resources:
    - name: records
      path: /users
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → workday-termination-to-okta-deprovisioning.yml

When Datadog detects an error rate spike correlated with a feature flag, creates a Jira incident.

naftiko: '0.5'
info:
  label: Datadog Error Rate to Feature Flag Disable
  description: When Datadog detects an error rate spike correlated with a feature flag, creates a Jira incident.
  tags:
  - observability
  - datadog
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: observability
    port: 8080
    tools:
    - name: datadog-error-rate-to-feature-flag-disable
      description: When Datadog detects an error rate spike correlated with a feature flag, creates a Jira incident.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-datadog
        type: call
        call: datadog.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-jira
        type: call
        call: jira.create-record
        with:
          reference: '{{process-datadog.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_observability_team_id
          channel_id: $secrets.teams_observability_channel_id
          text: 'Datadog Error Rate to Feature Flag Disable: {{source_id}} | {{summary}} | Ref: {{create-jira.id}}'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: records
      path: /events
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: jira
    baseUri: https://honda.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: records
      path: /issue
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → datadog-error-rate-to-feature-flag-disable.yml

When a new associate is created in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint document folder, and sends a Microsoft Teams welcome message with role and start date details.

naftiko: '0.5'
info:
  label: Employee Onboarding Orchestrator
  description: When a new associate is created in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint document folder, and sends a Microsoft Teams welcome message with role and start date details.
  tags:
  - hr
  - onboarding
  - workday
  - servicenow
  - sharepoint
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-onboarding
    port: 8080
    tools:
    - name: trigger-onboarding
      description: Given a Workday employee ID and start date, orchestrate the full onboarding sequence by opening a ServiceNow ticket, provisioning a SharePoint folder, and sending a Teams welcome message to the new associate.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The Workday worker ID for the new Honda associate.
      - name: start_date
        in: body
        type: string
        description: The associate's start date in YYYY-MM-DD format.
      - name: division
        in: body
        type: string
        description: The Honda division or business unit, e.g. HAM (Honda Automobiles) or HRDI (R&D).
      steps:
      - name: get-worker
        type: call
        call: workday.get-worker
        with:
          worker_id: '{{employee_id}}'
      - name: create-ticket
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'New associate onboarding: {{get-worker.display_name}} — {{division}}'
          category: hr_onboarding
          assigned_to: IT_Onboarding
      - name: provision-folder
        type: call
        call: sharepoint.create-folder
        with:
          site_id: honda-hr-onboarding
          folder_path: OnboardingDocs/{{division}}/{{get-worker.display_name}}_{{start_date}}
      - name: send-welcome
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-worker.work_email}}'
          message: 'Welcome to Honda, {{get-worker.first_name}}! You are joining {{division}} on {{start_date}}. Your onboarding ticket: {{create-ticket.number}}.'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /honda/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://honda.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: drive-items
      path: /sites/{{site_id}}/drive/root/children
      inputParameters:
      - name: site_id
        in: path
      operations:
      - name: create-folder
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: mail
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → employee-onboarding-orchestrator.yml

When Datadog detects an anomalous log pattern, creates a ServiceNow investigation and pages SOC.

naftiko: '0.5'
info:
  label: Datadog Log Anomaly to Security Investigation
  description: When Datadog detects an anomalous log pattern, creates a ServiceNow investigation and pages SOC.
  tags:
  - security
  - datadog
  - servicenow
  - pagerduty
capability:
  exposes:
  - type: mcp
    namespace: security
    port: 8080
    tools:
    - name: datadog-log-anomaly-to-security-investigation
      description: When Datadog detects an anomalous log pattern, creates a ServiceNow investigation and pages SOC.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-datadog
        type: call
        call: datadog.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-servicenow
        type: call
        call: servicenow.create-record
        with:
          reference: '{{process-datadog.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_security_team_id
          channel_id: $secrets.teams_security_channel_id
          text: 'Datadog Log Anomaly to Security Investigation: {{source_id}} | {{summary}} | Ref: {{create-servicenow.id}}'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: bearer
      token: $secrets.datadog_api_key
    resources:
    - name: records
      path: /events
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://honda.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: records
      path: /table/incident
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → datadog-log-anomaly-to-security-investigation.yml

When Salesforce predicts churn risk, creates a CS Jira task and logs the intervention.

naftiko: '0.5'
info:
  label: Salesforce Churn Signal to Retention Workflow
  description: When Salesforce predicts churn risk, creates a CS Jira task and logs the intervention.
  tags:
  - crm
  - salesforce
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: crm
    port: 8080
    tools:
    - name: salesforce-churn-signal-to-retention-workflow
      description: When Salesforce predicts churn risk, creates a CS Jira task and logs the intervention.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-salesforce
        type: call
        call: salesforce.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-jira
        type: call
        call: jira.create-record
        with:
          reference: '{{process-salesforce.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_crm_team_id
          channel_id: $secrets.teams_crm_channel_id
          text: 'Salesforce Churn Signal to Retention Workflow: {{source_id}} | {{summary}} | Ref: {{create-jira.id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://honda.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: records
      path: /sobjects
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: jira
    baseUri: https://honda.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: records
      path: /issue
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → salesforce-churn-signal-to-retention-workflow.yml

When a delivery is confirmed in SAP, updates the Salesforce order and notifies customer success.

naftiko: '0.5'
info:
  label: SAP Delivery Confirmation to Salesforce Update
  description: When a delivery is confirmed in SAP, updates the Salesforce order and notifies customer success.
  tags:
  - logistics
  - sap
  - salesforce
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: logistics
    port: 8080
    tools:
    - name: sap-delivery-confirmation-to-salesforce-update
      description: When a delivery is confirmed in SAP, updates the Salesforce order and notifies customer success.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-sap
        type: call
        call: sap.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-salesforce
        type: call
        call: salesforce.create-record
        with:
          reference: '{{process-sap.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_logistics_team_id
          channel_id: $secrets.teams_logistics_channel_id
          text: 'SAP Delivery Confirmation to Salesforce Update: {{source_id}} | {{summary}} | Ref: {{create-salesforce.id}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://honda-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: records
      path: /A_BusinessPartner
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://honda.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: records
      path: /sobjects
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → sap-delivery-confirmation-to-salesforce-update.yml

When a promotion is processed in Workday, updates Okta groups and creates a ServiceNow access request.

naftiko: '0.5'
info:
  label: Workday Promotion to Access Upgrade
  description: When a promotion is processed in Workday, updates Okta groups and creates a ServiceNow access request.
  tags:
  - hr
  - workday
  - okta
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: hr
    port: 8080
    tools:
    - name: workday-promotion-to-access-upgrade
      description: When a promotion is processed in Workday, updates Okta groups and creates a ServiceNow access request.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-workday
        type: call
        call: workday.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-okta
        type: call
        call: okta.create-record
        with:
          reference: '{{process-workday.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_hr_team_id
          channel_id: $secrets.teams_hr_channel_id
          text: 'Workday Promotion to Access Upgrade: {{source_id}} | {{summary}} | Ref: {{create-okta.id}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://honda.workday.com/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: records
      path: /workers
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: okta
    baseUri: https://honda.okta.com/api/v1
    authentication:
      type: bearer
      token: $secrets.okta_api_token
    resources:
    - name: records
      path: /users
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → workday-promotion-to-access-upgrade.yml

When a high-value Salesforce lead submits a feature request, creates a Jira ticket and notifies the product team in Microsoft Teams.

naftiko: '0.5'
info:
  label: Salesforce Lead to Jira Feature Request
  description: When a high-value Salesforce lead submits a feature request, creates a Jira ticket and notifies the product team in Microsoft Teams.
  tags:
  - crm
  - salesforce
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: crm
    port: 8080
    tools:
    - name: salesforce-lead-to-jira-feature-request
      description: When a high-value Salesforce lead submits a feature request, creates a Jira ticket and notifies the product team in Microsoft Teams.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-salesforce
        type: call
        call: salesforce.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-jira
        type: call
        call: jira.create-record
        with:
          reference: '{{process-salesforce.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_crm_team_id
          channel_id: $secrets.teams_crm_channel_id
          text: 'Salesforce Lead to Jira Feature Request: {{source_id}} | {{summary}} | Ref: {{create-jira.id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://honda.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: records
      path: /sobjects
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: jira
    baseUri: https://honda.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: records
      path: /issue
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → salesforce-lead-to-jira-feature-request.yml

Retrieves open Dependabot security alerts from a GitHub repository, creates a ServiceNow security incident for critical vulnerabilities, and posts a triage summary to the security Teams channel.

naftiko: '0.5'
info:
  label: GitHub Repository Security Scan Triage
  description: Retrieves open Dependabot security alerts from a GitHub repository, creates a ServiceNow security incident for critical vulnerabilities, and posts a triage summary to the security Teams channel.
  tags:
  - devops
  - security
  - github
  - servicenow
  - microsoft-teams
  - vulnerability-management
capability:
  exposes:
  - type: mcp
    namespace: devops-security
    port: 8080
    tools:
    - name: triage-security-alerts
      description: Given a GitHub repository, retrieve open Dependabot security alerts at critical or high severity, create a ServiceNow security incident, and post a triage summary to the security Teams channel. Use weekly for software supply chain security reviews.
      inputParameters:
      - name: repository
        in: body
        type: string
        description: The GitHub repository in owner/repo format, e.g. honda-tech/ev-charging-api.
      - name: severity
        in: body
        type: string
        description: 'Minimum severity to include: critical, high, or medium.'
      steps:
      - name: list-alerts
        type: call
        call: github-security.list-dependabot-alerts
        with:
          repository: '{{repository}}'
          severity: '{{severity}}'
      - name: create-security-incident
        type: call
        call: servicenow-security.create-incident
        with:
          short_description: 'Security vulnerability triage: {{repository}} — {{severity}}+ severity'
          category: security
          urgency: '2'
      - name: post-triage
        type: call
        call: msteams-security.post-channel-message
        with:
          channel_id: $secrets.teams_security_channel_id
          message: 'Security Alert Triage | Repo: {{repository}} | Severity: {{severity}}+ | Dependabot alerts retrieved. Incident: {{create-security-incident.number}} | Please review and patch affected dependencies.'
  consumes:
  - type: http
    namespace: github-security
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: dependabot-alerts
      path: /repos/{{repository}}/dependabot/alerts
      inputParameters:
      - name: repository
        in: path
      - name: severity
        in: query
      operations:
      - name: list-dependabot-alerts
        method: GET
  - type: http
    namespace: servicenow-security
    baseUri: https://honda.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: msteams-security
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → github-repository-security-scan-triage.yml

When Snowflake credit consumption spikes, creates a Jira investigation ticket and alerts the FinOps team.

naftiko: '0.5'
info:
  label: Snowflake Cost Spike to FinOps Alert
  description: When Snowflake credit consumption spikes, creates a Jira investigation ticket and alerts the FinOps team.
  tags:
  - finops
  - snowflake
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finops
    port: 8080
    tools:
    - name: snowflake-cost-spike-to-finops-alert
      description: When Snowflake credit consumption spikes, creates a Jira investigation ticket and alerts the FinOps team.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-snowflake
        type: call
        call: snowflake.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-jira
        type: call
        call: jira.create-record
        with:
          reference: '{{process-snowflake.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_finops_team_id
          channel_id: $secrets.teams_finops_channel_id
          text: 'Snowflake Cost Spike to FinOps Alert: {{source_id}} | {{summary}} | Ref: {{create-jira.id}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://honda.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: records
      path: /statements
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: jira
    baseUri: https://honda.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: records
      path: /issue
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → snowflake-cost-spike-to-finops-alert.yml

When an Azure DevOps release is triggered, creates a ServiceNow standard change and notifies the CAB.

naftiko: '0.5'
info:
  label: Azure DevOps Release to ServiceNow Change
  description: When an Azure DevOps release is triggered, creates a ServiceNow standard change and notifies the CAB.
  tags:
  - devops
  - azure-devops
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: devops
    port: 8080
    tools:
    - name: azure-devops-release-to-servicenow-change
      description: When an Azure DevOps release is triggered, creates a ServiceNow standard change and notifies the CAB.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-azdo
        type: call
        call: azdo.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-servicenow
        type: call
        call: servicenow.create-record
        with:
          reference: '{{process-azdo.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_devops_team_id
          channel_id: $secrets.teams_devops_channel_id
          text: 'Azure DevOps Release to ServiceNow Change: {{source_id}} | {{summary}} | Ref: {{create-servicenow.id}}'
  consumes:
  - type: http
    namespace: azdo
    baseUri: https://dev.azure.com
    authentication:
      type: bearer
      token: $secrets.azdo_token
    resources:
    - name: records
      path: /pipelines
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://honda.service-now.com/api/now
    authentication:
      type: bearer
      token: $secrets.servicenow_token
    resources:
    - name: records
      path: /table/incident
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → azure-devops-release-to-servicenow-change.yml

Retrieves the status of financial period-close tasks in SAP S/4HANA for a given Honda company code and fiscal period, surfacing open items for the finance controller.

naftiko: '0.5'
info:
  label: SAP Period Close Checklist
  description: Retrieves the status of financial period-close tasks in SAP S/4HANA for a given Honda company code and fiscal period, surfacing open items for the finance controller.
  tags:
  - finance
  - period-close
  - sap
  - erp
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: finance-close
    port: 8080
    tools:
    - name: get-period-close-status
      description: Given an SAP company code and fiscal period, retrieve the list of period-close tasks and their completion status. Use during month-end and quarter-end financial close for Honda's global entities.
      inputParameters:
      - name: company_code
        in: body
        type: string
        description: The SAP company code, e.g. 1000 for Honda Motor Co. Japan.
      - name: fiscal_period
        in: body
        type: string
        description: The fiscal period in YYYYMM format, e.g. 202503.
      call: sap-close.get-closing-tasks
      with:
        company_code: '{{company_code}}'
        fiscal_period: '{{fiscal_period}}'
      outputParameters:
      - name: open_tasks
        type: array
        mapping: $.d.results
        items:
        - name: task_id
          type: string
          mapping: $.TaskID
        - name: description
          type: string
          mapping: $.Description
        - name: status
          type: string
          mapping: $.Status
        - name: responsible
          type: string
          mapping: $.ResponsibleUser
  consumes:
  - type: http
    namespace: sap-close
    baseUri: https://honda-s4.sap.com/sap/opu/odata/sap/FAR_PERIOD_CLOSE_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: closing-tasks
      path: /ClosingTaskSet
      inputParameters:
      - name: company_code
        in: query
      - name: fiscal_period
        in: query
      operations:
      - name: get-closing-tasks
        method: GET
        outputRawFormat: xml
Open in Framework → View in Fleet → sap-period-close-checklist.yml

Checks the last refresh status of a Power BI dataset.

naftiko: '0.5'
info:
  label: Power BI Dataset Refresh Status
  description: Checks the last refresh status of a Power BI dataset.
  tags:
  - analytics
  - power-bi
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: analytics
    port: 8080
    tools:
    - name: get-refresh-status
      description: Given a Power BI dataset ID, return the refresh status.
      inputParameters:
      - name: dataset_id
        in: body
        type: string
        description: Power BI dataset ID.
      call: powerbi.get-refresh-history
      with:
        datasetId: '{{dataset_id}}'
      outputParameters:
      - name: result_id
        type: string
        mapping: $.id
      - name: result_status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: powerbi
    baseUri: https://api.example.com/v1
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: datasets
      path: /datasets
      inputParameters:
      - name: datasetId
        in: path
      operations:
      - name: get-refresh-history
        method: GET
Open in Framework → View in Fleet → power-bi-dataset-refresh-status.yml

When a Datadog monitor fires for a manufacturing or connected-vehicle platform service, creates a ServiceNow incident and alerts the operations Teams channel with severity and affected system details.

naftiko: '0.5'
info:
  label: Datadog Manufacturing System Alert Handler
  description: When a Datadog monitor fires for a manufacturing or connected-vehicle platform service, creates a ServiceNow incident and alerts the operations Teams channel with severity and affected system details.
  tags:
  - itsm
  - observability
  - datadog
  - servicenow
  - microsoft-teams
  - manufacturing
  - incident-response
capability:
  exposes:
  - type: mcp
    namespace: infra-ops
    port: 8080
    tools:
    - name: handle-infra-alert
      description: Given a Datadog monitor ID, alert title, affected system, and severity, create a ServiceNow incident and notify the IT operations Teams channel. Use when Datadog detects failures in manufacturing execution, telematics, or EV platform services.
      inputParameters:
      - name: monitor_id
        in: body
        type: string
        description: The Datadog monitor ID that triggered.
      - name: alert_title
        in: body
        type: string
        description: Human-readable alert title from Datadog.
      - name: affected_system
        in: body
        type: string
        description: The affected system name, e.g. MES, Telematics-Platform, or EV-Charging-API.
      - name: severity
        in: body
        type: string
        description: 'Alert severity: P1, P2, or P3.'
      steps:
      - name: create-incident
        type: call
        call: servicenow-infra.create-incident
        with:
          short_description: '[{{severity}}] {{alert_title}} — {{affected_system}}'
          urgency: '1'
          category: infrastructure
      - name: notify-ops
        type: call
        call: msteams-infra.post-channel-message
        with:
          channel_id: $secrets.teams_it_ops_channel_id
          message: 'ALERT {{severity}}: {{alert_title}} | System: {{affected_system}} | Monitor: {{monitor_id}} | Incident: {{create-incident.number}}'
  consumes:
  - type: http
    namespace: servicenow-infra
    baseUri: https://honda.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: msteams-infra
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{channel_id}}/channels/messages
      inputParameters:
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → datadog-manufacturing-system-alert-handler.yml

When a Workday org restructure is processed, triggers an Okta access review and creates a compliance ticket.

naftiko: '0.5'
info:
  label: Workday Org Change to Access Review
  description: When a Workday org restructure is processed, triggers an Okta access review and creates a compliance ticket.
  tags:
  - compliance
  - workday
  - okta
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: compliance
    port: 8080
    tools:
    - name: workday-org-change-to-access-review
      description: When a Workday org restructure is processed, triggers an Okta access review and creates a compliance ticket.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-workday
        type: call
        call: workday.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-okta
        type: call
        call: okta.create-record
        with:
          reference: '{{process-workday.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_compliance_team_id
          channel_id: $secrets.teams_compliance_channel_id
          text: 'Workday Org Change to Access Review: {{source_id}} | {{summary}} | Ref: {{create-okta.id}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://honda.workday.com/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: records
      path: /workers
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: okta
    baseUri: https://honda.okta.com/api/v1
    authentication:
      type: bearer
      token: $secrets.okta_api_token
    resources:
    - name: records
      path: /users
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → workday-org-change-to-access-review.yml

When a quality inspection places goods on hold, creates a Jira quality issue and notifies procurement.

naftiko: '0.5'
info:
  label: SAP Quality Hold to Supplier Notification
  description: When a quality inspection places goods on hold, creates a Jira quality issue and notifies procurement.
  tags:
  - quality
  - sap
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: quality
    port: 8080
    tools:
    - name: sap-quality-hold-to-supplier-notification
      description: When a quality inspection places goods on hold, creates a Jira quality issue and notifies procurement.
      inputParameters:
      - name: source_id
        in: body
        type: string
        description: Source record identifier.
      - name: summary
        in: body
        type: string
        description: Summary of the event.
      - name: severity
        in: body
        type: string
        description: Priority or severity level.
      steps:
      - name: process-sap
        type: call
        call: sap.process-record
        with:
          id: '{{source_id}}'
          description: '{{summary}}'
      - name: create-jira
        type: call
        call: jira.create-record
        with:
          reference: '{{process-sap.id}}'
          summary: '{{summary}}'
          priority: '{{severity}}'
      - name: notify-team
        type: call
        call: msteams.send-channel-message
        with:
          team_id: $secrets.teams_quality_team_id
          channel_id: $secrets.teams_quality_channel_id
          text: 'SAP Quality Hold to Supplier Notification: {{source_id}} | {{summary}} | Ref: {{create-jira.id}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://honda-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
    authentication:
      type: bearer
      token: $secrets.sap_token
    resources:
    - name: records
      path: /A_BusinessPartner
      operations:
      - name: process-record
        method: POST
  - type: http
    namespace: jira
    baseUri: https://honda.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: records
      path: /issue
      operations:
      - name: create-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-channel-message
        method: POST
Open in Framework → View in Fleet → sap-quality-hold-to-supplier-notification.yml

Retrieves the current status and last login of an Okta user.

naftiko: '0.5'
info:
  label: Okta User Status Lookup
  description: Retrieves the current status and last login of an Okta user.
  tags:
  - identity
  - okta
  - security
capability:
  exposes:
  - type: mcp
    namespace: identity
    port: 8080
    tools:
    - name: get-user-status
      description: Given an email, retrieve the Okta user status.
      inputParameters:
      - name: email
        in: body
        type: string
        description: Okta user email.
      call: okta.get-user
      with:
        login: '{{email}}'
      outputParameters:
      - name: result_id
        type: string
        mapping: $.id
      - name: result_status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: okta
    baseUri: https://honda.okta.com/api/v1
    authentication:
      type: bearer
      token: $secrets.okta_api_token
    resources:
    - name: users
      path: /users
      inputParameters:
      - name: login
        in: path
      operations:
      - name: get-user
        method: GET
Open in Framework → View in Fleet → okta-user-status-lookup.yml

Retrieves the current status, assignee, and priority of a Jira issue.

naftiko: '0.5'
info:
  label: Jira Issue Status Lookup
  description: Retrieves the current status, assignee, and priority of a Jira issue.
  tags:
  - project-management
  - jira
  - issue-tracking
capability:
  exposes:
  - type: mcp
    namespace: project-management
    port: 8080
    tools:
    - name: get-issue-status
      description: Given a Jira issue key, return the current status.
      inputParameters:
      - name: issue_key
        in: body
        type: string
        description: Jira issue key.
      call: jira.get-issue
      with:
        issue_id: '{{issue_key}}'
      outputParameters:
      - name: result_id
        type: string
        mapping: $.id
      - name: result_status
        type: string
        mapping: $.status
  consumes:
  - type: http
    namespace: jira
    baseUri: https://honda.atlassian.net/rest/api/3
    authentication:
      type: bearer
      token: $secrets.jira_token
    resources:
    - name: issues
      path: /issue
      inputParameters:
      - name: issue_id
        in: path
      operations:
      - name: get-issue
        method: GET
Open in Framework → View in Fleet → jira-issue-status-lookup.yml

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

When a vehicle service is completed, sends a satisfaction survey via Google Forms, logs the response in Salesforce, and escalates low scores to the dealer operations team in Microsoft Teams.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

naftiko: '0.5'
info:
  label: Vehicle Certification Compliance Coordinator
  description: Coordinates vehicle certification by pulling test data from the homologation system, submitting documents to the regulatory portal, and tracking in Jira.
  tags:
  - regulatory
  - certification
  - jira
capability:
  exposes:
  - type: mcp
    namespace: vehicle-certification
    port: 8080
    tools:
    - name: coordinate-certification
      description: Coordinate vehicle certification and homologation.
      inputParameters:
      - name: model_code
        in: body
        type: string
        description: The vehicle model code.
      - name: market
        in: body
        type: string
        description: Target market ISO code.
      steps:
      - name: get-test-results
        type: call
        call: homologation.get-results
        with:
          model: '{{model_code}}'
          market: '{{market}}'
      - name: submit-documents
        type: call
        call: regulatory-portal.submit
        with:
          model: '{{model_code}}'
          market: '{{market}}'
          test_report_id: '{{get-test-results.report_id}}'
      - name: create-tracking
        type: call
        call: jira.create-issue
        with:
          project: CERT
          issue_type: Task
          summary: 'Certification: {{model_code}} for {{market}}'
          description: 'Submission: {{submit-documents.submission_id}}. Test results: {{get-test-results.status}}.'
  consumes:
  - type: http
    namespace: homologation
    baseUri: https://homologation.hyundai.com/api/v1
    authentication:
      type: bearer
      token: $secrets.homologation_token
    resources:
    - name: results
      path: /models/{{model}}/markets/{{market}}/results
      inputParameters:
      - name: model
        in: path
      - name: market
        in: path
      operations:
      - name: get-results
        method: GET
  - type: http
    namespace: regulatory-portal
    baseUri: https://regulatory.hyundai.com/api/v1
    authentication:
      type: bearer
      token: $secrets.regulatory_token
    resources:
    - name: submissions
      path: /submissions
      operations:
      - name: submit
        method: POST
  - type: http
    namespace: jira
    baseUri: https://hyundai.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → vehicle-certification-compliance-coordinator.yml

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Verifies Workday benefits enrollment, checks SAP payroll deductions, and sends Teams confirmation.

naftiko: '0.5'
info:
  label: Benefits Enrollment Verification
  description: Verifies Workday benefits enrollment, checks SAP payroll deductions, and sends Teams confirmation.
  tags:
  - hr
  - workday
  - sap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr
    port: 8080
    tools:
    - name: benefits-orchestrate
      description: Verifies Workday benefits enrollment, checks SAP payroll deductions, and sends Teams confirmation.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: workday.get-worker
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: sap.get-po
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: msteams.send-message
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /mercedes-benz/workers/{{worker_id}}
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: sap
    baseUri: https://mercedes-benz-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: purchase-orders
      path: /A_PurchaseOrder('{{{{po_number}}}}')
      operations:
      - name: get-po
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/mercedes-benz/channels/general/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → benefits-enrollment-verification.yml

Runs Snowflake data quality check, logs in ServiceNow, and notifies data engineering via Teams.

naftiko: '0.5'
info:
  label: Data Quality Alert Workflow
  description: Runs Snowflake data quality check, logs in ServiceNow, and notifies data engineering via Teams.
  tags:
  - data
  - snowflake
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: data
    port: 8080
    tools:
    - name: data-orchestrate
      description: Runs Snowflake data quality check, logs in ServiceNow, and notifies data engineering via Teams.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: snowflake.run-query
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: servicenow.create-incident
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: msteams.send-message
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://mercedes-benz.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: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/mercedes-benz/channels/general/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → data-quality-alert-workflow.yml

Retrieves a Jira issue by key, returning summary, status, and assignee.

naftiko: '0.5'
info:
  label: Jira Issue Detail Lookup
  description: Retrieves a Jira issue by key, returning summary, status, and assignee.
  tags:
  - devops
  - jira
  - project-management
capability:
  exposes:
  - type: mcp
    namespace: project-management
    port: 8080
    tools:
    - name: get-jira-issue
      description: Retrieves a Jira issue by key, returning summary, status, and assignee.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary lookup parameter.
      call: jira.get-issue
      with:
        param_1: '{{param_1}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.result
  consumes:
  - type: http
    namespace: jira
    baseUri: https://mercedes-benz.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_password
    resources:
    - name: get-issue
      path: /issue/{{{{issue_key}}}}
      operations:
      - name: get-issue
        method: GET
Open in Framework → View in Fleet → jira-issue-detail-lookup.yml

When Datadog alert fires, creates Jira incident ticket and posts Teams notification.

naftiko: '0.5'
info:
  label: Monitoring Alert to Jira Bridge
  description: When Datadog alert fires, creates Jira incident ticket and posts Teams notification.
  tags:
  - monitoring
  - datadog
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: monitoring
    port: 8080
    tools:
    - name: monitoring-orchestrate
      description: When Datadog alert fires, creates Jira incident ticket and posts Teams notification.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: datadog.get-monitor
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: jira.create-issue
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: msteams.send-message
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apiKey
      header: DD-API-KEY
      key: $secrets.datadog_api_key
    resources:
    - name: monitors
      path: /monitor/{{{{monitor_id}}}}
      operations:
      - name: get-monitor
        method: GET
  - type: http
    namespace: jira
    baseUri: https://mercedes-benz.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_password
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/mercedes-benz/channels/general/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → monitoring-alert-to-jira-bridge.yml

When Datadog detects a cloud cost anomaly, creates a ServiceNow change request, and notifies the FinOps team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Cloud Cost Anomaly Alert
  description: When Datadog detects a cloud cost anomaly, creates a ServiceNow change request, and notifies the FinOps team via Microsoft Teams.
  tags:
  - cloud
  - finops
  - datadog
  - servicenow
  - microsoft-teams
  - cost-management
capability:
  exposes:
  - type: mcp
    namespace: cloud-finops
    port: 8080
    tools:
    - name: handle-cost-anomaly
      description: Given a Datadog cost anomaly alert with service name and excess amount, create a ServiceNow change request for cost review and notify the FinOps Microsoft Teams channel.
      inputParameters:
      - name: service_name
        in: body
        type: string
        description: The cloud service or application generating the cost anomaly.
      - name: excess_amount
        in: body
        type: number
        description: The dollar amount exceeding the expected cost baseline.
      - name: anomaly_period
        in: body
        type: string
        description: The time period of the anomaly (e.g., 2026-03-20).
      steps:
      - name: create-change
        type: call
        call: servicenow.create-change
        with:
          short_description: 'Cost anomaly review: {{service_name}} - ${{excess_amount}} over baseline'
          category: cloud_cost
          type: normal
      - name: notify-finops
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: finops-alerts
          message: 'Cost Anomaly Detected: {{service_name}} exceeded baseline by ${{excess_amount}} on {{anomaly_period}}. Change: {{create-change.number}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: change-request
      path: /table/change_request
      operations:
      - name: create-change
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → cloud-cost-anomaly-alert.yml

Processes SAP intercompany transfer, logs in Snowflake audit, and notifies logistics via Teams.

naftiko: '0.5'
info:
  label: Intercompany Transfer Orchestrator
  description: Processes SAP intercompany transfer, logs in Snowflake audit, and notifies logistics via Teams.
  tags:
  - logistics
  - sap
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: logistics
    port: 8080
    tools:
    - name: intercompany-orchestrate
      description: Processes SAP intercompany transfer, logs in Snowflake audit, and notifies logistics via Teams.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: sap.get-po
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: snowflake.run-query
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: msteams.send-message
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://mercedes-benz-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: purchase-orders
      path: /A_PurchaseOrder('{{{{po_number}}}}')
      operations:
      - name: get-po
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://mercedes-benz.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: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/mercedes-benz/channels/general/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → intercompany-transfer-orchestrator.yml

Queries Workday for employee data, checks Okta group assignments, and logs verification in ServiceNow.

naftiko: '0.5'
info:
  label: Security Clearance Verification Workflow
  description: Queries Workday for employee data, checks Okta group assignments, and logs verification in ServiceNow.
  tags:
  - security
  - workday
  - okta
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: security
    port: 8080
    tools:
    - name: security-orchestrate
      description: Queries Workday for employee data, checks Okta group assignments, and logs verification in ServiceNow.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: workday.get-worker
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: okta.get-user-groups
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: servicenow.create-incident
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /mercedes-benz/workers/{{worker_id}}
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: okta
    baseUri: https://mercedes-benz.okta.com/api/v1
    authentication:
      type: bearer
      token: $secrets.okta_token
    resources:
    - name: user-groups
      path: /users/{{{{user_id}}}}/groups
      operations:
      - name: get-user-groups
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → security-clearance-verification-workflow.yml

Retrieves all Okta group memberships for a user.

naftiko: '0.5'
info:
  label: Okta User Group Membership Lookup
  description: Retrieves all Okta group memberships for a user.
  tags:
  - security
  - okta
  - identity
capability:
  exposes:
  - type: mcp
    namespace: identity
    port: 8080
    tools:
    - name: get-user-groups
      description: Retrieves all Okta group memberships for a user.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary lookup parameter.
      call: okta.get-user-groups
      with:
        param_1: '{{param_1}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.result
  consumes:
  - type: http
    namespace: okta
    baseUri: https://mercedes-benz.okta.com/api/v1
    authentication:
      type: bearer
      token: $secrets.okta_token
    resources:
    - name: get-user-groups
      path: /users/{{{{user_id}}}}/groups
      operations:
      - name: get-user-groups
        method: GET
Open in Framework → View in Fleet → okta-user-group-membership-lookup.yml

Gathers completed Jira issues, generates Confluence release notes, and notifies stakeholders via Teams.

naftiko: '0.5'
info:
  label: Release Documentation Generator
  description: Gathers completed Jira issues, generates Confluence release notes, and notifies stakeholders via Teams.
  tags:
  - devops
  - jira
  - confluence
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: devops
    port: 8080
    tools:
    - name: release-orchestrate
      description: Gathers completed Jira issues, generates Confluence release notes, and notifies stakeholders via Teams.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: jira.create-issue
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: confluence.create-page
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: msteams.send-message
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://mercedes-benz.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_password
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://mercedes-benz.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_password
    resources:
    - name: pages
      path: /content
      operations:
      - name: create-page
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/mercedes-benz/channels/general/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → release-documentation-generator.yml

Detects expiring Salesforce contracts, pulls Snowflake spend data, and creates Jira renewal task.

naftiko: '0.5'
info:
  label: Contract Renewal Alert Workflow
  description: Detects expiring Salesforce contracts, pulls Snowflake spend data, and creates Jira renewal task.
  tags:
  - sales
  - salesforce
  - snowflake
  - jira
capability:
  exposes:
  - type: mcp
    namespace: sales
    port: 8080
    tools:
    - name: contract-orchestrate
      description: Detects expiring Salesforce contracts, pulls Snowflake spend data, and creates Jira renewal task.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: salesforce.get-opportunity
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: snowflake.run-query
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: jira.create-issue
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://mercedes-benz.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunities
      path: /sobjects/Opportunity
      operations:
      - name: get-opportunity
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://mercedes-benz.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
    baseUri: https://mercedes-benz.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_password
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → contract-renewal-alert-workflow.yml

Pulls LinkedIn pipeline, creates Workday requisition, and notifies hiring manager via Teams.

naftiko: '0.5'
info:
  label: Recruiting Pipeline to Workday Sync
  description: Pulls LinkedIn pipeline, creates Workday requisition, and notifies hiring manager via Teams.
  tags:
  - hr
  - linkedin
  - workday
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr
    port: 8080
    tools:
    - name: recruiting-orchestrate
      description: Pulls LinkedIn pipeline, creates Workday requisition, and notifies hiring manager via Teams.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: linkedin.get-job-pipeline
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: workday.get-worker
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: msteams.send-message
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: postings
      path: /jobPostings
      operations:
      - name: get-job-pipeline
        method: GET
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /mercedes-benz/workers/{{worker_id}}
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/mercedes-benz/channels/general/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → recruiting-pipeline-to-workday-sync.yml

Processes access request by verifying identity in Workday, provisioning Okta group, creating ServiceNow request, and notifying via Teams.

naftiko: '0.5'
info:
  label: System Access Request Orchestrator
  description: Processes access request by verifying identity in Workday, provisioning Okta group, creating ServiceNow request, and notifying via Teams.
  tags:
  - security
  - workday
  - okta
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: security
    port: 8080
    tools:
    - name: system-orchestrate
      description: Processes access request by verifying identity in Workday, provisioning Okta group, creating ServiceNow request, and notifying via Teams.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: workday.get-worker
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: okta.get-user-groups
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: servicenow.create-incident
        with:
          input: '{{step-1.result}}'
      - name: step-4
        type: call
        call: msteams.send-message
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /mercedes-benz/workers/{{worker_id}}
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: okta
    baseUri: https://mercedes-benz.okta.com/api/v1
    authentication:
      type: bearer
      token: $secrets.okta_token
    resources:
    - name: user-groups
      path: /users/{{{{user_id}}}}/groups
      operations:
      - name: get-user-groups
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/mercedes-benz/channels/general/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → system-access-request-orchestrator.yml

Generates a sprint retrospective summary by fetching completed and incomplete Jira issues and posting a digest to the team's Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Jira Sprint Retrospective Digest
  description: Generates a sprint retrospective summary by fetching completed and incomplete Jira issues and posting a digest to the team's Microsoft Teams channel.
  tags:
  - devops
  - reporting
  - jira
  - microsoft-teams
  - agile
capability:
  exposes:
  - type: mcp
    namespace: agile-reporting
    port: 8080
    tools:
    - name: digest-sprint-retrospective
      description: Given a Jira board ID and sprint ID, fetch completed and incomplete issues, compute velocity metrics, and post a formatted retrospective digest to the team's Microsoft Teams channel.
      inputParameters:
      - name: board_id
        in: body
        type: string
        description: The Jira board ID for the sprint.
      - name: sprint_id
        in: body
        type: string
        description: The Jira sprint ID to summarize.
      - name: teams_channel_id
        in: body
        type: string
        description: The Microsoft Teams channel ID to post the digest to.
      steps:
      - name: get-issues
        type: call
        call: jira.list-sprint-issues
        with:
          board_id: '{{board_id}}'
          sprint_id: '{{sprint_id}}'
      - name: post-digest
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: '{{teams_channel_id}}'
          message: 'Sprint Retrospective - Sprint {{sprint_id}}: {{get-issues.done_count}} issues completed, {{get-issues.todo_count}} carried over. Velocity: {{get-issues.story_points_completed}} points.'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://mercedes-benz.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: list-sprint-issues
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → jira-sprint-retrospective-digest.yml

When Datadog detects latency, creates Jira performance ticket and alerts engineering via Teams.

naftiko: '0.5'
info:
  label: APM Latency Alert Handler
  description: When Datadog detects latency, creates Jira performance ticket and alerts engineering via Teams.
  tags:
  - monitoring
  - datadog
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: monitoring
    port: 8080
    tools:
    - name: apm-orchestrate
      description: When Datadog detects latency, creates Jira performance ticket and alerts engineering via Teams.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: datadog.get-monitor
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: jira.create-issue
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: msteams.send-message
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apiKey
      header: DD-API-KEY
      key: $secrets.datadog_api_key
    resources:
    - name: monitors
      path: /monitor/{{{{monitor_id}}}}
      operations:
      - name: get-monitor
        method: GET
  - type: http
    namespace: jira
    baseUri: https://mercedes-benz.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_password
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/mercedes-benz/channels/general/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → apm-latency-alert-handler.yml

Queries Snowflake for long-running queries exceeding a cost threshold, creates Jira tickets for optimization, and alerts the data platform team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Snowflake Query Performance Monitor
  description: Queries Snowflake for long-running queries exceeding a cost threshold, creates Jira tickets for optimization, and alerts the data platform team via Microsoft Teams.
  tags:
  - data
  - snowflake
  - performance
  - jira
  - microsoft-teams
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: data-performance
    port: 8080
    tools:
    - name: monitor-query-performance
      description: Identify Snowflake queries running longer than a specified duration threshold, create Jira optimization tickets for each, and post a summary to the data platform Microsoft Teams channel.
      inputParameters:
      - name: duration_threshold_minutes
        in: body
        type: integer
        description: Minimum query duration in minutes to flag for optimization (e.g., 30).
      - name: cost_threshold_credits
        in: body
        type: number
        description: Minimum Snowflake credit consumption to flag (e.g., 10.0).
      steps:
      - name: get-slow-queries
        type: call
        call: snowflake.query-slow-queries
        with:
          duration_threshold: '{{duration_threshold_minutes}}'
          cost_threshold: '{{cost_threshold_credits}}'
      - name: create-optimization-ticket
        type: call
        call: jira.create-issue
        with:
          project_key: DATA
          issuetype: Task
          summary: 'Snowflake query optimization: {{get-slow-queries.query_count}} queries above threshold'
          description: 'Queries consuming over {{cost_threshold_credits}} credits or running >{{duration_threshold_minutes}} min: {{get-slow-queries.query_summary}}'
      - name: notify-data-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: data-platform
          message: 'Snowflake Performance Alert: {{get-slow-queries.query_count}} queries flagged. Jira: {{create-optimization-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://mercedes-benz.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query-slow-queries
        method: POST
  - type: http
    namespace: jira
    baseUri: https://mercedes-benz.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → snowflake-query-performance-monitor.yml

Retrieves a pending ServiceNow change request, notifies the Change Advisory Board via Microsoft Teams, and updates the change record with approval decision.

naftiko: '0.5'
info:
  label: ServiceNow Change Management Approval
  description: Retrieves a pending ServiceNow change request, notifies the Change Advisory Board via Microsoft Teams, and updates the change record with approval decision.
  tags:
  - itsm
  - change-management
  - servicenow
  - microsoft-teams
  - approval
capability:
  exposes:
  - type: mcp
    namespace: change-management
    port: 8080
    tools:
    - name: process-change-approval
      description: Given a ServiceNow change request number and approval decision, retrieve the change details, update the approval status in ServiceNow, and notify the CAB via Microsoft Teams.
      inputParameters:
      - name: change_number
        in: body
        type: string
        description: The ServiceNow change request number (e.g., CHG0012345).
      - name: approval_decision
        in: body
        type: string
        description: 'The approval decision: approved or rejected.'
      - name: approver_comments
        in: body
        type: string
        description: Comments from the approver explaining the decision.
      steps:
      - name: get-change
        type: call
        call: servicenow-lookup.get-change-request
        with:
          change_number: '{{change_number}}'
      - name: update-approval
        type: call
        call: servicenow-update.update-change-approval
        with:
          change_number: '{{change_number}}'
          state: '{{approval_decision}}'
          comments: '{{approver_comments}}'
      - name: notify-cab
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: change-advisory-board
          message: 'Change {{change_number}} - {{get-change.short_description}}: {{approval_decision}}. Comments: {{approver_comments}}'
  consumes:
  - type: http
    namespace: servicenow-lookup
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: change-request
      path: /table/change_request
      inputParameters:
      - name: change_number
        in: query
      operations:
      - name: get-change-request
        method: GET
  - type: http
    namespace: servicenow-update
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: change-approval
      path: /table/change_request/{{sys_id}}
      inputParameters:
      - name: sys_id
        in: path
      operations:
      - name: update-change-approval
        method: PATCH
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → servicenow-change-management-approval.yml

Retrieves budget vs. actuals for a SAP cost center and fiscal period.

naftiko: '0.5'
info:
  label: SAP Cost Center Budget Lookup
  description: Retrieves budget vs. actuals for a SAP cost center and fiscal period.
  tags:
  - finance
  - sap
  - budget
capability:
  exposes:
  - type: mcp
    namespace: erp-finance
    port: 8080
    tools:
    - name: get-cost-center-budget
      description: Retrieves budget vs. actuals for a SAP cost center and fiscal period.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary lookup parameter.
      call: sap.get-budget
      with:
        param_1: '{{param_1}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.result
  consumes:
  - type: http
    namespace: sap
    baseUri: https://mercedes-benz-s4.sap.com/sap/opu/odata/sap/API_CSTCTRBUDGET_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: get-budget
      path: /A_CostCenterBudget(CostCenter='{{{{cost_center}}}}',FiscalYear='{{{{fiscal_year}}}}')
      operations:
      - name: get-budget
        method: GET
Open in Framework → View in Fleet → sap-cost-center-budget-lookup.yml

Retrieves SAP Ariba RFQ, sends vendor notification via Graph, and updates Salesforce opportunity.

naftiko: '0.5'
info:
  label: RFQ to Vendor Notification
  description: Retrieves SAP Ariba RFQ, sends vendor notification via Graph, and updates Salesforce opportunity.
  tags:
  - procurement
  - sap-ariba
  - microsoft-graph
  - salesforce
capability:
  exposes:
  - type: mcp
    namespace: procurement
    port: 8080
    tools:
    - name: rfq-orchestrate
      description: Retrieves SAP Ariba RFQ, sends vendor notification via Graph, and updates Salesforce opportunity.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: ariba.get-vendor
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: msgraph.send-mail
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: salesforce.get-opportunity
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: ariba
    baseUri: https://openapi.ariba.com/api/procurement/v2
    authentication:
      type: bearer
      token: $secrets.ariba_token
    resources:
    - name: vendors
      path: /vendors/{{{{vendor_id}}}}
      operations:
      - name: get-vendor
        method: GET
  - type: http
    namespace: msgraph
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: mail
      path: /me/sendMail
      operations:
      - name: send-mail
        method: POST
  - type: http
    namespace: salesforce
    baseUri: https://mercedes-benz.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunities
      path: /sobjects/Opportunity
      operations:
      - name: get-opportunity
        method: GET
Open in Framework → View in Fleet → rfq-to-vendor-notification.yml

Checks a GitHub repository for branch protection compliance.

naftiko: '0.5'
info:
  label: GitHub Repository Compliance Check
  description: Checks a GitHub repository for branch protection compliance.
  tags:
  - devops
  - github
  - compliance
capability:
  exposes:
  - type: mcp
    namespace: devops
    port: 8080
    tools:
    - name: check-repo-compliance
      description: Checks a GitHub repository for branch protection compliance.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary lookup parameter.
      call: github.get-branch-protection
      with:
        param_1: '{{param_1}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.result
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: get-branch-protection
      path: /repos/{{{{repo}}}}/branches/main/protection
      operations:
      - name: get-branch-protection
        method: GET
Open in Framework → View in Fleet → github-repository-compliance-check.yml

When a Datadog SLO drops below target, fetches breach details, creates a Jira issue for the owning team, and posts a remediation request to Microsoft Teams.

naftiko: '0.5'
info:
  label: Datadog SLO Breach Reporter
  description: When a Datadog SLO drops below target, fetches breach details, creates a Jira issue for the owning team, and posts a remediation request to Microsoft Teams.
  tags:
  - observability
  - slo
  - datadog
  - jira
  - microsoft-teams
  - reliability
capability:
  exposes:
  - type: mcp
    namespace: slo-ops
    port: 8080
    tools:
    - name: handle-slo-breach
      description: Given a Datadog SLO ID that has breached its target, retrieve breach details, open a Jira issue for the responsible team, and post a remediation request to the platform Microsoft Teams channel.
      inputParameters:
      - name: slo_id
        in: body
        type: string
        description: The Datadog SLO ID that has breached its target.
      - name: current_slo_value
        in: body
        type: number
        description: The current SLO value as a percentage (e.g., 98.5).
      - name: target_slo_value
        in: body
        type: number
        description: The target SLO value as a percentage (e.g., 99.9).
      steps:
      - name: get-slo
        type: call
        call: datadog.get-slo
        with:
          slo_id: '{{slo_id}}'
      - name: create-issue
        type: call
        call: jira.create-issue
        with:
          project_key: ENG
          issuetype: Bug
          summary: 'SLO Breach: {{get-slo.name}} at {{current_slo_value}}% (target {{target_slo_value}}%)'
          description: 'SLO {{get-slo.name}} has breached its target. Current: {{current_slo_value}}% | Target: {{target_slo_value}}%'
      - name: notify-platform
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: platform-reliability
          message: 'SLO BREACH: {{get-slo.name}} is at {{current_slo_value}}% against a {{target_slo_value}}% target. Jira: {{create-issue.key}}'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: slos
      path: /slo/{{slo_id}}
      inputParameters:
      - name: slo_id
        in: path
      operations:
      - name: get-slo
        method: GET
  - type: http
    namespace: jira
    baseUri: https://mercedes-benz.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → datadog-slo-breach-reporter.yml

Retrieves a firewall security rule from Palo Alto Panorama by rule name.

naftiko: '0.5'
info:
  label: Palo Alto Firewall Rule Lookup
  description: Retrieves a firewall security rule from Palo Alto Panorama by rule name.
  tags:
  - security
  - palo-alto-networks
  - firewall
capability:
  exposes:
  - type: mcp
    namespace: network-security
    port: 8080
    tools:
    - name: get-firewall-rule
      description: Retrieves a firewall security rule from Palo Alto Panorama by rule name.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary lookup parameter.
      call: paloalto.get-security-rule
      with:
        param_1: '{{param_1}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.result
  consumes:
  - type: http
    namespace: paloalto
    baseUri: https://panorama.mercedes-benz.com/restapi/v10.2
    authentication:
      type: bearer
      token: $secrets.paloalto_token
    resources:
    - name: get-security-rule
      path: /Policies/SecurityRules?name={{{{rule_name}}}}
      operations:
      - name: get-security-rule
        method: GET
Open in Framework → View in Fleet → palo-alto-firewall-rule-lookup.yml

Fetches LinkedIn Campaign Manager performance metrics for Mercedes-Benz brand campaigns and posts a weekly summary to the marketing Microsoft Teams channel.

naftiko: '0.5'
info:
  label: LinkedIn Brand Campaign Performance Digest
  description: Fetches LinkedIn Campaign Manager performance metrics for Mercedes-Benz brand campaigns and posts a weekly summary to the marketing Microsoft Teams channel.
  tags:
  - marketing
  - social-media
  - linkedin
  - microsoft-teams
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: marketing-reporting
    port: 8080
    tools:
    - name: digest-linkedin-campaign-performance
      description: Retrieve LinkedIn Campaign Manager analytics for a specified date range for Mercedes-Benz brand campaigns and post a formatted digest to the marketing Microsoft Teams channel.
      inputParameters:
      - name: date_range_start
        in: body
        type: string
        description: Start date for the campaign performance report (YYYY-MM-DD).
      - name: date_range_end
        in: body
        type: string
        description: End date for the campaign performance report (YYYY-MM-DD).
      steps:
      - name: get-analytics
        type: call
        call: linkedin.get-campaign-analytics
        with:
          start_date: '{{date_range_start}}'
          end_date: '{{date_range_end}}'
      - name: post-digest
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: marketing-brand
          message: 'LinkedIn Campaign Report ({{date_range_start}} to {{date_range_end}}): Impressions: {{get-analytics.impressions}} | Clicks: {{get-analytics.clicks}} | CTR: {{get-analytics.ctr}}%'
  consumes:
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: campaign-analytics
      path: /adAnalyticsV2
      operations:
      - name: get-campaign-analytics
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → linkedin-brand-campaign-performance-digest.yml

Synchronizes dealer vehicle order data from the Salesforce CRM to SAP S/4HANA for production planning and revenue tracking.

naftiko: '0.5'
info:
  label: Dealer Sales Pipeline Sync
  description: Synchronizes dealer vehicle order data from the Salesforce CRM to SAP S/4HANA for production planning and revenue tracking.
  tags:
  - sales
  - crm
  - salesforce
  - sap-s4hana
  - erp
capability:
  exposes:
  - type: mcp
    namespace: dealer-sales
    port: 8080
    tools:
    - name: sync-dealer-order
      description: Given a Salesforce opportunity ID for a dealer vehicle order, retrieve order details and sync them into SAP S/4HANA as a sales order for production planning.
      inputParameters:
      - name: opportunity_id
        in: body
        type: string
        description: The Salesforce Opportunity ID representing a dealer vehicle order.
      steps:
      - name: get-opportunity
        type: call
        call: salesforce.get-opportunity
        with:
          opportunity_id: '{{opportunity_id}}'
      - name: create-sales-order
        type: call
        call: sap-s4.create-sales-order
        with:
          customer_id: '{{get-opportunity.dealer_account_id}}'
          vehicle_model: '{{get-opportunity.vehicle_model}}'
          quantity: '{{get-opportunity.quantity}}'
          delivery_date: '{{get-opportunity.close_date}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://mercedes-benz.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunity
      path: /sobjects/Opportunity/{{opportunity_id}}
      inputParameters:
      - name: opportunity_id
        in: path
      operations:
      - name: get-opportunity
        method: GET
  - type: http
    namespace: sap-s4
    baseUri: https://mercedes-benz-s4.sap.com/sap/opu/odata/sap/SD_SALES_ORDER_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: sales-orders
      path: /A_SalesOrder
      operations:
      - name: create-sales-order
        method: POST
Open in Framework → View in Fleet → dealer-sales-pipeline-sync.yml

When Okta detects a suspicious login event, creates a high-priority ServiceNow security incident and notifies the security operations team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Okta Suspicious Login Alert
  description: When Okta detects a suspicious login event, creates a high-priority ServiceNow security incident and notifies the security operations team via Microsoft Teams.
  tags:
  - security
  - identity
  - okta
  - servicenow
  - microsoft-teams
  - siem
capability:
  exposes:
  - type: mcp
    namespace: security-ops
    port: 8080
    tools:
    - name: handle-suspicious-login
      description: Given an Okta suspicious login event with user ID and event details, create a high-priority ServiceNow security incident and alert the security operations Microsoft Teams channel for immediate investigation.
      inputParameters:
      - name: user_email
        in: body
        type: string
        description: The email of the user who triggered the suspicious login event.
      - name: event_id
        in: body
        type: string
        description: The Okta system log event ID for the suspicious login.
      - name: ip_address
        in: body
        type: string
        description: The IP address from which the suspicious login originated.
      steps:
      - name: get-event
        type: call
        call: okta.get-system-log-event
        with:
          event_id: '{{event_id}}'
      - name: create-security-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: Suspicious login detected for {{user_email}} from {{ip_address}}
          urgency: '1'
          category: security
          description: 'Okta Event ID: {{event_id}} | User: {{user_email}} | IP: {{ip_address}} | Details: {{get-event.outcome}}'
      - name: alert-soc
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: security-operations
          message: 'SECURITY ALERT: Suspicious login for {{user_email}} from {{ip_address}}. Incident: {{create-security-incident.number}}. Investigate immediately.'
  consumes:
  - type: http
    namespace: okta
    baseUri: https://mercedes-benz.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_api_token
      placement: header
    resources:
    - name: system-logs
      path: /logs/{{event_id}}
      inputParameters:
      - name: event_id
        in: path
      operations:
      - name: get-system-log-event
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incident
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → okta-suspicious-login-alert.yml

Identifies stale Confluence SOPs, creates Jira review tasks, and sends reminders via Teams.

naftiko: '0.5'
info:
  label: SOP Review Cycle Orchestrator
  description: Identifies stale Confluence SOPs, creates Jira review tasks, and sends reminders via Teams.
  tags:
  - knowledge-management
  - confluence
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: knowledge_management
    port: 8080
    tools:
    - name: sop-orchestrate
      description: Identifies stale Confluence SOPs, creates Jira review tasks, and sends reminders via Teams.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: confluence.create-page
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: jira.create-issue
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: msteams.send-message
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://mercedes-benz.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_password
    resources:
    - name: pages
      path: /content
      operations:
      - name: create-page
        method: POST
  - type: http
    namespace: jira
    baseUri: https://mercedes-benz.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_password
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/mercedes-benz/channels/general/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → sop-review-cycle-orchestrator.yml

Pulls CrowdStrike threat indicators, runs Splunk search, and creates ServiceNow security incident.

naftiko: '0.5'
info:
  label: Threat Intel to Log Search
  description: Pulls CrowdStrike threat indicators, runs Splunk search, and creates ServiceNow security incident.
  tags:
  - security
  - crowdstrike
  - splunk
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: security
    port: 8080
    tools:
    - name: threat-orchestrate
      description: Pulls CrowdStrike threat indicators, runs Splunk search, and creates ServiceNow security incident.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: crowdstrike.get-device
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: splunk.run-search
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: servicenow.create-incident
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: crowdstrike
    baseUri: https://api.crowdstrike.com
    authentication:
      type: bearer
      token: $secrets.crowdstrike_token
    resources:
    - name: devices
      path: /devices/entities/devices/v2
      operations:
      - name: get-device
        method: GET
  - type: http
    namespace: splunk
    baseUri: https://splunk.mercedes-benz.com:8089/services
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - name: search
      path: /search/jobs
      operations:
      - name: run-search
        method: POST
  - type: http
    namespace: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → threat-intel-to-log-search.yml

Checks Terraform workspace for drift, creates ServiceNow change, and triggers remediation plan.

naftiko: '0.5'
info:
  label: Terraform Drift Detection and Remediation
  description: Checks Terraform workspace for drift, creates ServiceNow change, and triggers remediation plan.
  tags:
  - devops
  - terraform
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: devops
    port: 8080
    tools:
    - name: terraform-orchestrate
      description: Checks Terraform workspace for drift, creates ServiceNow change, and triggers remediation plan.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: terraform.get-workspace
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: servicenow.create-incident
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: terraform
    baseUri: https://app.terraform.io/api/v2
    authentication:
      type: bearer
      token: $secrets.terraform_token
    resources:
    - name: workspaces
      path: /organizations/mercedes-benz/workspaces
      operations:
      - name: get-workspace
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → terraform-drift-detection-and-remediation.yml

Triggers a Snyk security scan on a GitHub repository and creates Jira issues for any critical or high vulnerabilities discovered.

naftiko: '0.5'
info:
  label: GitHub Repository Security Scan
  description: Triggers a Snyk security scan on a GitHub repository and creates Jira issues for any critical or high vulnerabilities discovered.
  tags:
  - devops
  - security
  - github
  - snyk
  - jira
  - vulnerability-management
capability:
  exposes:
  - type: mcp
    namespace: security-scanning
    port: 8080
    tools:
    - name: scan-repo-vulnerabilities
      description: Given a GitHub repository name, trigger a Snyk vulnerability scan and create Jira issues for all critical and high severity findings.
      inputParameters:
      - name: repository
        in: body
        type: string
        description: The GitHub repository full name to scan (e.g., mercedes-benz/eqs-sdk).
      - name: jira_project_key
        in: body
        type: string
        description: The Jira project key where vulnerability issues should be created.
      steps:
      - name: trigger-scan
        type: call
        call: snyk.test-repository
        with:
          repository: '{{repository}}'
      - name: create-vuln-issue
        type: call
        call: jira.create-issue
        with:
          project_key: '{{jira_project_key}}'
          issuetype: Bug
          summary: Security vulnerabilities found in {{repository}}
          description: 'Snyk scan found {{trigger-scan.critical_count}} critical and {{trigger-scan.high_count}} high vulnerabilities. Report: {{trigger-scan.report_url}}'
  consumes:
  - type: http
    namespace: snyk
    baseUri: https://api.snyk.io/v1
    authentication:
      type: bearer
      token: $secrets.snyk_token
    resources:
    - name: test
      path: /test/github/{{repository}}
      inputParameters:
      - name: repository
        in: path
      operations:
      - name: test-repository
        method: POST
  - type: http
    namespace: jira
    baseUri: https://mercedes-benz.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
Open in Framework → View in Fleet → github-repository-security-scan.yml

Retrieves current headcount by department and cost center from Workday for workforce planning and finance reporting.

naftiko: '0.5'
info:
  label: Workday Headcount Report
  description: Retrieves current headcount by department and cost center from Workday for workforce planning and finance reporting.
  tags:
  - hr
  - reporting
  - workday
  - headcount
capability:
  exposes:
  - type: mcp
    namespace: hr-reporting
    port: 8080
    tools:
    - name: get-headcount-snapshot
      description: Returns current headcount grouped by department and cost center from Workday. Use for workforce planning, budget reviews, and executive reporting.
      call: workday.list-workers
      outputParameters:
      - name: workers
        type: array
        mapping: $.Report_Entry
        items:
        - name: employee_id
          type: string
          mapping: $.Employee_ID
        - name: full_name
          type: string
          mapping: $.Employee_Name
        - name: department
          type: string
          mapping: $.Department
        - name: cost_center
          type: string
          mapping: $.Cost_Center
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: basic
      username: $secrets.workday_user
      password: $secrets.workday_password
    resources:
    - name: workers
      path: /mercedes-benz/workers
      operations:
      - name: list-workers
        method: GET
Open in Framework → View in Fleet → workday-headcount-report.yml

Checks the execution status of a Snowflake query by ID.

naftiko: '0.5'
info:
  label: Snowflake Query Execution Status
  description: Checks the execution status of a Snowflake query by ID.
  tags:
  - data
  - snowflake
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: data-platform
    port: 8080
    tools:
    - name: get-query-status
      description: Checks the execution status of a Snowflake query by ID.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary lookup parameter.
      call: snowflake.get-query-status
      with:
        param_1: '{{param_1}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.result
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://mercedes-benz.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: get-query-status
      path: /statements/{{{{query_id}}}}
      operations:
      - name: get-query-status
        method: GET
Open in Framework → View in Fleet → snowflake-query-execution-status.yml

Triggers a Power BI dataset refresh for the global sales dashboard and notifies the analytics team via Microsoft Teams when complete.

naftiko: '0.5'
info:
  label: Power BI Sales Dashboard Refresh
  description: Triggers a Power BI dataset refresh for the global sales dashboard and notifies the analytics team via Microsoft Teams when complete.
  tags:
  - analytics
  - reporting
  - power-bi
  - microsoft-teams
  - data
capability:
  exposes:
  - type: mcp
    namespace: analytics-reporting
    port: 8080
    tools:
    - name: refresh-sales-dashboard
      description: Given a Power BI dataset ID, trigger a dataset refresh for the global sales dashboard and notify the analytics Microsoft Teams channel upon completion.
      inputParameters:
      - name: dataset_id
        in: body
        type: string
        description: The Power BI dataset ID to refresh.
      - name: workspace_id
        in: body
        type: string
        description: The Power BI workspace ID containing the dataset.
      steps:
      - name: trigger-refresh
        type: call
        call: powerbi.refresh-dataset
        with:
          dataset_id: '{{dataset_id}}'
          workspace_id: '{{workspace_id}}'
      - name: notify-analytics
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: analytics-team
          message: 'Power BI sales dashboard refresh initiated for dataset {{dataset_id}}. Refresh ID: {{trigger-refresh.refresh_id}}'
  consumes:
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: dataset-refreshes
      path: /groups/{{workspace_id}}/datasets/{{dataset_id}}/refreshes
      inputParameters:
      - name: workspace_id
        in: path
      - name: dataset_id
        in: path
      operations:
      - name: refresh-dataset
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → power-bi-sales-dashboard-refresh.yml

Triggers a rollback deployment via GitHub Actions when a Datadog error rate monitor exceeds threshold, creating a ServiceNow change request for audit trail.

naftiko: '0.5'
info:
  label: GitHub Deployment Rollback
  description: Triggers a rollback deployment via GitHub Actions when a Datadog error rate monitor exceeds threshold, creating a ServiceNow change request for audit trail.
  tags:
  - devops
  - deployment
  - github
  - datadog
  - servicenow
  - rollback
capability:
  exposes:
  - type: mcp
    namespace: deployment-ops
    port: 8080
    tools:
    - name: trigger-rollback
      description: Given a repository, environment, and previous stable version tag, trigger a rollback GitHub Actions workflow, create a ServiceNow emergency change request, and log a Datadog event.
      inputParameters:
      - name: repository
        in: body
        type: string
        description: The GitHub repository to roll back (e.g., mercedes-benz/eqs-api).
      - name: environment
        in: body
        type: string
        description: The deployment environment to roll back (production, staging).
      - name: target_version
        in: body
        type: string
        description: The stable version tag to roll back to (e.g., v2.3.1).
      steps:
      - name: create-change
        type: call
        call: servicenow.create-change
        with:
          short_description: 'Emergency rollback: {{repository}} to {{target_version}} in {{environment}}'
          type: emergency
          category: software_deployment
      - name: trigger-workflow
        type: call
        call: github.trigger-workflow
        with:
          repository: '{{repository}}'
          workflow_id: rollback.yml
          ref: main
          inputs: environment={{environment}},version={{target_version}}
      - name: log-event
        type: call
        call: datadog.create-event
        with:
          title: 'Rollback triggered: {{repository}}/{{environment}} to {{target_version}}'
          alert_type: warning
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: change-request
      path: /table/change_request
      operations:
      - name: create-change
        method: POST
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: workflow-dispatches
      path: /repos/{{repository}}/actions/workflows/{{workflow_id}}/dispatches
      inputParameters:
      - name: repository
        in: path
      - name: workflow_id
        in: path
      operations:
      - name: trigger-workflow
        method: POST
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: events
      path: /events
      operations:
      - name: create-event
        method: POST
Open in Framework → View in Fleet → github-deployment-rollback.yml

Checks CrowdStrike for non-compliant endpoints, assigns policies, creates ServiceNow task, and alerts via Teams.

naftiko: '0.5'
info:
  label: Device Compliance Remediation
  description: Checks CrowdStrike for non-compliant endpoints, assigns policies, creates ServiceNow task, and alerts via Teams.
  tags:
  - security
  - crowdstrike
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: security
    port: 8080
    tools:
    - name: device-orchestrate
      description: Checks CrowdStrike for non-compliant endpoints, assigns policies, creates ServiceNow task, and alerts via Teams.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: crowdstrike.get-device
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: servicenow.create-incident
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: msteams.send-message
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: crowdstrike
    baseUri: https://api.crowdstrike.com
    authentication:
      type: bearer
      token: $secrets.crowdstrike_token
    resources:
    - name: devices
      path: /devices/entities/devices/v2
      operations:
      - name: get-device
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/mercedes-benz/channels/general/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → device-compliance-remediation.yml

Provisions Okta application access for a new employee based on their department and role, and logs the provisioning action in ServiceNow.

naftiko: '0.5'
info:
  label: Okta Access Provisioning
  description: Provisions Okta application access for a new employee based on their department and role, and logs the provisioning action in ServiceNow.
  tags:
  - identity
  - security
  - okta
  - servicenow
  - access-management
capability:
  exposes:
  - type: mcp
    namespace: identity-ops
    port: 8080
    tools:
    - name: provision-okta-access
      description: Given a user email, department, and list of required application IDs, assign the user to Okta application groups and log the access provisioning in a ServiceNow ticket.
      inputParameters:
      - name: user_email
        in: body
        type: string
        description: The employee's work email address to provision in Okta.
      - name: department
        in: body
        type: string
        description: The employee's department for role-based group assignment.
      - name: application_ids
        in: body
        type: string
        description: Comma-separated list of Okta application IDs to provision access for.
      steps:
      - name: get-user
        type: call
        call: okta.get-user-by-email
        with:
          email: '{{user_email}}'
      - name: assign-groups
        type: call
        call: okta.assign-user-to-group
        with:
          user_id: '{{get-user.id}}'
          department: '{{department}}'
      - name: log-provisioning
        type: call
        call: servicenow.create-incident
        with:
          short_description: Okta access provisioned for {{user_email}}
          category: access_management
          description: 'Applications: {{application_ids}} | Department: {{department}}'
  consumes:
  - type: http
    namespace: okta
    baseUri: https://mercedes-benz.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_api_token
      placement: header
    resources:
    - name: users
      path: /users
      operations:
      - name: get-user-by-email
        method: GET
    - name: groups
      path: /groups/{{group_id}}/users/{{user_id}}
      inputParameters:
      - name: group_id
        in: path
      - name: user_id
        in: path
      operations:
      - name: assign-user-to-group
        method: PUT
  - type: http
    namespace: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incident
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → okta-access-provisioning.yml

Creates ServiceNow change for GitHub release, triggers Terraform deployment, and posts Teams notification.

naftiko: '0.5'
info:
  label: Release to Deployment Pipeline
  description: Creates ServiceNow change for GitHub release, triggers Terraform deployment, and posts Teams notification.
  tags:
  - devops
  - github
  - servicenow
  - terraform
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: devops
    port: 8080
    tools:
    - name: release-orchestrate
      description: Creates ServiceNow change for GitHub release, triggers Terraform deployment, and posts Teams notification.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: github.get-branch-protection
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: servicenow.create-incident
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: terraform.get-workspace
        with:
          input: '{{step-1.result}}'
      - name: step-4
        type: call
        call: msteams.send-message
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: repos
      path: /repos/{{{{repo}}}}/branches/main/protection
      operations:
      - name: get-branch-protection
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: terraform
    baseUri: https://app.terraform.io/api/v2
    authentication:
      type: bearer
      token: $secrets.terraform_token
    resources:
    - name: workspaces
      path: /organizations/mercedes-benz/workspaces
      operations:
      - name: get-workspace
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/mercedes-benz/channels/general/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → release-to-deployment-pipeline.yml

Monitors SAP delivery schedules, creates Jira follow-up task, and alerts supply chain via Teams.

naftiko: '0.5'
info:
  label: Delivery Schedule Monitor and Alert
  description: Monitors SAP delivery schedules, creates Jira follow-up task, and alerts supply chain via Teams.
  tags:
  - logistics
  - sap
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: logistics
    port: 8080
    tools:
    - name: delivery-orchestrate
      description: Monitors SAP delivery schedules, creates Jira follow-up task, and alerts supply chain via Teams.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: sap.get-po
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: jira.create-issue
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: msteams.send-message
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://mercedes-benz-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: purchase-orders
      path: /A_PurchaseOrder('{{{{po_number}}}}')
      operations:
      - name: get-po
        method: GET
  - type: http
    namespace: jira
    baseUri: https://mercedes-benz.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_password
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/mercedes-benz/channels/general/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → delivery-schedule-monitor-and-alert.yml

Retrieves the current month cost summary for an Azure resource group.

naftiko: '0.5'
info:
  label: Azure Resource Group Cost Lookup
  description: Retrieves the current month cost summary for an Azure resource group.
  tags:
  - cloud
  - azure
  - cost-management
capability:
  exposes:
  - type: mcp
    namespace: cloud-finops
    port: 8080
    tools:
    - name: get-resource-group-cost
      description: Retrieves the current month cost summary for an Azure resource group.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary lookup parameter.
      call: azure.get-cost-summary
      with:
        param_1: '{{param_1}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.result
  consumes:
  - type: http
    namespace: azure
    baseUri: https://management.azure.com
    authentication:
      type: bearer
      token: $secrets.azure_token
    resources:
    - name: get-cost-summary
      path: /subscriptions/{{{{subscription_id}}}}/resourceGroups/{{{{resource_group}}}}/providers/Microsoft.CostManagement/query
      operations:
      - name: get-cost-summary
        method: POST
Open in Framework → View in Fleet → azure-resource-group-cost-lookup.yml

Retrieves an Azure AD user profile by UPN.

naftiko: '0.5'
info:
  label: Azure AD User Lookup
  description: Retrieves an Azure AD user profile by UPN.
  tags:
  - identity
  - azure
  - microsoft-graph
capability:
  exposes:
  - type: mcp
    namespace: identity
    port: 8080
    tools:
    - name: get-azure-ad-user
      description: Retrieves an Azure AD user profile by UPN.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary lookup parameter.
      call: msgraph.get-user
      with:
        param_1: '{{param_1}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.result
  consumes:
  - type: http
    namespace: msgraph
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: get-user
      path: /users/{{{{upn}}}}
      operations:
      - name: get-user
        method: GET
Open in Framework → View in Fleet → azure-ad-user-lookup.yml

Retrieves GitHub Dependabot alerts, creates Jira tasks, and notifies security via Teams.

naftiko: '0.5'
info:
  label: Dependabot to Jira Task Bridge
  description: Retrieves GitHub Dependabot alerts, creates Jira tasks, and notifies security via Teams.
  tags:
  - devops
  - github
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: devops
    port: 8080
    tools:
    - name: dependabot-orchestrate
      description: Retrieves GitHub Dependabot alerts, creates Jira tasks, and notifies security via Teams.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: github.get-branch-protection
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: jira.create-issue
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: msteams.send-message
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: repos
      path: /repos/{{{{repo}}}}/branches/main/protection
      operations:
      - name: get-branch-protection
        method: GET
  - type: http
    namespace: jira
    baseUri: https://mercedes-benz.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_password
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/mercedes-benz/channels/general/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → dependabot-to-jira-task-bridge.yml

Escalates recurring ServiceNow incidents to problems, correlates Splunk events, and creates Jira tasks.

naftiko: '0.5'
info:
  label: Incident to Problem Escalation Workflow
  description: Escalates recurring ServiceNow incidents to problems, correlates Splunk events, and creates Jira tasks.
  tags:
  - itsm
  - servicenow
  - splunk
  - jira
capability:
  exposes:
  - type: mcp
    namespace: itsm
    port: 8080
    tools:
    - name: incident-orchestrate
      description: Escalates recurring ServiceNow incidents to problems, correlates Splunk events, and creates Jira tasks.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: servicenow.create-incident
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: splunk.run-search
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: jira.create-issue
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: splunk
    baseUri: https://splunk.mercedes-benz.com:8089/services
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - name: search
      path: /search/jobs
      operations:
      - name: run-search
        method: POST
  - type: http
    namespace: jira
    baseUri: https://mercedes-benz.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_password
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → incident-to-problem-escalation-workflow.yml

Retrieves SAP purchase requisition, identifies Workday approver, and sends Teams approval request.

naftiko: '0.5'
info:
  label: Purchase Requisition Approval Routing
  description: Retrieves SAP purchase requisition, identifies Workday approver, and sends Teams approval request.
  tags:
  - procurement
  - sap
  - workday
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: procurement
    port: 8080
    tools:
    - name: purchase-orchestrate
      description: Retrieves SAP purchase requisition, identifies Workday approver, and sends Teams approval request.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: sap.get-po
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: workday.get-worker
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: msteams.send-message
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://mercedes-benz-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: purchase-orders
      path: /A_PurchaseOrder('{{{{po_number}}}}')
      operations:
      - name: get-po
        method: GET
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /mercedes-benz/workers/{{worker_id}}
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/mercedes-benz/channels/general/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → purchase-requisition-approval-routing.yml

When a Datadog infrastructure monitor triggers, creates a ServiceNow incident and pages the on-call engineer via PagerDuty.

naftiko: '0.5'
info:
  label: Datadog Infrastructure Alert Handler
  description: When a Datadog infrastructure monitor triggers, creates a ServiceNow incident and pages the on-call engineer via PagerDuty.
  tags:
  - observability
  - infrastructure
  - datadog
  - servicenow
  - pagerduty
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: infra-monitoring
    port: 8080
    tools:
    - name: handle-infrastructure-alert
      description: Given a Datadog monitor alert with host, metric, and threshold details, open a ServiceNow incident and trigger a PagerDuty escalation to the on-call engineer.
      inputParameters:
      - name: monitor_name
        in: body
        type: string
        description: The Datadog monitor name that fired.
      - name: host
        in: body
        type: string
        description: The affected host or service name.
      - name: metric_value
        in: body
        type: number
        description: The current metric value that breached the threshold.
      - name: alert_url
        in: body
        type: string
        description: URL to the Datadog monitor alert for context.
      steps:
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Infrastructure alert: {{monitor_name}} on {{host}}'
          urgency: '1'
          category: infrastructure
      - name: page-oncall
        type: call
        call: pagerduty.create-incident
        with:
          title: 'Infra Alert: {{monitor_name}} on {{host}}'
          severity: critical
          body: 'Metric value {{metric_value}}. Datadog: {{alert_url}}. SNOW: {{create-incident.number}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incident
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.pagerduty_token
      placement: header
    resources:
    - name: incidents
      path: /incidents
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → datadog-infrastructure-alert-handler.yml

Pulls Snowflake headcount, refreshes Power BI dashboard, and notifies leadership via Teams.

naftiko: '0.5'
info:
  label: Headcount Forecast Report Generator
  description: Pulls Snowflake headcount, refreshes Power BI dashboard, and notifies leadership via Teams.
  tags:
  - hr
  - snowflake
  - power-bi
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr
    port: 8080
    tools:
    - name: headcount-orchestrate
      description: Pulls Snowflake headcount, refreshes Power BI dashboard, and notifies leadership via Teams.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: snowflake.run-query
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: powerbi.trigger-refresh
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: msteams.send-message
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://mercedes-benz.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: powerbi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: refreshes
      path: /datasets/{{{{dataset_id}}}}/refreshes
      operations:
      - name: trigger-refresh
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/mercedes-benz/channels/general/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → headcount-forecast-report-generator.yml

At the start of a financial period close, creates a set of Jira tasks for the finance team covering all required close activities in SAP S/4HANA.

naftiko: '0.5'
info:
  label: SAP Finance Period Close Checklist
  description: At the start of a financial period close, creates a set of Jira tasks for the finance team covering all required close activities in SAP S/4HANA.
  tags:
  - finance
  - period-close
  - sap-s4hana
  - jira
  - erp
capability:
  exposes:
  - type: mcp
    namespace: finance-close
    port: 8080
    tools:
    - name: initiate-period-close
      description: Given a fiscal period and year, create a structured set of Jira tasks for the Mercedes-Benz finance team covering all SAP S/4HANA period close activities including journal entries, reconciliations, and reporting.
      inputParameters:
      - name: fiscal_period
        in: body
        type: string
        description: The fiscal period number (01-12) to close.
      - name: fiscal_year
        in: body
        type: string
        description: The fiscal year to close (e.g., 2026).
      steps:
      - name: get-close-status
        type: call
        call: sap-s4.get-period-close-status
        with:
          fiscal_period: '{{fiscal_period}}'
          fiscal_year: '{{fiscal_year}}'
      - name: create-close-epic
        type: call
        call: jira.create-issue
        with:
          project_key: FIN
          issuetype: Epic
          summary: Period Close {{fiscal_period}}/{{fiscal_year}} - {{get-close-status.company_code}}
          description: Period close activities for fiscal period {{fiscal_period}}, year {{fiscal_year}}
  consumes:
  - type: http
    namespace: sap-s4
    baseUri: https://mercedes-benz-s4.sap.com/sap/opu/odata/sap/FI_PERIOD_CLOSE_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: period-close-status
      path: /PeriodCloseStatusSet
      operations:
      - name: get-period-close-status
        method: GET
  - type: http
    namespace: jira
    baseUri: https://mercedes-benz.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
Open in Framework → View in Fleet → sap-finance-period-close-checklist.yml

Runs GitHub security scan on PR, checks CrowdStrike for indicators, and posts review summary.

naftiko: '0.5'
info:
  label: GitHub PR Security Review Orchestrator
  description: Runs GitHub security scan on PR, checks CrowdStrike for indicators, and posts review summary.
  tags:
  - devops
  - github
  - crowdstrike
capability:
  exposes:
  - type: mcp
    namespace: devops
    port: 8080
    tools:
    - name: github-orchestrate
      description: Runs GitHub security scan on PR, checks CrowdStrike for indicators, and posts review summary.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: github.get-branch-protection
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: crowdstrike.get-device
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: repos
      path: /repos/{{{{repo}}}}/branches/main/protection
      operations:
      - name: get-branch-protection
        method: GET
  - type: http
    namespace: crowdstrike
    baseUri: https://api.crowdstrike.com
    authentication:
      type: bearer
      token: $secrets.crowdstrike_token
    resources:
    - name: devices
      path: /devices/entities/devices/v2
      operations:
      - name: get-device
        method: GET
Open in Framework → View in Fleet → github-pr-security-review-orchestrator.yml

Launches Okta certification, queries Snowflake for hierarchies, and creates Jira tracking task.

naftiko: '0.5'
info:
  label: Access Certification Campaign Orchestrator
  description: Launches Okta certification, queries Snowflake for hierarchies, and creates Jira tracking task.
  tags:
  - security
  - okta
  - snowflake
  - jira
capability:
  exposes:
  - type: mcp
    namespace: security
    port: 8080
    tools:
    - name: access-orchestrate
      description: Launches Okta certification, queries Snowflake for hierarchies, and creates Jira tracking task.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: okta.get-user-groups
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: snowflake.run-query
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: jira.create-issue
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: okta
    baseUri: https://mercedes-benz.okta.com/api/v1
    authentication:
      type: bearer
      token: $secrets.okta_token
    resources:
    - name: user-groups
      path: /users/{{{{user_id}}}}/groups
      operations:
      - name: get-user-groups
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://mercedes-benz.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
    baseUri: https://mercedes-benz.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_password
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
Open in Framework → View in Fleet → access-certification-campaign-orchestrator.yml

Provisions contractor with Azure AD guest account, Okta groups, and ServiceNow tracking ticket.

naftiko: '0.5'
info:
  label: Contractor Access Provisioning Workflow
  description: Provisions contractor with Azure AD guest account, Okta groups, and ServiceNow tracking ticket.
  tags:
  - security
  - azure
  - okta
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: security
    port: 8080
    tools:
    - name: contractor-orchestrate
      description: Provisions contractor with Azure AD guest account, Okta groups, and ServiceNow tracking ticket.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: azure.get-resources
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: okta.get-user-groups
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: servicenow.create-incident
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: azure
    baseUri: https://management.azure.com
    authentication:
      type: bearer
      token: $secrets.azure_token
    resources:
    - name: resources
      path: /subscriptions
      operations:
      - name: get-resources
        method: GET
  - type: http
    namespace: okta
    baseUri: https://mercedes-benz.okta.com/api/v1
    authentication:
      type: bearer
      token: $secrets.okta_token
    resources:
    - name: user-groups
      path: /users/{{{{user_id}}}}/groups
      operations:
      - name: get-user-groups
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → contractor-access-provisioning-workflow.yml

Queries Jira for ungroomed backlog, generates Confluence summary, and notifies team via Teams.

naftiko: '0.5'
info:
  label: Backlog Grooming Summary Generator
  description: Queries Jira for ungroomed backlog, generates Confluence summary, and notifies team via Teams.
  tags:
  - devops
  - jira
  - confluence
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: devops
    port: 8080
    tools:
    - name: backlog-orchestrate
      description: Queries Jira for ungroomed backlog, generates Confluence summary, and notifies team via Teams.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: jira.create-issue
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: confluence.create-page
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: msteams.send-message
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://mercedes-benz.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_password
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: confluence
    baseUri: https://mercedes-benz.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_password
    resources:
    - name: pages
      path: /content
      operations:
      - name: create-page
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/mercedes-benz/channels/general/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → backlog-grooming-summary-generator.yml

Looks up a ServiceNow incident by number and returns state, priority, and assignment group.

naftiko: '0.5'
info:
  label: ServiceNow Incident Status Lookup
  description: Looks up a ServiceNow incident by number and returns state, priority, and assignment group.
  tags:
  - itsm
  - servicenow
  - incident
capability:
  exposes:
  - type: mcp
    namespace: itsm
    port: 8080
    tools:
    - name: get-incident-status
      description: Looks up a ServiceNow incident by number and returns state, priority, and assignment group.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary lookup parameter.
      call: servicenow.get-incident
      with:
        param_1: '{{param_1}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.result
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: get-incident
      path: /table/incident?sysparm_query=number={{{{number}}}}
      operations:
      - name: get-incident
        method: GET
Open in Framework → View in Fleet → servicenow-incident-status-lookup.yml

Retrieves Ariba supplier profile, Snowflake performance data, and creates ServiceNow risk record.

naftiko: '0.5'
info:
  label: Supplier Risk Assessment Orchestrator
  description: Retrieves Ariba supplier profile, Snowflake performance data, and creates ServiceNow risk record.
  tags:
  - procurement
  - sap-ariba
  - snowflake
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: procurement
    port: 8080
    tools:
    - name: supplier-orchestrate
      description: Retrieves Ariba supplier profile, Snowflake performance data, and creates ServiceNow risk record.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: ariba.get-vendor
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: snowflake.run-query
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: servicenow.create-incident
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: ariba
    baseUri: https://openapi.ariba.com/api/procurement/v2
    authentication:
      type: bearer
      token: $secrets.ariba_token
    resources:
    - name: vendors
      path: /vendors/{{{{vendor_id}}}}
      operations:
      - name: get-vendor
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://mercedes-benz.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: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → supplier-risk-assessment-orchestrator.yml

Detects Power BI refresh failure, creates Jira ticket, and sends Teams notification.

naftiko: '0.5'
info:
  label: BI Refresh Failure Escalation
  description: Detects Power BI refresh failure, creates Jira ticket, and sends Teams notification.
  tags:
  - analytics
  - power-bi
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: analytics
    port: 8080
    tools:
    - name: bi-orchestrate
      description: Detects Power BI refresh failure, creates Jira ticket, and sends Teams notification.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: powerbi.trigger-refresh
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: jira.create-issue
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: msteams.send-message
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: refreshes
      path: /datasets/{{{{dataset_id}}}}/refreshes
      operations:
      - name: trigger-refresh
        method: POST
  - type: http
    namespace: jira
    baseUri: https://mercedes-benz.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_password
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/mercedes-benz/channels/general/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → bi-refresh-failure-escalation.yml

Retrieves pending expense reports from SAP Concur, validates against policy, and routes for manager approval or auto-approves within threshold.

naftiko: '0.5'
info:
  label: Concur Expense Report Approval
  description: Retrieves pending expense reports from SAP Concur, validates against policy, and routes for manager approval or auto-approves within threshold.
  tags:
  - finance
  - expense-management
  - sap-concur
  - approval
capability:
  exposes:
  - type: mcp
    namespace: expense-ops
    port: 8080
    tools:
    - name: process-expense-report
      description: Given an SAP Concur expense report ID, retrieve details, validate against Mercedes-Benz expense policy, and either auto-approve if within threshold or escalate for manager review.
      inputParameters:
      - name: report_id
        in: body
        type: string
        description: The SAP Concur expense report ID to process.
      - name: approval_threshold
        in: body
        type: number
        description: The auto-approval threshold in EUR. Reports above this amount require manual review.
      steps:
      - name: get-report
        type: call
        call: concur.get-expense-report
        with:
          report_id: '{{report_id}}'
      - name: approve-report
        type: call
        call: concur.approve-expense-report
        with:
          report_id: '{{report_id}}'
          comment: Auto-approved within policy threshold
  consumes:
  - type: http
    namespace: concur
    baseUri: https://www.concursolutions.com/api/v3.0
    authentication:
      type: bearer
      token: $secrets.concur_token
    resources:
    - name: expense-reports
      path: /expense/reports/{{report_id}}
      inputParameters:
      - name: report_id
        in: path
      operations:
      - name: get-expense-report
        method: GET
      - name: approve-expense-report
        method: PATCH
Open in Framework → View in Fleet → concur-expense-report-approval.yml

Retrieves Concur travel request, validates SAP budget, and sends Teams approval request.

naftiko: '0.5'
info:
  label: Travel Request Approval Orchestrator
  description: Retrieves Concur travel request, validates SAP budget, and sends Teams approval request.
  tags:
  - travel
  - sap-concur
  - sap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: travel
    port: 8080
    tools:
    - name: travel-orchestrate
      description: Retrieves Concur travel request, validates SAP budget, and sends Teams approval request.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: concur.get-travel-request
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: sap.get-po
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: msteams.send-message
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: concur
    baseUri: https://us.api.concursolutions.com/api/v3.0
    authentication:
      type: bearer
      token: $secrets.concur_token
    resources:
    - name: travel-requests
      path: /travelrequest/requests/{{{{request_id}}}}
      operations:
      - name: get-travel-request
        method: GET
  - type: http
    namespace: sap
    baseUri: https://mercedes-benz-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: purchase-orders
      path: /A_PurchaseOrder('{{{{po_number}}}}')
      operations:
      - name: get-po
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/mercedes-benz/channels/general/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → travel-request-approval-orchestrator.yml

Creates ServiceNow change for patching, triggers Terraform deployment, and validates with Datadog.

naftiko: '0.5'
info:
  label: Vulnerability Patch Deployment Orchestrator
  description: Creates ServiceNow change for patching, triggers Terraform deployment, and validates with Datadog.
  tags:
  - security
  - servicenow
  - terraform
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: security
    port: 8080
    tools:
    - name: vulnerability-orchestrate
      description: Creates ServiceNow change for patching, triggers Terraform deployment, and validates with Datadog.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: servicenow.create-incident
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: terraform.get-workspace
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: datadog.get-monitor
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: terraform
    baseUri: https://app.terraform.io/api/v2
    authentication:
      type: bearer
      token: $secrets.terraform_token
    resources:
    - name: workspaces
      path: /organizations/mercedes-benz/workspaces
      operations:
      - name: get-workspace
        method: GET
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apiKey
      header: DD-API-KEY
      key: $secrets.datadog_api_key
    resources:
    - name: monitors
      path: /monitor/{{{{monitor_id}}}}
      operations:
      - name: get-monitor
        method: GET
Open in Framework → View in Fleet → vulnerability-patch-deployment-orchestrator.yml

Detects expiring Azure Key Vault secrets, rotates them, updates Terraform, and creates ServiceNow change.

naftiko: '0.5'
info:
  label: Secret Rotation Orchestrator
  description: Detects expiring Azure Key Vault secrets, rotates them, updates Terraform, and creates ServiceNow change.
  tags:
  - security
  - azure
  - terraform
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: security
    port: 8080
    tools:
    - name: secret-orchestrate
      description: Detects expiring Azure Key Vault secrets, rotates them, updates Terraform, and creates ServiceNow change.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: azure.get-resources
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: terraform.get-workspace
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: servicenow.create-incident
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: azure
    baseUri: https://management.azure.com
    authentication:
      type: bearer
      token: $secrets.azure_token
    resources:
    - name: resources
      path: /subscriptions
      operations:
      - name: get-resources
        method: GET
  - type: http
    namespace: terraform
    baseUri: https://app.terraform.io/api/v2
    authentication:
      type: bearer
      token: $secrets.terraform_token
    resources:
    - name: workspaces
      path: /organizations/mercedes-benz/workspaces
      operations:
      - name: get-workspace
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → secret-rotation-orchestrator.yml

Accepts a SharePoint-stored technical specification document and uses OpenAI to generate an executive summary, then stores the summary back in SharePoint.

naftiko: '0.5'
info:
  label: AI-Assisted Technical Document Summarization
  description: Accepts a SharePoint-stored technical specification document and uses OpenAI to generate an executive summary, then stores the summary back in SharePoint.
  tags:
  - ai
  - automation
  - openai
  - sharepoint
  - document-management
capability:
  exposes:
  - type: mcp
    namespace: ai-docs
    port: 8080
    tools:
    - name: summarize-technical-document
      description: Given a SharePoint document site ID and file path, retrieve the technical specification document, generate an executive summary using OpenAI, and store the summary as a new document in SharePoint.
      inputParameters:
      - name: site_id
        in: body
        type: string
        description: The SharePoint site ID where the document is stored.
      - name: document_path
        in: body
        type: string
        description: The SharePoint document library path to the technical specification file.
      steps:
      - name: get-document
        type: call
        call: sharepoint.get-document-content
        with:
          site_id: '{{site_id}}'
          document_path: '{{document_path}}'
      - name: generate-summary
        type: call
        call: openai.create-completion
        with:
          model: gpt-4o
          prompt: 'Summarize the following technical specification for a non-technical executive audience in 3-5 bullet points: {{get-document.content}}'
      - name: store-summary
        type: call
        call: sharepoint.create-document
        with:
          site_id: '{{site_id}}'
          document_path: '{{document_path}}_summary.txt'
          content: '{{generate-summary.choices[0].message.content}}'
  consumes:
  - type: http
    namespace: sharepoint
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: document-content
      path: /sites/{{site_id}}/drive/root:{{document_path}}:/content
      inputParameters:
      - name: site_id
        in: path
      - name: document_path
        in: path
      operations:
      - name: get-document-content
        method: GET
    - name: documents
      path: /sites/{{site_id}}/drive/root:{{document_path}}:/content
      inputParameters:
      - name: site_id
        in: path
      - name: document_path
        in: path
      operations:
      - name: create-document
        method: PUT
  - type: http
    namespace: openai
    baseUri: https://api.openai.com/v1
    authentication:
      type: bearer
      token: $secrets.openai_api_key
    resources:
    - name: completions
      path: /chat/completions
      operations:
      - name: create-completion
        method: POST
Open in Framework → View in Fleet → ai-assisted-technical-document-summarization.yml

Submits firewall policy change, creates ServiceNow change, and notifies security via Teams.

naftiko: '0.5'
info:
  label: Firewall Policy Change Approval
  description: Submits firewall policy change, creates ServiceNow change, and notifies security via Teams.
  tags:
  - security
  - palo-alto-networks
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: security
    port: 8080
    tools:
    - name: firewall-orchestrate
      description: Submits firewall policy change, creates ServiceNow change, and notifies security via Teams.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: paloalto.get-security-rule
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: servicenow.create-incident
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: msteams.send-message
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: paloalto
    baseUri: https://panorama.mercedes-benz.com/restapi/v10.2
    authentication:
      type: bearer
      token: $secrets.paloalto_token
    resources:
    - name: security-rules
      path: /Policies/SecurityRules
      operations:
      - name: get-security-rule
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/mercedes-benz/channels/general/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → firewall-policy-change-approval.yml

Compares Azure AD licenses against Snowflake headcount and creates ServiceNow optimization task.

naftiko: '0.5'
info:
  label: License Reconciliation Workflow
  description: Compares Azure AD licenses against Snowflake headcount and creates ServiceNow optimization task.
  tags:
  - identity
  - azure
  - snowflake
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: identity
    port: 8080
    tools:
    - name: license-orchestrate
      description: Compares Azure AD licenses against Snowflake headcount and creates ServiceNow optimization task.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: azure.get-resources
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: snowflake.run-query
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: servicenow.create-incident
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: azure
    baseUri: https://management.azure.com
    authentication:
      type: bearer
      token: $secrets.azure_token
    resources:
    - name: resources
      path: /subscriptions
      operations:
      - name: get-resources
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://mercedes-benz.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: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → license-reconciliation-workflow.yml

Compares invoice against SAP purchase order and goods receipt, then logs in ServiceNow.

naftiko: '0.5'
info:
  label: Invoice Three-Way Match Orchestrator
  description: Compares invoice against SAP purchase order and goods receipt, then logs in ServiceNow.
  tags:
  - finance
  - sap
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: invoice-orchestrate
      description: Compares invoice against SAP purchase order and goods receipt, then logs in ServiceNow.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: sap.get-po
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: servicenow.create-incident
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://mercedes-benz-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: purchase-orders
      path: /A_PurchaseOrder('{{{{po_number}}}}')
      operations:
      - name: get-po
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → invoice-three-way-match-orchestrator.yml

Pulls Azure cost data, compares Snowflake forecasts, creates Jira ticket, and notifies via Teams.

naftiko: '0.5'
info:
  label: Cloud Cost Review Orchestrator
  description: Pulls Azure cost data, compares Snowflake forecasts, creates Jira ticket, and notifies via Teams.
  tags:
  - finops
  - azure
  - snowflake
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finops
    port: 8080
    tools:
    - name: cloud-orchestrate
      description: Pulls Azure cost data, compares Snowflake forecasts, creates Jira ticket, and notifies via Teams.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: azure.get-resources
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: snowflake.run-query
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: jira.create-issue
        with:
          input: '{{step-1.result}}'
      - name: step-4
        type: call
        call: msteams.send-message
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: azure
    baseUri: https://management.azure.com
    authentication:
      type: bearer
      token: $secrets.azure_token
    resources:
    - name: resources
      path: /subscriptions
      operations:
      - name: get-resources
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://mercedes-benz.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
    baseUri: https://mercedes-benz.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_password
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/mercedes-benz/channels/general/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → cloud-cost-review-orchestrator.yml

Queries SAP Ariba for contracts expiring within 90 days and creates Jira tasks for the procurement team to initiate renewal negotiations.

naftiko: '0.5'
info:
  label: SAP Ariba Contract Renewal Alert
  description: Queries SAP Ariba for contracts expiring within 90 days and creates Jira tasks for the procurement team to initiate renewal negotiations.
  tags:
  - procurement
  - sap-ariba
  - jira
  - contract-management
capability:
  exposes:
  - type: mcp
    namespace: procurement-ops
    port: 8080
    tools:
    - name: alert-expiring-contracts
      description: Query SAP Ariba for supplier contracts expiring within a configurable number of days and create Jira tasks for the procurement team to begin renewal negotiations.
      inputParameters:
      - name: days_ahead
        in: body
        type: integer
        description: Number of days ahead to check for expiring contracts (e.g., 90).
      steps:
      - name: get-expiring
        type: call
        call: sap-ariba.list-expiring-contracts
        with:
          days_ahead: '{{days_ahead}}'
      - name: create-renewal-task
        type: call
        call: jira.create-issue
        with:
          project_key: PROC
          issuetype: Task
          summary: Contract renewals due within {{days_ahead}} days - {{get-expiring.contract_count}} contracts
          description: '{{get-expiring.contract_list}}'
  consumes:
  - type: http
    namespace: sap-ariba
    baseUri: https://openapi.ariba.com/api/contract/v1
    authentication:
      type: apikey
      key: apiKey
      value: $secrets.ariba_api_key
      placement: header
    resources:
    - name: contracts
      path: /contracts
      operations:
      - name: list-expiring-contracts
        method: GET
  - type: http
    namespace: jira
    baseUri: https://mercedes-benz.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
Open in Framework → View in Fleet → sap-ariba-contract-renewal-alert.yml

Responds to Splunk alert by isolating CrowdStrike endpoint and creating ServiceNow incident.

naftiko: '0.5'
info:
  label: SIEM Alert to Endpoint Isolation
  description: Responds to Splunk alert by isolating CrowdStrike endpoint and creating ServiceNow incident.
  tags:
  - security
  - splunk
  - crowdstrike
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: security
    port: 8080
    tools:
    - name: siem-orchestrate
      description: Responds to Splunk alert by isolating CrowdStrike endpoint and creating ServiceNow incident.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: splunk.run-search
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: crowdstrike.get-device
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: servicenow.create-incident
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: splunk
    baseUri: https://splunk.mercedes-benz.com:8089/services
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - name: search
      path: /search/jobs
      operations:
      - name: run-search
        method: POST
  - type: http
    namespace: crowdstrike
    baseUri: https://api.crowdstrike.com
    authentication:
      type: bearer
      token: $secrets.crowdstrike_token
    resources:
    - name: devices
      path: /devices/entities/devices/v2
      operations:
      - name: get-device
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → siem-alert-to-endpoint-isolation.yml

Retrieves a goods receipt document from SAP by material document number.

naftiko: '0.5'
info:
  label: SAP Goods Receipt Lookup
  description: Retrieves a goods receipt document from SAP by material document number.
  tags:
  - logistics
  - sap
  - warehouse
capability:
  exposes:
  - type: mcp
    namespace: erp-logistics
    port: 8080
    tools:
    - name: get-goods-receipt
      description: Retrieves a goods receipt document from SAP by material document number.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary lookup parameter.
      call: sap.get-goods-receipt
      with:
        param_1: '{{param_1}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.result
  consumes:
  - type: http
    namespace: sap
    baseUri: https://mercedes-benz-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_DOCUMENT_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: get-goods-receipt
      path: /A_MaterialDocumentHeader('{{{{doc_number}}}}')
      operations:
      - name: get-goods-receipt
        method: GET
Open in Framework → View in Fleet → sap-goods-receipt-lookup.yml

Retrieves current status of a Terraform Cloud workspace.

naftiko: '0.5'
info:
  label: Terraform Workspace Status Lookup
  description: Retrieves current status of a Terraform Cloud workspace.
  tags:
  - devops
  - terraform
  - infrastructure
capability:
  exposes:
  - type: mcp
    namespace: infrastructure
    port: 8080
    tools:
    - name: get-workspace-status
      description: Retrieves current status of a Terraform Cloud workspace.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary lookup parameter.
      call: terraform.get-workspace
      with:
        param_1: '{{param_1}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.result
  consumes:
  - type: http
    namespace: terraform
    baseUri: https://app.terraform.io/api/v2
    authentication:
      type: bearer
      token: $secrets.terraform_token
    resources:
    - name: get-workspace
      path: /organizations/mercedes-benz/workspaces/{{{{workspace}}}}
      operations:
      - name: get-workspace
        method: GET
Open in Framework → View in Fleet → terraform-workspace-status-lookup.yml

Creates SAP quality inspection from goods receipt, logs in ServiceNow, and notifies QA via Teams.

naftiko: '0.5'
info:
  label: Goods Receipt to Quality Inspection
  description: Creates SAP quality inspection from goods receipt, logs in ServiceNow, and notifies QA via Teams.
  tags:
  - logistics
  - sap
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: logistics
    port: 8080
    tools:
    - name: goods-orchestrate
      description: Creates SAP quality inspection from goods receipt, logs in ServiceNow, and notifies QA via Teams.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: sap.get-po
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: servicenow.create-incident
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: msteams.send-message
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://mercedes-benz-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: purchase-orders
      path: /A_PurchaseOrder('{{{{po_number}}}}')
      operations:
      - name: get-po
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/mercedes-benz/channels/general/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → goods-receipt-to-quality-inspection.yml

Queries CrowdStrike Falcon for endpoint details by device ID.

naftiko: '0.5'
info:
  label: CrowdStrike Endpoint Status Lookup
  description: Queries CrowdStrike Falcon for endpoint details by device ID.
  tags:
  - security
  - crowdstrike
  - endpoint
capability:
  exposes:
  - type: mcp
    namespace: security
    port: 8080
    tools:
    - name: get-endpoint-status
      description: Queries CrowdStrike Falcon for endpoint details by device ID.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary lookup parameter.
      call: crowdstrike.get-device
      with:
        param_1: '{{param_1}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.result
  consumes:
  - type: http
    namespace: crowdstrike
    baseUri: https://api.crowdstrike.com
    authentication:
      type: bearer
      token: $secrets.crowdstrike_token
    resources:
    - name: get-device
      path: /devices/entities/devices/v2?ids={{{{device_id}}}}
      operations:
      - name: get-device
        method: GET
Open in Framework → View in Fleet → crowdstrike-endpoint-status-lookup.yml

Processes compensation change with Workday data, SAP budget check, and Teams approval notification.

naftiko: '0.5'
info:
  label: Compensation Change Approval Workflow
  description: Processes compensation change with Workday data, SAP budget check, and Teams approval notification.
  tags:
  - hr
  - workday
  - sap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr
    port: 8080
    tools:
    - name: compensation-orchestrate
      description: Processes compensation change with Workday data, SAP budget check, and Teams approval notification.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: workday.get-worker
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: sap.get-po
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: msteams.send-message
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /mercedes-benz/workers/{{worker_id}}
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: sap
    baseUri: https://mercedes-benz-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: purchase-orders
      path: /A_PurchaseOrder('{{{{po_number}}}}')
      operations:
      - name: get-po
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/mercedes-benz/channels/general/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → compensation-change-approval-workflow.yml

Queries Snowflake for failed data pipeline tasks, creates Jira issues for each failure, and posts a summary report to Microsoft Teams.

naftiko: '0.5'
info:
  label: Snowflake Data Pipeline Health Check
  description: Queries Snowflake for failed data pipeline tasks, creates Jira issues for each failure, and posts a summary report to Microsoft Teams.
  tags:
  - data
  - analytics
  - snowflake
  - jira
  - microsoft-teams
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: data-ops
    port: 8080
    tools:
    - name: check-pipeline-health
      description: Query Snowflake for failed pipeline tasks in the last 24 hours, create Jira issues for each critical failure, and post a summary to the data engineering Microsoft Teams channel.
      inputParameters:
      - name: warehouse
        in: body
        type: string
        description: The Snowflake warehouse name to check for task failures.
      - name: lookback_hours
        in: body
        type: integer
        description: Number of hours to look back for failed tasks (default 24).
      steps:
      - name: get-failures
        type: call
        call: snowflake.query-task-failures
        with:
          warehouse: '{{warehouse}}'
          lookback_hours: '{{lookback_hours}}'
      - name: create-issue
        type: call
        call: jira.create-issue
        with:
          project_key: DATA
          issuetype: Bug
          summary: Snowflake pipeline failures detected in {{warehouse}}
          description: '{{get-failures.failure_count}} tasks failed in the last {{lookback_hours}} hours. Details: {{get-failures.failure_summary}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: data-engineering
          message: 'Pipeline Health Alert: {{get-failures.failure_count}} Snowflake task failures detected in {{warehouse}}. Jira: {{create-issue.key}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://mercedes-benz.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: query-task-failures
        method: POST
  - type: http
    namespace: jira
    baseUri: https://mercedes-benz.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → snowflake-data-pipeline-health-check.yml

When a production line downtime event is logged, creates a high-priority ServiceNow incident, pages the maintenance team via PagerDuty, and posts an alert to the plant operations Teams channel.

naftiko: '0.5'
info:
  label: Production Line Downtime Notification
  description: When a production line downtime event is logged, creates a high-priority ServiceNow incident, pages the maintenance team via PagerDuty, and posts an alert to the plant operations Teams channel.
  tags:
  - manufacturing
  - operations
  - servicenow
  - pagerduty
  - microsoft-teams
  - downtime
capability:
  exposes:
  - type: mcp
    namespace: plant-ops
    port: 8080
    tools:
    - name: handle-line-downtime
      description: Given a production line downtime event with plant ID, line number, and cause, create a critical ServiceNow incident, page the maintenance team via PagerDuty, and alert the plant operations Teams channel.
      inputParameters:
      - name: plant_id
        in: body
        type: string
        description: The plant identifier where the downtime occurred (e.g., SIN for Sindelfingen).
      - name: line_number
        in: body
        type: string
        description: The production line number that is down.
      - name: downtime_cause
        in: body
        type: string
        description: Brief description of the cause of the production line downtime.
      steps:
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Production line down: Plant {{plant_id}} Line {{line_number}}'
          urgency: '1'
          category: manufacturing
          description: 'Cause: {{downtime_cause}}'
      - name: page-maintenance
        type: call
        call: pagerduty.create-incident
        with:
          title: 'LINE DOWN: Plant {{plant_id}} Line {{line_number}}'
          severity: critical
          body: '{{downtime_cause}}. SNOW: {{create-incident.number}}'
      - name: notify-plant
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: plant-operations
          message: 'PRODUCTION ALERT: Line {{line_number}} at Plant {{plant_id}} is DOWN. Cause: {{downtime_cause}} | Incident: {{create-incident.number}} | Maintenance paged.'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incident
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: pagerduty
    baseUri: https://api.pagerduty.com
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.pagerduty_token
      placement: header
    resources:
    - name: incidents
      path: /incidents
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → production-line-downtime-notification.yml

Responds to suspicious Okta login by checking CrowdStrike endpoint and creating ServiceNow incident.

naftiko: '0.5'
info:
  label: Suspicious Login Response Workflow
  description: Responds to suspicious Okta login by checking CrowdStrike endpoint and creating ServiceNow incident.
  tags:
  - security
  - okta
  - crowdstrike
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: security
    port: 8080
    tools:
    - name: suspicious-orchestrate
      description: Responds to suspicious Okta login by checking CrowdStrike endpoint and creating ServiceNow incident.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: okta.get-user-groups
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: crowdstrike.get-device
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: servicenow.create-incident
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: okta
    baseUri: https://mercedes-benz.okta.com/api/v1
    authentication:
      type: bearer
      token: $secrets.okta_token
    resources:
    - name: user-groups
      path: /users/{{{{user_id}}}}/groups
      operations:
      - name: get-user-groups
        method: GET
  - type: http
    namespace: crowdstrike
    baseUri: https://api.crowdstrike.com
    authentication:
      type: bearer
      token: $secrets.crowdstrike_token
    resources:
    - name: devices
      path: /devices/entities/devices/v2
      operations:
      - name: get-device
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → suspicious-login-response-workflow.yml

Retrieves P1 incident details, creates Teams bridge channel, and posts stakeholder updates.

naftiko: '0.5'
info:
  label: Major Incident Communication Orchestrator
  description: Retrieves P1 incident details, creates Teams bridge channel, and posts stakeholder updates.
  tags:
  - itsm
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: itsm
    port: 8080
    tools:
    - name: major-orchestrate
      description: Retrieves P1 incident details, creates Teams bridge channel, and posts stakeholder updates.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: servicenow.create-incident
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: msteams.send-message
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/mercedes-benz/channels/general/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → major-incident-communication-orchestrator.yml

When a quality defect is reported in the manufacturing system, creates a ServiceNow incident, notifies the quality engineering team via Microsoft Teams, and logs the defect in SAP S/4HANA.

naftiko: '0.5'
info:
  label: Vehicle Quality Defect Incident Response
  description: When a quality defect is reported in the manufacturing system, creates a ServiceNow incident, notifies the quality engineering team via Microsoft Teams, and logs the defect in SAP S/4HANA.
  tags:
  - manufacturing
  - quality
  - servicenow
  - sap-s4hana
  - microsoft-teams
  - incident-response
capability:
  exposes:
  - type: mcp
    namespace: quality-ops
    port: 8080
    tools:
    - name: handle-quality-defect
      description: Given a quality defect report with vehicle model, defect code, and production line, create a ServiceNow incident, log the defect in SAP S/4HANA, and alert the quality team in Microsoft Teams.
      inputParameters:
      - name: vehicle_model
        in: body
        type: string
        description: The vehicle model where the defect was found (e.g., C-Class, EQS).
      - name: defect_code
        in: body
        type: string
        description: The manufacturing defect code identifier.
      - name: production_line
        in: body
        type: string
        description: The production line number where the defect was detected.
      - name: severity
        in: body
        type: string
        description: 'Defect severity: critical, major, or minor.'
      steps:
      - name: create-incident
        type: call
        call: servicenow.create-incident
        with:
          short_description: Quality defect on {{vehicle_model}} - Code {{defect_code}}
          urgency: '{{severity}}'
          category: manufacturing_quality
      - name: log-defect
        type: call
        call: sap-s4.create-quality-notification
        with:
          vehicle_model: '{{vehicle_model}}'
          defect_code: '{{defect_code}}'
          production_line: '{{production_line}}'
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: quality-engineering
          message: 'Quality Alert: {{vehicle_model}} defect {{defect_code}} on line {{production_line}}. Incident: {{create-incident.number}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incident
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: sap-s4
    baseUri: https://mercedes-benz-s4.sap.com/sap/opu/odata/sap/QM_QMEL_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: quality-notifications
      path: /QualityNotificationSet
      operations:
      - name: create-quality-notification
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → vehicle-quality-defect-incident-response.yml

On a GitHub Actions pipeline failure on a protected branch, creates a Jira bug, posts an alert to Microsoft Teams, and logs a Datadog event marker.

naftiko: '0.5'
info:
  label: CI/CD Pipeline Failure Handler
  description: On a GitHub Actions pipeline failure on a protected branch, creates a Jira bug, posts an alert to Microsoft Teams, and logs a Datadog event marker.
  tags:
  - devops
  - cicd
  - github
  - jira
  - datadog
  - microsoft-teams
  - incident-response
capability:
  exposes:
  - type: mcp
    namespace: devops-ops
    port: 8080
    tools:
    - name: handle-pipeline-failure
      description: Given a GitHub Actions pipeline failure, create a Jira bug, log a Datadog deployment event, and post an alert to the engineering Microsoft Teams channel.
      inputParameters:
      - name: repository
        in: body
        type: string
        description: The GitHub repository name where the pipeline failed (e.g., mercedes-benz/eqs-platform).
      - name: workflow_name
        in: body
        type: string
        description: The GitHub Actions workflow name that failed.
      - name: branch
        in: body
        type: string
        description: The branch on which the pipeline failure occurred.
      - name: run_url
        in: body
        type: string
        description: The URL to the failed GitHub Actions run for linking.
      - name: commit_sha
        in: body
        type: string
        description: The commit SHA associated with the failed run.
      steps:
      - name: create-bug
        type: call
        call: jira.create-issue
        with:
          project_key: ENG
          issuetype: Bug
          summary: '[CI Failure] {{repository}} / {{branch}} - {{workflow_name}}'
          description: 'Workflow: {{workflow_name}}

            Branch: {{branch}}

            Commit: {{commit_sha}}

            Run: {{run_url}}'
      - name: log-event
        type: call
        call: datadog.create-event
        with:
          title: 'CI Failure: {{repository}}/{{branch}}'
          text: Workflow {{workflow_name}} failed at commit {{commit_sha}}
          alert_type: error
      - name: notify-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: engineering-alerts
          message: 'Pipeline Failure: {{repository}} | Branch: {{branch}} | Jira: {{create-bug.key}} | Run: {{run_url}}'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://mercedes-benz.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: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: events
      path: /events
      operations:
      - name: create-event
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → ci-cd-pipeline-failure-handler.yml

Receives a supplier invoice, looks up the matching PO in SAP S/4HANA, validates amounts, and routes the invoice for approval via SAP Ariba.

naftiko: '0.5'
info:
  label: Supplier Invoice Processing
  description: Receives a supplier invoice, looks up the matching PO in SAP S/4HANA, validates amounts, and routes the invoice for approval via SAP Ariba.
  tags:
  - finance
  - procurement
  - sap-s4hana
  - sap-ariba
  - invoice-processing
capability:
  exposes:
  - type: mcp
    namespace: invoice-ops
    port: 8080
    tools:
    - name: process-supplier-invoice
      description: Given a supplier invoice number and amount, retrieve the linked PO from SAP S/4HANA, validate the amount, and submit the invoice for approval in SAP Ariba.
      inputParameters:
      - name: invoice_number
        in: body
        type: string
        description: The supplier invoice number to process.
      - name: po_number
        in: body
        type: string
        description: The SAP PO number associated with this invoice.
      - name: invoice_amount
        in: body
        type: number
        description: The total invoice amount in the invoice currency.
      steps:
      - name: get-po
        type: call
        call: sap-s4.get-po
        with:
          po_number: '{{po_number}}'
      - name: submit-invoice
        type: call
        call: sap-ariba.create-invoice
        with:
          invoice_number: '{{invoice_number}}'
          po_number: '{{po_number}}'
          amount: '{{invoice_amount}}'
          vendor_id: '{{get-po.supplier_id}}'
  consumes:
  - type: http
    namespace: sap-s4
    baseUri: https://mercedes-benz-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: purchase-orders
      path: /A_PurchaseOrder('{{po_number}}')
      inputParameters:
      - name: po_number
        in: path
      operations:
      - name: get-po
        method: GET
        outputRawFormat: xml
  - type: http
    namespace: sap-ariba
    baseUri: https://openapi.ariba.com/api/invoice/v1
    authentication:
      type: apikey
      key: apiKey
      value: $secrets.ariba_api_key
      placement: header
    resources:
    - name: invoices
      path: /invoices
      operations:
      - name: create-invoice
        method: POST
Open in Framework → View in Fleet → supplier-invoice-processing.yml

Enriches a new Salesforce lead with company data from LinkedIn and updates the CRM record with verified contact and firmographic information.

naftiko: '0.5'
info:
  label: Salesforce Lead Enrichment
  description: Enriches a new Salesforce lead with company data from LinkedIn and updates the CRM record with verified contact and firmographic information.
  tags:
  - sales
  - crm
  - salesforce
  - linkedin
  - lead-enrichment
capability:
  exposes:
  - type: mcp
    namespace: crm-enrichment
    port: 8080
    tools:
    - name: enrich-lead
      description: Given a Salesforce lead ID, retrieve the lead, look up the company on LinkedIn for firmographic data, and update the Salesforce record with enriched information.
      inputParameters:
      - name: lead_id
        in: body
        type: string
        description: The Salesforce Lead ID to enrich.
      steps:
      - name: get-lead
        type: call
        call: salesforce-lookup.get-lead
        with:
          lead_id: '{{lead_id}}'
      - name: lookup-company
        type: call
        call: linkedin.search-company
        with:
          company_name: '{{get-lead.company}}'
      - name: update-lead
        type: call
        call: salesforce-update.update-lead
        with:
          lead_id: '{{lead_id}}'
          employee_count: '{{lookup-company.staffCount}}'
          industry: '{{lookup-company.industries}}'
  consumes:
  - type: http
    namespace: salesforce-lookup
    baseUri: https://mercedes-benz.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: lead
      path: /sobjects/Lead/{{lead_id}}
      inputParameters:
      - name: lead_id
        in: path
      operations:
      - name: get-lead
        method: GET
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: organizations
      path: /organizations
      operations:
      - name: search-company
        method: GET
  - type: http
    namespace: salesforce-update
    baseUri: https://mercedes-benz.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: lead
      path: /sobjects/Lead/{{lead_id}}
      inputParameters:
      - name: lead_id
        in: path
      operations:
      - name: update-lead
        method: PATCH
Open in Framework → View in Fleet → salesforce-lead-enrichment.yml

Retrieves real-time status of Mercedes-Benz EV charging stations from the connected services API and surfaces alerts for offline stations via Microsoft Teams.

naftiko: '0.5'
info:
  label: EV Charging Network Status Lookup
  description: Retrieves real-time status of Mercedes-Benz EV charging stations from the connected services API and surfaces alerts for offline stations via Microsoft Teams.
  tags:
  - operations
  - ev
  - connected-services
  - microsoft-teams
  - monitoring
capability:
  exposes:
  - type: mcp
    namespace: ev-ops
    port: 8080
    tools:
    - name: check-charging-station-status
      description: Query the Mercedes me Connect API for the status of EV charging stations at a given location. If any stations are offline, post an alert to the operations Microsoft Teams channel.
      inputParameters:
      - name: location_id
        in: body
        type: string
        description: The charging network location ID to check.
      steps:
      - name: get-status
        type: call
        call: mercedes-connect.get-charging-status
        with:
          location_id: '{{location_id}}'
      - name: notify-ops
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: ev-operations
          message: 'Charging Station Alert at {{location_id}}: {{get-status.offline_count}} stations offline out of {{get-status.total_count}} total.'
  consumes:
  - type: http
    namespace: mercedes-connect
    baseUri: https://api.mercedes-benz.com/vehicleservices/v3
    authentication:
      type: bearer
      token: $secrets.mercedes_connect_token
    resources:
    - name: charging-status
      path: /charging/locations/{{location_id}}/status
      inputParameters:
      - name: location_id
        in: path
      operations:
      - name: get-charging-status
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → ev-charging-network-status-lookup.yml

Creates ServiceNow change for VM patching, triggers Terraform apply, and validates with Datadog.

naftiko: '0.5'
info:
  label: VM Patching Orchestrator
  description: Creates ServiceNow change for VM patching, triggers Terraform apply, and validates with Datadog.
  tags:
  - cloud
  - servicenow
  - terraform
  - datadog
capability:
  exposes:
  - type: mcp
    namespace: cloud
    port: 8080
    tools:
    - name: vm-orchestrate
      description: Creates ServiceNow change for VM patching, triggers Terraform apply, and validates with Datadog.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: servicenow.create-incident
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: terraform.get-workspace
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: datadog.get-monitor
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: terraform
    baseUri: https://app.terraform.io/api/v2
    authentication:
      type: bearer
      token: $secrets.terraform_token
    resources:
    - name: workspaces
      path: /organizations/mercedes-benz/workspaces
      operations:
      - name: get-workspace
        method: GET
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apiKey
      header: DD-API-KEY
      key: $secrets.datadog_api_key
    resources:
    - name: monitors
      path: /monitor/{{{{monitor_id}}}}
      operations:
      - name: get-monitor
        method: GET
Open in Framework → View in Fleet → vm-patching-orchestrator.yml

When a compensation change request is submitted in Workday, routes it for approval via ServiceNow and notifies the HR business partner via Microsoft Teams.

naftiko: '0.5'
info:
  label: Workday Compensation Change Approval
  description: When a compensation change request is submitted in Workday, routes it for approval via ServiceNow and notifies the HR business partner via Microsoft Teams.
  tags:
  - hr
  - compensation
  - workday
  - servicenow
  - approval
capability:
  exposes:
  - type: mcp
    namespace: hr-compensation
    port: 8080
    tools:
    - name: route-compensation-change
      description: Given a Workday compensation change event ID, retrieve the change details, create a ServiceNow approval task for the HR business partner, and notify them via Microsoft Teams.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The Workday compensation change event ID to route for approval.
      steps:
      - name: get-comp-change
        type: call
        call: workday.get-compensation-event
        with:
          event_id: '{{event_id}}'
      - name: create-approval
        type: call
        call: servicenow.create-incident
        with:
          short_description: 'Compensation change approval required: {{get-comp-change.employee_name}}'
          category: hr_compensation
          description: 'Employee: {{get-comp-change.employee_name}} | Change: {{get-comp-change.change_amount}} | Effective: {{get-comp-change.effective_date}}'
      - name: notify-hrbp
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-comp-change.hrbp_email}}'
          message: 'Compensation change approval needed for {{get-comp-change.employee_name}}. ServiceNow: {{create-approval.number}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: basic
      username: $secrets.workday_user
      password: $secrets.workday_password
    resources:
    - name: compensation-events
      path: /mercedes-benz/compensationEvents/{{event_id}}
      inputParameters:
      - name: event_id
        in: path
      operations:
      - name: get-compensation-event
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incident
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → workday-compensation-change-approval.yml

Retrieves the latest results from a Splunk saved search.

naftiko: '0.5'
info:
  label: Splunk Saved Search Results Lookup
  description: Retrieves the latest results from a Splunk saved search.
  tags:
  - security
  - splunk
  - siem
capability:
  exposes:
  - type: mcp
    namespace: siem
    port: 8080
    tools:
    - name: get-saved-search-results
      description: Retrieves the latest results from a Splunk saved search.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary lookup parameter.
      call: splunk.get-saved-search
      with:
        param_1: '{{param_1}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.result
  consumes:
  - type: http
    namespace: splunk
    baseUri: https://splunk.mercedes-benz.com:8089/servicesNS/admin/search
    authentication:
      type: bearer
      token: $secrets.splunk_token
    resources:
    - name: get-saved-search
      path: /saved/searches/{{{{search_name}}}}/history
      operations:
      - name: get-saved-search
        method: GET
Open in Framework → View in Fleet → splunk-saved-search-results-lookup.yml

When a new position requisition is approved in Workday, creates a Jira task for the recruiting team and notifies the hiring manager via Microsoft Teams.

naftiko: '0.5'
info:
  label: Workday Position Requisition to Jira Task
  description: When a new position requisition is approved in Workday, creates a Jira task for the recruiting team and notifies the hiring manager via Microsoft Teams.
  tags:
  - hr
  - recruiting
  - workday
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: recruiting-ops
    port: 8080
    tools:
    - name: create-recruiting-task
      description: Given a Workday position requisition ID, retrieve requisition details and create a Jira task for the recruiting team, then notify the hiring manager via Microsoft Teams.
      inputParameters:
      - name: requisition_id
        in: body
        type: string
        description: The Workday position requisition ID that has been approved.
      steps:
      - name: get-requisition
        type: call
        call: workday.get-job-requisition
        with:
          requisition_id: '{{requisition_id}}'
      - name: create-task
        type: call
        call: jira.create-issue
        with:
          project_key: RECRUIT
          issuetype: Task
          summary: 'Recruit for: {{get-requisition.job_title}} - {{get-requisition.department}}'
          description: 'Workday Req ID: {{requisition_id}}

            Job Title: {{get-requisition.job_title}}

            Department: {{get-requisition.department}}

            Location: {{get-requisition.location}}'
      - name: notify-manager
        type: call
        call: msteams.send-message
        with:
          recipient_upn: '{{get-requisition.hiring_manager_email}}'
          message: 'Your position requisition for {{get-requisition.job_title}} has been approved. Recruiting task created: {{create-task.key}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: basic
      username: $secrets.workday_user
      password: $secrets.workday_password
    resources:
    - name: job-requisitions
      path: /mercedes-benz/jobRequisitions/{{requisition_id}}
      inputParameters:
      - name: requisition_id
        in: path
      operations:
      - name: get-job-requisition
        method: GET
  - type: http
    namespace: jira
    baseUri: https://mercedes-benz.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → workday-position-requisition-to-jira-task.yml

Detects Snowflake ETL failure, creates Jira ticket, retries pipeline, and notifies via Teams.

naftiko: '0.5'
info:
  label: ETL Failure Recovery Workflow
  description: Detects Snowflake ETL failure, creates Jira ticket, retries pipeline, and notifies via Teams.
  tags:
  - data
  - snowflake
  - jira
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: data
    port: 8080
    tools:
    - name: etl-orchestrate
      description: Detects Snowflake ETL failure, creates Jira ticket, retries pipeline, and notifies via Teams.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: snowflake.run-query
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: jira.create-issue
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: msteams.send-message
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://mercedes-benz.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
    baseUri: https://mercedes-benz.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_password
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/mercedes-benz/channels/general/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → etl-failure-recovery-workflow.yml

When a Salesforce opportunity is marked Close Won, logs a SAP S/4HANA revenue entry and notifies the sales leadership team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Salesforce Opportunity Close Won Notification
  description: When a Salesforce opportunity is marked Close Won, logs a SAP S/4HANA revenue entry and notifies the sales leadership team via Microsoft Teams.
  tags:
  - sales
  - crm
  - salesforce
  - sap-s4hana
  - microsoft-teams
  - revenue
capability:
  exposes:
  - type: mcp
    namespace: sales-ops
    port: 8080
    tools:
    - name: handle-opportunity-won
      description: Given a Salesforce opportunity ID that has been marked Close Won, retrieve deal details, create a revenue entry in SAP S/4HANA, and celebrate the win in the sales Microsoft Teams channel.
      inputParameters:
      - name: opportunity_id
        in: body
        type: string
        description: The Salesforce Opportunity ID that has been closed as won.
      steps:
      - name: get-opportunity
        type: call
        call: salesforce.get-opportunity
        with:
          opportunity_id: '{{opportunity_id}}'
      - name: create-revenue-entry
        type: call
        call: sap-s4.post-revenue
        with:
          customer: '{{get-opportunity.account_name}}'
          amount: '{{get-opportunity.amount}}'
          currency: '{{get-opportunity.currency_iso_code}}'
      - name: notify-sales-team
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: sales-wins
          message: 'Deal Won! {{get-opportunity.account_name}} - {{get-opportunity.amount}} {{get-opportunity.currency_iso_code}}. Opportunity: {{opportunity_id}}'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://mercedes-benz.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunity
      path: /sobjects/Opportunity/{{opportunity_id}}
      inputParameters:
      - name: opportunity_id
        in: path
      operations:
      - name: get-opportunity
        method: GET
  - type: http
    namespace: sap-s4
    baseUri: https://mercedes-benz-s4.sap.com/sap/opu/odata/sap/FI_REVENUE_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: revenue-entries
      path: /A_RevenueEntry
      operations:
      - name: post-revenue
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → salesforce-opportunity-close-won-notification.yml

Runs vendor compliance check with SAP Ariba data, Snowflake contract history, and ServiceNow audit task.

naftiko: '0.5'
info:
  label: Vendor Compliance Audit Orchestrator
  description: Runs vendor compliance check with SAP Ariba data, Snowflake contract history, and ServiceNow audit task.
  tags:
  - procurement
  - sap-ariba
  - snowflake
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: procurement
    port: 8080
    tools:
    - name: vendor-orchestrate
      description: Runs vendor compliance check with SAP Ariba data, Snowflake contract history, and ServiceNow audit task.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: ariba.get-vendor
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: snowflake.run-query
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: servicenow.create-incident
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: ariba
    baseUri: https://openapi.ariba.com/api/procurement/v2
    authentication:
      type: bearer
      token: $secrets.ariba_token
    resources:
    - name: vendors
      path: /vendors/{{{{vendor_id}}}}
      operations:
      - name: get-vendor
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://mercedes-benz.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: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → vendor-compliance-audit-orchestrator.yml

Retrieves a Confluence page by ID.

naftiko: '0.5'
info:
  label: Confluence Page Lookup
  description: Retrieves a Confluence page by ID.
  tags:
  - knowledge-management
  - confluence
  - documentation
capability:
  exposes:
  - type: mcp
    namespace: knowledge
    port: 8080
    tools:
    - name: get-confluence-page
      description: Retrieves a Confluence page by ID.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary lookup parameter.
      call: confluence.get-page
      with:
        param_1: '{{param_1}}'
      outputParameters:
      - name: result
        type: string
        mapping: $.result
  consumes:
  - type: http
    namespace: confluence
    baseUri: https://mercedes-benz.atlassian.net/wiki/rest/api
    authentication:
      type: basic
      username: $secrets.confluence_user
      password: $secrets.confluence_password
    resources:
    - name: get-page
      path: /content/{{{{page_id}}}}?expand=body.storage,version
      operations:
      - name: get-page
        method: GET
Open in Framework → View in Fleet → confluence-page-lookup.yml

When an employee completes a mandatory compliance training in Workday Learning, updates the compliance tracking record in ServiceNow and notifies the compliance team.

naftiko: '0.5'
info:
  label: Workday Learning Completion to Compliance Tracker
  description: When an employee completes a mandatory compliance training in Workday Learning, updates the compliance tracking record in ServiceNow and notifies the compliance team.
  tags:
  - hr
  - compliance
  - workday
  - servicenow
  - training
capability:
  exposes:
  - type: mcp
    namespace: compliance-training
    port: 8080
    tools:
    - name: record-training-completion
      description: Given a Workday Learning training completion event with employee ID and course ID, update the compliance record in ServiceNow and notify the compliance team via Microsoft Teams.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: The Workday employee ID who completed the training.
      - name: course_id
        in: body
        type: string
        description: The Workday Learning course ID that was completed.
      - name: completion_date
        in: body
        type: string
        description: The date the training was completed (YYYY-MM-DD).
      steps:
      - name: get-course
        type: call
        call: workday.get-learning-course
        with:
          course_id: '{{course_id}}'
      - name: update-compliance
        type: call
        call: servicenow.update-compliance-record
        with:
          employee_id: '{{employee_id}}'
          course_name: '{{get-course.name}}'
          completion_date: '{{completion_date}}'
      - name: notify-compliance
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: compliance-team
          message: 'Training completed: Employee {{employee_id}} finished {{get-course.name}} on {{completion_date}}. Compliance record updated: {{update-compliance.sys_id}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: basic
      username: $secrets.workday_user
      password: $secrets.workday_password
    resources:
    - name: learning-courses
      path: /mercedes-benz/learningCourses/{{course_id}}
      inputParameters:
      - name: course_id
        in: path
      operations:
      - name: get-learning-course
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: compliance-records
      path: /table/sn_compliance_policy_statement
      operations:
      - name: update-compliance-record
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → workday-learning-completion-to-compliance-tracker.yml

Generates ServiceNow knowledge article from resolved incident and shares via Teams.

naftiko: '0.5'
info:
  label: Knowledge Article Auto-Publisher
  description: Generates ServiceNow knowledge article from resolved incident and shares via Teams.
  tags:
  - itsm
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: itsm
    port: 8080
    tools:
    - name: knowledge-orchestrate
      description: Generates ServiceNow knowledge article from resolved incident and shares via Teams.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: servicenow.create-incident
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: msteams.send-message
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/mercedes-benz/channels/general/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → knowledge-article-auto-publisher.yml

Queries SAP for budget utilization, checks Snowflake analytics, and sends Teams alert when spending exceeds threshold.

naftiko: '0.5'
info:
  label: Program Budget Alert Workflow
  description: Queries SAP for budget utilization, checks Snowflake analytics, and sends Teams alert when spending exceeds threshold.
  tags:
  - finance
  - sap
  - snowflake
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: program-orchestrate
      description: Queries SAP for budget utilization, checks Snowflake analytics, and sends Teams alert when spending exceeds threshold.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: sap.get-po
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: snowflake.run-query
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: msteams.send-message
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://mercedes-benz-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: purchase-orders
      path: /A_PurchaseOrder('{{{{po_number}}}}')
      operations:
      - name: get-po
        method: GET
  - type: http
    namespace: snowflake
    baseUri: https://mercedes-benz.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: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/mercedes-benz/channels/general/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → program-budget-alert-workflow.yml

Detects Workday org changes, updates Okta groups and Azure AD, and logs in ServiceNow.

naftiko: '0.5'
info:
  label: Org Change to Identity Sync
  description: Detects Workday org changes, updates Okta groups and Azure AD, and logs in ServiceNow.
  tags:
  - hr
  - workday
  - okta
  - azure
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: hr
    port: 8080
    tools:
    - name: org-orchestrate
      description: Detects Workday org changes, updates Okta groups and Azure AD, and logs in ServiceNow.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: workday.get-worker
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: okta.get-user-groups
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: azure.get-resources
        with:
          input: '{{step-1.result}}'
      - name: step-4
        type: call
        call: servicenow.create-incident
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: workday
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /mercedes-benz/workers/{{worker_id}}
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: okta
    baseUri: https://mercedes-benz.okta.com/api/v1
    authentication:
      type: bearer
      token: $secrets.okta_token
    resources:
    - name: user-groups
      path: /users/{{{{user_id}}}}/groups
      operations:
      - name: get-user-groups
        method: GET
  - type: http
    namespace: azure
    baseUri: https://management.azure.com
    authentication:
      type: bearer
      token: $secrets.azure_token
    resources:
    - name: resources
      path: /subscriptions
      operations:
      - name: get-resources
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → org-change-to-identity-sync.yml

Retrieves SAP contract at milestone, creates billing document, and notifies manager via Teams.

naftiko: '0.5'
info:
  label: Contract Milestone Billing Workflow
  description: Retrieves SAP contract at milestone, creates billing document, and notifies manager via Teams.
  tags:
  - finance
  - sap
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finance
    port: 8080
    tools:
    - name: contract-orchestrate
      description: Retrieves SAP contract at milestone, creates billing document, and notifies manager via Teams.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: sap.get-po
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: msteams.send-message
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: sap
    baseUri: https://mercedes-benz-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: purchase-orders
      path: /A_PurchaseOrder('{{{{po_number}}}}')
      operations:
      - name: get-po
        method: GET
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channels
      path: /teams/mercedes-benz/channels/general/messages
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → contract-milestone-billing-workflow.yml

Creates a new Terraform Cloud workspace for a software team, configures GitHub repository linking, and notifies the platform team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Terraform Cloud Workspace Provisioning
  description: Creates a new Terraform Cloud workspace for a software team, configures GitHub repository linking, and notifies the platform team via Microsoft Teams.
  tags:
  - cloud
  - infrastructure
  - terraform
  - github
  - microsoft-teams
  - provisioning
capability:
  exposes:
  - type: mcp
    namespace: platform-provisioning
    port: 8080
    tools:
    - name: provision-terraform-workspace
      description: Given a team name and GitHub repository, create a Terraform Cloud workspace, link it to the repository, and notify the platform engineering team via Microsoft Teams.
      inputParameters:
      - name: team_name
        in: body
        type: string
        description: The software team name for whom the workspace is being created.
      - name: repository
        in: body
        type: string
        description: The GitHub repository to link to the Terraform workspace (e.g., mercedes-benz/my-service).
      - name: environment
        in: body
        type: string
        description: 'The target environment: dev, staging, or production.'
      steps:
      - name: create-workspace
        type: call
        call: terraform.create-workspace
        with:
          name: '{{team_name}}-{{environment}}'
          vcs_repo: '{{repository}}'
      - name: notify-platform
        type: call
        call: msteams.post-channel-message
        with:
          channel_id: platform-engineering
          message: 'Terraform workspace created: {{team_name}}-{{environment}} linked to {{repository}}. Workspace ID: {{create-workspace.workspace_id}}'
  consumes:
  - type: http
    namespace: terraform
    baseUri: https://app.terraform.io/api/v2
    authentication:
      type: bearer
      token: $secrets.terraform_token
    resources:
    - name: workspaces
      path: /organizations/mercedes-benz/workspaces
      operations:
      - name: create-workspace
        method: POST
  - type: http
    namespace: msteams
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-channel-message
        method: POST
Open in Framework → View in Fleet → terraform-cloud-workspace-provisioning.yml

Disables Azure AD account, suspends Okta sessions, and creates ServiceNow asset recovery ticket.

naftiko: '0.5'
info:
  label: Termination to Access Revocation
  description: Disables Azure AD account, suspends Okta sessions, and creates ServiceNow asset recovery ticket.
  tags:
  - hr
  - azure
  - okta
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: hr
    port: 8080
    tools:
    - name: termination-orchestrate
      description: Disables Azure AD account, suspends Okta sessions, and creates ServiceNow asset recovery ticket.
      inputParameters:
      - name: param_1
        in: body
        type: string
        description: Primary input parameter for this workflow.
      steps:
      - name: step-1
        type: call
        call: azure.get-resources
        with:
          input: '{{param_1}}'
      - name: step-2
        type: call
        call: okta.get-user-groups
        with:
          input: '{{step-1.result}}'
      - name: step-3
        type: call
        call: servicenow.create-incident
        with:
          input: '{{step-1.result}}'
  consumes:
  - type: http
    namespace: azure
    baseUri: https://management.azure.com
    authentication:
      type: bearer
      token: $secrets.azure_token
    resources:
    - name: resources
      path: /subscriptions
      operations:
      - name: get-resources
        method: GET
  - type: http
    namespace: okta
    baseUri: https://mercedes-benz.okta.com/api/v1
    authentication:
      type: bearer
      token: $secrets.okta_token
    resources:
    - name: user-groups
      path: /users/{{{{user_id}}}}/groups
      operations:
      - name: get-user-groups
        method: GET
  - type: http
    namespace: servicenow
    baseUri: https://mercedes-benz.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → termination-to-access-revocation.yml

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
Open in Framework → View in Fleet → jira-cross-team-dependency-tracker.yml

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
Open in Framework → View in Fleet → anthropic-ai-vehicle-software-documentation-summary.yml

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
Open in Framework → View in Fleet → sap-battery-bom-lookup.yml

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
Open in Framework → View in Fleet → workday-org-restructure-notification.yml

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
Open in Framework → View in Fleet → jira-vehicle-program-milestone-tracker.yml

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
Open in Framework → View in Fleet → sap-carbon-footprint-compliance-report.yml

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
Open in Framework → View in Fleet → datadog-api-gateway-error-rate-handler.yml

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
Open in Framework → View in Fleet → jira-autopilot-bug-count.yml

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
Open in Framework → View in Fleet → sap-supplier-delivery-delay-alert.yml

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
Open in Framework → View in Fleet → datadog-megapack-site-health-report.yml

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
Open in Framework → View in Fleet → snowflake-autopilot-disengagement-query.yml

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
Open in Framework → View in Fleet → workday-recruiting-pipeline-summary.yml

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
Open in Framework → View in Fleet → github-ml-experiment-tracker.yml

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
Open in Framework → View in Fleet → salesforce-high-value-opportunity-alert.yml

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
Open in Framework → View in Fleet → salesforce-ev-fleet-sales-opportunity-tracking.yml

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
Open in Framework → View in Fleet → github-robotics-ci-failure-handler.yml

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
Open in Framework → View in Fleet → github-dojo-repo-branch-status.yml

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
Open in Framework → View in Fleet → salesforce-referral-program-processor.yml

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
Open in Framework → View in Fleet → salesforce-warranty-claim-processing.yml

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
Open in Framework → View in Fleet → jira-customer-issue-to-engineering-handoff.yml

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
Open in Framework → View in Fleet → github-autopilot-pr-status.yml

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
Open in Framework → View in Fleet → sap-raw-material-reorder-trigger.yml

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
Open in Framework → View in Fleet → salesforce-ev-lead-score-lookup.yml

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
Open in Framework → View in Fleet → jira-energy-project-status.yml

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
Open in Framework → View in Fleet → workday-employee-headcount-report.yml

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
Open in Framework → View in Fleet → datadog-manufacturing-slo-compliance-report.yml

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
Open in Framework → View in Fleet → snowflake-vehicle-production-analytics-pipeline-check.yml

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
Open in Framework → View in Fleet → datadog-vehicle-telemetry-p1-alert.yml

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
Open in Framework → View in Fleet → workday-contractor-onboarding-orchestrator.yml

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
Open in Framework → View in Fleet → workday-engineer-offboarding.yml

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
Open in Framework → View in Fleet → workday-leave-request-manager-notification.yml

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
Open in Framework → View in Fleet → snowflake-vehicle-safety-incident-report.yml

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
Open in Framework → View in Fleet → salesforce-test-drive-to-jira-feedback.yml

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
Open in Framework → View in Fleet → github-autopilot-model-deployment-gate.yml

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
Open in Framework → View in Fleet → anthropic-ai-software-defect-root-cause-analysis.yml

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
Open in Framework → View in Fleet → github-firmware-release-tag-lookup.yml

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
Open in Framework → View in Fleet → workday-termination-to-access-revocation.yml

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
Open in Framework → View in Fleet → datadog-solar-inverter-anomaly-handler.yml

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
Open in Framework → View in Fleet → snowflake-battery-production-kpi-report.yml

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
Open in Framework → View in Fleet → github-infra-terraform-plan-review.yml

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
Open in Framework → View in Fleet → jira-sprint-velocity-and-burndown-report.yml

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
Open in Framework → View in Fleet → sap-gigafactory-maintenance-schedule.yml

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
Open in Framework → View in Fleet → jira-bug-triage-morning-digest.yml

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
Open in Framework → View in Fleet → salesforce-quarterly-revenue-forecast-report.yml

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
Open in Framework → View in Fleet → workday-annual-review-cycle-launcher.yml

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
Open in Framework → View in Fleet → workday-new-hire-equipment-provisioning.yml

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
Open in Framework → View in Fleet → salesforce-partner-onboarding-workflow.yml

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
Open in Framework → View in Fleet → salesforce-ev-customer-delivery-notification.yml

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
Open in Framework → View in Fleet → jira-battery-defect-escalation.yml

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
Open in Framework → View in Fleet → sap-quality-inspection-to-jira.yml

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
Open in Framework → View in Fleet → snowflake-customer-satisfaction-dashboard-refresh.yml

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
Open in Framework → View in Fleet → datadog-supercharger-uptime-check.yml

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
Open in Framework → View in Fleet → datadog-autopilot-software-observability-dashboard.yml

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
Open in Framework → View in Fleet → workday-new-engineer-onboarding.yml

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
Open in Framework → View in Fleet → workday-compensation-band-lookup.yml

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
Open in Framework → View in Fleet → jira-escalation-to-datadog-and-slack.yml

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
Open in Framework → View in Fleet → jira-roadmap-quarterly-status-report.yml

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
Open in Framework → View in Fleet → workday-diversity-metrics-quarterly-report.yml

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
Open in Framework → View in Fleet → sap-manufacturing-shift-handoff.yml

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
Open in Framework → View in Fleet → datadog-cybertruck-production-slo-report.yml

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
Open in Framework → View in Fleet → sap-inventory-level-check-for-gigafactory.yml

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
Open in Framework → View in Fleet → github-dojo-training-pipeline-monitor.yml

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
Open in Framework → View in Fleet → datadog-gigafactory-alert-to-jira-incident.yml

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
Open in Framework → View in Fleet → github-ci-cd-pipeline-failure-triage.yml

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
Open in Framework → View in Fleet → sap-logistics-shipment-tracker.yml

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
Open in Framework → View in Fleet → sap-financial-period-close-for-manufacturing.yml

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
Open in Framework → View in Fleet → workday-benefits-enrollment-status.yml

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
Open in Framework → View in Fleet → sap-production-order-quality-notification.yml

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
Open in Framework → View in Fleet → github-firmware-ota-release-pipeline.yml

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
Open in Framework → View in Fleet → salesforce-service-case-status-lookup.yml

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
Open in Framework → View in Fleet → github-release-deployment-with-datadog-marker.yml

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
Open in Framework → View in Fleet → snowflake-fleet-telematics-weekly-summary.yml

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
Open in Framework → View in Fleet → salesforce-ev-service-appointment-scheduling.yml

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
Open in Framework → View in Fleet → salesforce-fleet-contract-lookup.yml

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
Open in Framework → View in Fleet → github-pr-code-review-assignment.yml

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
Open in Framework → View in Fleet → workday-open-requisitions-count.yml

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
Open in Framework → View in Fleet → jira-sprint-retrospective-summary.yml

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
Open in Framework → View in Fleet → sap-manufacturing-work-order-lookup.yml

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
Open in Framework → View in Fleet → datadog-gpu-cluster-monitor-status.yml

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
Open in Framework → View in Fleet → sap-production-order-status-check.yml

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
Open in Framework → View in Fleet → github-security-scan-to-jira-vulnerability.yml

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
Open in Framework → View in Fleet → datadog-powerwall-firmware-rollout-monitor.yml

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
Open in Framework → View in Fleet → snowflake-charging-network-analytics-digest.yml

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
Open in Framework → View in Fleet → sap-supplier-performance-report.yml

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
Open in Framework → View in Fleet → sap-vendor-payment-status.yml

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
Open in Framework → View in Fleet → datadog-fsd-inference-latency-check.yml

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
Open in Framework → View in Fleet → slack-vehicle-delivery-delay-notification.yml

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
Open in Framework → View in Fleet → snowflake-energy-production-daily-digest.yml

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
Open in Framework → View in Fleet → salesforce-charging-partner-revenue-report.yml

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
Open in Framework → View in Fleet → snowflake-energy-storage-query.yml

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
Open in Framework → View in Fleet → openai-vehicle-software-release-notes-generation.yml

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
Open in Framework → View in Fleet → datadog-autonomous-driving-latency-alert.yml

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
Open in Framework → View in Fleet → workday-performance-review-cycle-initiation.yml

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
Open in Framework → View in Fleet → jira-release-readiness-checklist.yml

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
Open in Framework → View in Fleet → github-security-vulnerability-alert.yml

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
Open in Framework → View in Fleet → salesforce-vehicle-recall-campaign-management.yml

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
Open in Framework → View in Fleet → snowflake-supercharger-utilization-query.yml

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
Open in Framework → View in Fleet → sap-purchase-order-creation-for-battery-materials.yml

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
Open in Framework → View in Fleet → snowflake-fsd-safety-report-to-slack.yml

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
Open in Framework → View in Fleet → datadog-infrastructure-cost-anomaly-alert.yml

Provisions a new Okta user account with department-appropriate group assignments based on Workday department and job classification, enabling SSO access to Toyota's enterprise applications.

naftiko: '0.5'
info:
  label: Okta Application Access Provisioning
  description: Provisions a new Okta user account with department-appropriate group assignments based on Workday department and job classification, enabling SSO access to Toyota's enterprise applications.
  tags:
  - identity
  - security
  - okta
  - workday
  - access-management
capability:
  exposes:
  - type: mcp
    namespace: identity-provisioning
    port: 8080
    tools:
    - name: provision-app-access
      description: Given a Workday employee ID, retrieve their profile and department, create an Okta user account, and assign the appropriate Okta groups for SSO application access. Use during onboarding or role changes to grant access to Toyota's enterprise application portfolio.
      inputParameters:
      - name: workday_employee_id
        in: body
        type: string
        description: The Workday worker ID for the employee needing access provisioning.
      steps:
      - name: get-worker
        type: call
        call: workday-idm.get-worker
        with:
          worker_id: '{{workday_employee_id}}'
      - name: create-okta-user
        type: call
        call: okta-idm.create-user
        with:
          first_name: '{{get-worker.first_name}}'
          last_name: '{{get-worker.last_name}}'
          email: '{{get-worker.work_email}}'
          login: '{{get-worker.work_email}}'
          department: '{{get-worker.department}}'
      - name: assign-group
        type: call
        call: okta-idm.add-to-group
        with:
          user_id: '{{create-okta-user.id}}'
          group_id: '{{get-worker.app_group_id}}'
  consumes:
  - type: http
    namespace: workday-idm
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /toyota/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: okta-idm
    baseUri: https://toyota.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_api_token
      placement: header
    resources:
    - name: users
      path: /users
      operations:
      - name: create-user
        method: POST
    - name: group-membership
      path: /groups/{{group_id}}/users/{{user_id}}
      inputParameters:
      - name: group_id
        in: path
      - name: user_id
        in: path
      operations:
      - name: add-to-group
        method: PUT
Open in Framework → View in Fleet → okta-application-access-provisioning.yml

Fetches a supplier invoice from SAP S/4HANA by document number, retrieves payment and approval status, and posts a summary to the accounts payable Microsoft Teams channel for finance team review.

naftiko: '0.5'
info:
  label: SAP Supplier Invoice Approval and Status
  description: Fetches a supplier invoice from SAP S/4HANA by document number, retrieves payment and approval status, and posts a summary to the accounts payable Microsoft Teams channel for finance team review.
  tags:
  - finance
  - accounts-payable
  - sap
  - microsoft-teams
  - erp
capability:
  exposes:
  - type: mcp
    namespace: finance-ap
    port: 8080
    tools:
    - name: get-invoice-status
      description: Given a SAP invoice document number and fiscal year, retrieve the invoice approval and payment status from SAP S/4HANA, and post a summary to the finance AP Teams channel. Use for invoice tracking and accounts payable reconciliation.
      inputParameters:
      - name: invoice_number
        in: body
        type: string
        description: The SAP Accounts Payable invoice document number.
      - name: fiscal_year
        in: body
        type: string
        description: The fiscal year for the invoice, e.g. 2025.
      steps:
      - name: get-invoice
        type: call
        call: sap-fi.get-invoice
        with:
          invoice_number: '{{invoice_number}}'
          fiscal_year: '{{fiscal_year}}'
      - name: post-summary
        type: call
        call: teams-ap.send-message
        with:
          channel: finance-ap-review
          text: 'Invoice Status | Doc: {{invoice_number}} | FY: {{fiscal_year}} | Vendor: {{get-invoice.vendor_name}} | Amount: {{get-invoice.amount}} {{get-invoice.currency}} | Status: {{get-invoice.payment_status}}'
  consumes:
  - type: http
    namespace: sap-fi
    baseUri: https://toyota-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(FiscalYear='{{fiscal_year}}',SupplierInvoice='{{invoice_number}}')
      inputParameters:
      - name: fiscal_year
        in: path
      - name: invoice_number
        in: path
      operations:
      - name: get-invoice
        method: GET
        outputRawFormat: xml
  - type: http
    namespace: teams-ap
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → sap-supplier-invoice-approval-and-status.yml

When a P1 or P2 ServiceNow incident is opened for production systems, enriches it with CI details, escalates priority, assigns to the on-call group, and sends an immediate alert to the IT operations Microsoft Teams channel.

naftiko: '0.5'
info:
  label: ServiceNow Critical Incident Triage and Escalation
  description: When a P1 or P2 ServiceNow incident is opened for production systems, enriches it with CI details, escalates priority, assigns to the on-call group, and sends an immediate alert to the IT operations Microsoft Teams channel.
  tags:
  - itsm
  - incident-response
  - servicenow
  - microsoft-teams
  - operations
capability:
  exposes:
  - type: mcp
    namespace: itsm-ops
    port: 8080
    tools:
    - name: triage-critical-incident
      description: Given a ServiceNow incident number, retrieve full details, escalate priority to P1, assign to the on-call ops group, and post a critical alert to the IT operations Teams channel. Use when production systems are impacted and immediate response is required.
      inputParameters:
      - name: incident_number
        in: body
        type: string
        description: The ServiceNow incident number, e.g. INC0012345.
      - name: on_call_group
        in: body
        type: string
        description: The ServiceNow assignment group for escalation.
      steps:
      - name: get-incident
        type: call
        call: servicenow-triage.get-incident
        with:
          number: '{{incident_number}}'
      - name: escalate-incident
        type: call
        call: servicenow-triage.update-incident
        with:
          sys_id: '{{get-incident.sys_id}}'
          priority: '1'
          assignment_group: '{{on_call_group}}'
      - name: post-alert
        type: call
        call: teams-itsm.send-message
        with:
          channel: it-operations-critical
          text: 'P1 INCIDENT: {{incident_number}} | {{get-incident.short_description}} | Assigned to: {{on_call_group}} | Escalated and in triage.'
  consumes:
  - type: http
    namespace: servicenow-triage
    baseUri: https://toyota.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      inputParameters:
      - name: number
        in: query
      operations:
      - name: get-incident
        method: GET
    - name: incident-record
      path: /table/incident/{{sys_id}}
      inputParameters:
      - name: sys_id
        in: path
      operations:
      - name: update-incident
        method: PATCH
  - type: http
    namespace: teams-itsm
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → servicenow-critical-incident-triage-and-escalation.yml

Creates a Workday job requisition for an approved engineering headcount, links it to the R&D cost center and hiring manager, and posts a notification to the talent acquisition Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Workday Job Requisition Creation for Engineering Roles
  description: Creates a Workday job requisition for an approved engineering headcount, links it to the R&D cost center and hiring manager, and posts a notification to the talent acquisition Microsoft Teams channel.
  tags:
  - hr
  - recruiting
  - workday
  - microsoft-teams
  - talent-acquisition
capability:
  exposes:
  - type: mcp
    namespace: hr-recruiting
    port: 8080
    tools:
    - name: create-engineering-requisition
      description: Create a Workday job requisition for an approved engineering or R&D position. Provide job title, department, location, and hiring manager ID. Notifies the TA team in Teams. Use when headcount is approved for Toyota's engineering and product development teams.
      inputParameters:
      - name: job_title
        in: body
        type: string
        description: Job title for the open engineering position.
      - name: department
        in: body
        type: string
        description: Workday department ID, e.g. Vehicle Development or Connected Technology.
      - name: location
        in: body
        type: string
        description: Work location, e.g. Plano TX, Toyota City Japan, Ann Arbor MI.
      - name: hiring_manager_id
        in: body
        type: string
        description: Workday worker ID of the hiring manager.
      steps:
      - name: create-req
        type: call
        call: workday-req.create-requisition
        with:
          job_title: '{{job_title}}'
          department: '{{department}}'
          location: '{{location}}'
          hiring_manager_id: '{{hiring_manager_id}}'
      - name: notify-ta
        type: call
        call: teams-ta.send-message
        with:
          channel: talent-acquisition
          text: 'Engineering Requisition Created | {{job_title}} | Dept: {{department}} | Location: {{location}} | Req ID: {{create-req.requisition_id}}'
  consumes:
  - type: http
    namespace: workday-req
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: job-requisitions
      path: /toyota/jobRequisitions
      operations:
      - name: create-requisition
        method: POST
  - type: http
    namespace: teams-ta
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → workday-job-requisition-creation-for-engineering-roles.yml

Retrieves budget and actual expenditure data from SAP S/4HANA for a cost center and fiscal period, identifies variances, and posts a budget health summary to the finance Microsoft Teams channel.

naftiko: '0.5'
info:
  label: SAP Cost Center Budget vs. Actuals Variance Report
  description: Retrieves budget and actual expenditure data from SAP S/4HANA for a cost center and fiscal period, identifies variances, and posts a budget health summary to the finance Microsoft Teams channel.
  tags:
  - finance
  - budgeting
  - sap
  - microsoft-teams
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: finance-budgets
    port: 8080
    tools:
    - name: report-budget-variance
      description: Retrieve SAP cost center budget and actual spend for a given controlling area and fiscal period. Post a variance report to the finance Teams channel. Use for monthly budget governance and cost center accountability reviews.
      inputParameters:
      - name: controlling_area
        in: body
        type: string
        description: SAP controlling area code, e.g. 1000.
      - name: cost_center
        in: body
        type: string
        description: SAP cost center code.
      - name: fiscal_period
        in: body
        type: string
        description: Fiscal period in YYYYMM format.
      steps:
      - name: get-variance
        type: call
        call: sap-co.get-actuals
        with:
          controlling_area: '{{controlling_area}}'
          cost_center: '{{cost_center}}'
          fiscal_period: '{{fiscal_period}}'
      - name: post-report
        type: call
        call: teams-budget.send-message
        with:
          channel: finance-budget-review
          text: 'Budget Variance | Cost Center: {{cost_center}} | Period: {{fiscal_period}} | Budget: {{get-variance.budget_amount}} | Actuals: {{get-variance.actual_amount}} | Variance: {{get-variance.variance_amount}} ({{get-variance.variance_pct}}%)'
  consumes:
  - type: http
    namespace: sap-co
    baseUri: https://toyota-s4.sap.com/sap/opu/odata/sap/API_COSTCENTER_0101_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: cost-center-data
      path: /A_CostCenter(ControllingArea='{{controlling_area}}',CostCenter='{{cost_center}}')
      inputParameters:
      - name: controlling_area
        in: path
      - name: cost_center
        in: path
      operations:
      - name: get-actuals
        method: GET
        outputRawFormat: xml
  - type: http
    namespace: teams-budget
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → sap-cost-center-budget-vs-actuals-variance-report.yml

Retrieves vendor master data from SAP S/4HANA by vendor ID, returning payment terms, currency, and compliance status for Toyota's global supply chain and procurement teams.

naftiko: '0.5'
info:
  label: SAP Vendor Master Lookup for Supply Chain
  description: Retrieves vendor master data from SAP S/4HANA by vendor ID, returning payment terms, currency, and compliance status for Toyota's global supply chain and procurement teams.
  tags:
  - finance
  - supply-chain
  - sap
  - vendor-management
  - erp
capability:
  exposes:
  - type: mcp
    namespace: supply-chain-vendors
    port: 8080
    tools:
    - name: get-vendor-master
      description: Look up a SAP vendor master record by vendor ID. Returns vendor full name, payment terms, transaction currency, and tax classification. Use for supplier validation in Toyota's automotive parts procurement and global supply chain management.
      inputParameters:
      - name: vendor_id
        in: body
        type: string
        description: The SAP supplier/vendor ID for the parts or materials supplier.
      call: sap-vendor.get-vendor
      with:
        vendor_id: '{{vendor_id}}'
      outputParameters:
      - name: vendor_name
        type: string
        mapping: $.d.SupplierFullName
      - name: payment_terms
        type: string
        mapping: $.d.PaymentTerms
      - name: currency
        type: string
        mapping: $.d.Currency
      - name: country
        type: string
        mapping: $.d.Country
  consumes:
  - type: http
    namespace: sap-vendor
    baseUri: https://toyota-s4.sap.com/sap/opu/odata/sap/API_SUPPLIER_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: suppliers
      path: /A_Supplier('{{vendor_id}}')
      inputParameters:
      - name: vendor_id
        in: path
      operations:
      - name: get-vendor
        method: GET
        outputRawFormat: xml
Open in Framework → View in Fleet → sap-vendor-master-lookup-for-supply-chain.yml

Submits a new supplier onboarding request to SAP Ariba for a prospective parts or materials vendor, notifies the procurement team via Microsoft Teams, and creates a ServiceNow task for due diligence tracking.

naftiko: '0.5'
info:
  label: SAP Ariba Supplier Onboarding Request
  description: Submits a new supplier onboarding request to SAP Ariba for a prospective parts or materials vendor, notifies the procurement team via Microsoft Teams, and creates a ServiceNow task for due diligence tracking.
  tags:
  - procurement
  - sap-ariba
  - servicenow
  - microsoft-teams
  - supplier-management
capability:
  exposes:
  - type: mcp
    namespace: supplier-onboarding
    port: 8080
    tools:
    - name: onboard-new-supplier
      description: Submit an SAP Ariba supplier onboarding request for a new automotive parts or materials vendor. Create a ServiceNow due diligence task and notify the procurement team via Teams. Use when new suppliers are identified for Toyota's supply chain.
      inputParameters:
      - name: supplier_name
        in: body
        type: string
        description: Legal name of the supplier company.
      - name: supplier_category
        in: body
        type: string
        description: Spend category, e.g. Raw Materials, Electronics, Logistics.
      - name: contact_email
        in: body
        type: string
        description: Primary supplier contact email address.
      steps:
      - name: submit-ariba-request
        type: call
        call: ariba.create-supplier-request
        with:
          name: '{{supplier_name}}'
          category: '{{supplier_category}}'
          contact_email: '{{contact_email}}'
      - name: create-due-diligence
        type: call
        call: servicenow-supplier.create-incident
        with:
          short_description: 'Supplier Due Diligence: {{supplier_name}}'
          category: supplier_onboarding
          assignment_group: Procurement_Due_Diligence
      - name: notify-procurement
        type: call
        call: teams-supply.send-message
        with:
          channel: procurement-supplier-ops
          text: 'New Supplier Onboarding | {{supplier_name}} | Category: {{supplier_category}} | Ariba ID: {{submit-ariba-request.supplier_id}} | Due Diligence Task: {{create-due-diligence.number}}'
  consumes:
  - type: http
    namespace: ariba
    baseUri: https://openapi.ariba.com/api/supplier/v1
    authentication:
      type: bearer
      token: $secrets.ariba_token
    resources:
    - name: supplier-requests
      path: /suppliers
      operations:
      - name: create-supplier-request
        method: POST
  - type: http
    namespace: servicenow-supplier
    baseUri: https://toyota.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: teams-supply
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → sap-ariba-supplier-onboarding-request.yml

When an employee termination is recorded in Workday, disables the Microsoft 365 account, revokes Okta sessions, opens a ServiceNow offboarding ticket for equipment return, and notifies the HR team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Employee Offboarding and Access Revocation
  description: When an employee termination is recorded in Workday, disables the Microsoft 365 account, revokes Okta sessions, opens a ServiceNow offboarding ticket for equipment return, and notifies the HR team via Microsoft Teams.
  tags:
  - hr
  - offboarding
  - workday
  - okta
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-offboarding
    port: 8080
    tools:
    - name: trigger-offboarding
      description: Given a Workday employee ID and termination date, disable the Microsoft 365 account, revoke all Okta sessions, open a ServiceNow offboarding ticket for IT equipment collection, and notify HR ops via Teams.
      inputParameters:
      - name: workday_employee_id
        in: body
        type: string
        description: The Workday worker ID for the departing employee.
      - name: termination_date
        in: body
        type: string
        description: The employee's final day in YYYY-MM-DD format.
      steps:
      - name: get-employee
        type: call
        call: workday-off.get-worker
        with:
          worker_id: '{{workday_employee_id}}'
      - name: disable-m365
        type: call
        call: msgraph-off.disable-user
        with:
          user_id: '{{get-employee.azure_ad_id}}'
      - name: revoke-okta
        type: call
        call: okta.clear-sessions
        with:
          login: '{{get-employee.work_email}}'
      - name: open-ticket
        type: call
        call: servicenow-off.create-incident
        with:
          short_description: 'Offboarding: {{get-employee.full_name}} | Last Day: {{termination_date}}'
          category: hr_offboarding
      - name: notify-hr
        type: call
        call: teams-hr.send-message
        with:
          channel: hr-offboarding-ops
          text: 'Offboarding triggered for {{get-employee.full_name}} | Last Day: {{termination_date}} | ServiceNow: {{open-ticket.number}}'
  consumes:
  - type: http
    namespace: workday-off
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: workers
      path: /toyota/workers/{{worker_id}}
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: get-worker
        method: GET
  - type: http
    namespace: msgraph-off
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: users
      path: /users/{{user_id}}
      inputParameters:
      - name: user_id
        in: path
      operations:
      - name: disable-user
        method: PATCH
  - type: http
    namespace: okta
    baseUri: https://toyota.okta.com/api/v1
    authentication:
      type: apikey
      key: Authorization
      value: $secrets.okta_api_token
      placement: header
    resources:
    - name: user-sessions
      path: /users/{{login}}/sessions
      inputParameters:
      - name: login
        in: path
      operations:
      - name: clear-sessions
        method: DELETE
  - type: http
    namespace: servicenow-off
    baseUri: https://toyota.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: teams-hr
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → employee-offboarding-and-access-revocation.yml

Retrieves SAP period-close task completion data for a Toyota entity by company code and fiscal period, then posts a close progress summary to the finance Microsoft Teams channel.

naftiko: '0.5'
info:
  label: SAP Financial Period Close Status Monitor
  description: Retrieves SAP period-close task completion data for a Toyota entity by company code and fiscal period, then posts a close progress summary to the finance Microsoft Teams channel.
  tags:
  - finance
  - period-close
  - sap
  - microsoft-teams
  - erp
capability:
  exposes:
  - type: mcp
    namespace: finance-close
    port: 8080
    tools:
    - name: monitor-period-close
      description: Given a SAP company code and fiscal period, retrieve the period-close task list completion status and post a summary to the finance channel. Use at month-end to track close progress across Toyota's global financial entities.
      inputParameters:
      - name: company_code
        in: body
        type: string
        description: SAP company code, e.g. 1000 for Toyota Motor North America.
      - name: fiscal_period
        in: body
        type: string
        description: Fiscal period in YYYYMM format, e.g. 202503.
      steps:
      - name: get-close-status
        type: call
        call: sap-fc.get-period-status
        with:
          company_code: '{{company_code}}'
          fiscal_period: '{{fiscal_period}}'
      - name: post-summary
        type: call
        call: teams-finclose.send-message
        with:
          channel: finance-period-close
          text: 'Period Close Monitor | Company: {{company_code}} | Period: {{fiscal_period}} | Open Tasks: {{get-close-status.open_count}} | Completed: {{get-close-status.closed_count}} | Completion: {{get-close-status.completion_pct}}%'
  consumes:
  - type: http
    namespace: sap-fc
    baseUri: https://toyota-s4.sap.com/sap/opu/odata/sap/API_FINANCEPERIODCLOSE_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: close-tasks
      path: /A_ClosingTaskCompletion
      inputParameters:
      - name: company_code
        in: query
      - name: fiscal_period
        in: query
      operations:
      - name: get-period-status
        method: GET
        outputRawFormat: xml
  - type: http
    namespace: teams-finclose
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → sap-financial-period-close-status-monitor.yml

Retrieves a pending Workday time-off request, validates the employee's leave balance, and either processes the approval or escalates to the manager with a Microsoft Teams notification.

naftiko: '0.5'
info:
  label: Workday Time-Off Request Processing
  description: Retrieves a pending Workday time-off request, validates the employee's leave balance, and either processes the approval or escalates to the manager with a Microsoft Teams notification.
  tags:
  - hr
  - time-off
  - workday
  - microsoft-teams
  - approval
capability:
  exposes:
  - type: mcp
    namespace: hr-leave
    port: 8080
    tools:
    - name: process-time-off-request
      description: Given a Workday time-off request ID, retrieve request details and the employee's available leave balance, and post an approval notification to the HR approvals Teams channel for manager action. Use for automated leave request intake and routing.
      inputParameters:
      - name: request_id
        in: body
        type: string
        description: The Workday time-off request ID to process.
      steps:
      - name: get-request
        type: call
        call: workday-leave.get-time-off-request
        with:
          request_id: '{{request_id}}'
      - name: notify-approver
        type: call
        call: teams-leave.send-message
        with:
          channel: hr-leave-approvals
          text: 'Time-Off Request | Employee: {{get-request.employee_name}} | Dates: {{get-request.start_date}} to {{get-request.end_date}} | Days: {{get-request.total_days}} | Available Balance: {{get-request.available_balance}} days | Action required.'
  consumes:
  - type: http
    namespace: workday-leave
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: time-off-requests
      path: /toyota/timeOff/{{request_id}}
      inputParameters:
      - name: request_id
        in: path
      operations:
      - name: get-time-off-request
        method: GET
  - type: http
    namespace: teams-leave
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → workday-time-off-request-processing.yml

Triggers a manual refresh of the Toyota fleet analytics Power BI dataset and posts a distribution notification with the updated report link to the fleet management Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Power BI Fleet Analytics Report Refresh
  description: Triggers a manual refresh of the Toyota fleet analytics Power BI dataset and posts a distribution notification with the updated report link to the fleet management Microsoft Teams channel.
  tags:
  - data-analytics
  - power-bi
  - microsoft-teams
  - reporting
  - fleet-management
capability:
  exposes:
  - type: mcp
    namespace: fleet-analytics
    port: 8080
    tools:
    - name: refresh-fleet-report
      description: Trigger a Power BI dataset refresh for the fleet analytics workspace and post a distribution notification to the fleet management Teams channel when the updated report is available. Use when fleet telemetry data loads complete and stakeholders need fresh analytics.
      inputParameters:
      - name: workspace_id
        in: body
        type: string
        description: The Power BI workspace ID containing the fleet analytics dataset.
      - name: dataset_id
        in: body
        type: string
        description: The Power BI dataset ID to refresh.
      - name: report_url
        in: body
        type: string
        description: The URL of the Power BI fleet analytics report.
      steps:
      - name: trigger-refresh
        type: call
        call: powerbi.trigger-refresh
        with:
          workspace_id: '{{workspace_id}}'
          dataset_id: '{{dataset_id}}'
      - name: notify-team
        type: call
        call: teams-fleet.send-message
        with:
          channel: fleet-management-analytics
          text: 'Fleet Analytics Refreshed | Report: {{report_url}} | Dataset {{dataset_id}} is now updated with the latest data.'
  consumes:
  - type: http
    namespace: powerbi
    baseUri: https://api.powerbi.com/v1.0/myorg
    authentication:
      type: bearer
      token: $secrets.powerbi_token
    resources:
    - name: dataset-refreshes
      path: /groups/{{workspace_id}}/datasets/{{dataset_id}}/refreshes
      inputParameters:
      - name: workspace_id
        in: path
      - name: dataset_id
        in: path
      operations:
      - name: trigger-refresh
        method: POST
  - type: http
    namespace: teams-fleet
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → power-bi-fleet-analytics-report-refresh.yml

When a new Toyota dealer Salesforce account is marked active, creates an onboarding case, notifies the dealer success team via Microsoft Teams, and opens a ServiceNow project task for system access provisioning.

naftiko: '0.5'
info:
  label: Salesforce Dealer Onboarding Case Kickoff
  description: When a new Toyota dealer Salesforce account is marked active, creates an onboarding case, notifies the dealer success team via Microsoft Teams, and opens a ServiceNow project task for system access provisioning.
  tags:
  - sales
  - crm
  - salesforce
  - servicenow
  - microsoft-teams
  - dealer-management
capability:
  exposes:
  - type: mcp
    namespace: dealer-onboarding
    port: 8080
    tools:
    - name: kickoff-dealer-onboarding
      description: Given a Salesforce account ID for a newly activated Toyota dealer, create a Salesforce onboarding case, open a ServiceNow project task for system provisioning, and notify the dealer success team via Teams. Use when new dealership agreements are finalized.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: The Salesforce Account ID of the newly activated dealer.
      steps:
      - name: get-account
        type: call
        call: salesforce-dealer.get-account
        with:
          account_id: '{{account_id}}'
      - name: create-onboard-case
        type: call
        call: salesforce-dealer.create-case
        with:
          account_id: '{{account_id}}'
          subject: 'Dealer Onboarding: {{get-account.name}}'
          category: Dealer_Onboarding
      - name: open-servicenow-task
        type: call
        call: servicenow-dealer.create-incident
        with:
          short_description: 'Dealer System Access: {{get-account.name}}'
          category: dealer_provisioning
          assignment_group: Dealer_IT_Ops
      - name: notify-success
        type: call
        call: teams-dealer.send-message
        with:
          channel: dealer-success-ops
          text: 'Dealer Onboarding Started | {{get-account.name}} | Salesforce Case: {{create-onboard-case.case_number}} | ServiceNow Task: {{open-servicenow-task.number}}'
  consumes:
  - type: http
    namespace: salesforce-dealer
    baseUri: https://toyota.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
    - name: cases
      path: /sobjects/Case
      operations:
      - name: create-case
        method: POST
  - type: http
    namespace: servicenow-dealer
    baseUri: https://toyota.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: teams-dealer
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → salesforce-dealer-onboarding-case-kickoff.yml

Publishes a company update or job spotlight to the Toyota Motor Corporation LinkedIn organization page and posts a confirmation to the talent acquisition Microsoft Teams channel.

naftiko: '0.5'
info:
  label: LinkedIn Employer Brand and Recruitment Post Publisher
  description: Publishes a company update or job spotlight to the Toyota Motor Corporation LinkedIn organization page and posts a confirmation to the talent acquisition Microsoft Teams channel.
  tags:
  - marketing
  - talent-acquisition
  - linkedin
  - microsoft-teams
  - employer-brand
capability:
  exposes:
  - type: mcp
    namespace: employer-brand
    port: 8080
    tools:
    - name: publish-linkedin-post
      description: Publish a LinkedIn organization update for Toyota Motor Corporation — career highlights, innovation news, or job spotlights. Confirm publication to the TA Teams channel. Use for employer brand campaigns and recruitment marketing.
      inputParameters:
      - name: post_text
        in: body
        type: string
        description: Text content for the LinkedIn company update.
      - name: organization_id
        in: body
        type: string
        description: LinkedIn organization URN ID for Toyota Motor Corporation.
      steps:
      - name: publish-post
        type: call
        call: linkedin.create-share
        with:
          organization_id: '{{organization_id}}'
          text: '{{post_text}}'
      - name: confirm-ta
        type: call
        call: teams-emp-brand.send-message
        with:
          channel: talent-acquisition
          text: 'LinkedIn post published | ID: {{publish-post.id}} | Content preview: {{post_text}}'
  consumes:
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: shares
      path: /shares
      operations:
      - name: create-share
        method: POST
  - type: http
    namespace: teams-emp-brand
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → linkedin-employer-brand-and-recruitment-post-publisher.yml

When GitHub Advanced Security detects a high or critical code vulnerability in a Toyota repository, creates a Jira security bug and alerts the security engineering Microsoft Teams channel.

naftiko: '0.5'
info:
  label: GitHub Code Security Alert Escalation
  description: When GitHub Advanced Security detects a high or critical code vulnerability in a Toyota repository, creates a Jira security bug and alerts the security engineering Microsoft Teams channel.
  tags:
  - security
  - github
  - jira
  - microsoft-teams
  - devops
capability:
  exposes:
  - type: mcp
    namespace: security-code-scanning
    port: 8080
    tools:
    - name: escalate-security-alert
      description: Given a GitHub repository and code scanning alert number, retrieve the vulnerability details from GitHub Advanced Security, create a Jira bug in the SEC project, and alert the security engineering Teams channel. Use when GitHub detects high or critical severity code vulnerabilities.
      inputParameters:
      - name: repo_owner
        in: body
        type: string
        description: GitHub organization or repository owner.
      - name: repo_name
        in: body
        type: string
        description: GitHub repository name.
      - name: alert_number
        in: body
        type: integer
        description: GitHub code scanning alert number.
      steps:
      - name: get-alert
        type: call
        call: github-sast.get-code-scanning-alert
        with:
          owner: '{{repo_owner}}'
          repo: '{{repo_name}}'
          alert_number: '{{alert_number}}'
      - name: create-bug
        type: call
        call: jira-sast.create-issue
        with:
          project_key: SEC
          issuetype: Bug
          summary: '[Security] {{get-alert.rule_description}} in {{repo_name}}'
          description: 'Repo: {{repo_owner}}/{{repo_name}}

            Rule: {{get-alert.rule_id}}

            Severity: {{get-alert.severity}}

            File: {{get-alert.location_path}}

            Alert URL: {{get-alert.html_url}}'
      - name: notify-sec
        type: call
        call: teams-sast.send-message
        with:
          channel: security-engineering-alerts
          text: 'Code Scanning Alert | {{repo_name}} | {{get-alert.rule_description}} | Severity: {{get-alert.severity}} | Jira: {{create-bug.key}} | {{get-alert.html_url}}'
  consumes:
  - type: http
    namespace: github-sast
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: code-scanning-alerts
      path: /repos/{{owner}}/{{repo}}/code-scanning/alerts/{{alert_number}}
      inputParameters:
      - name: owner
        in: path
      - name: repo
        in: path
      - name: alert_number
        in: path
      operations:
      - name: get-code-scanning-alert
        method: GET
  - type: http
    namespace: jira-sast
    baseUri: https://toyota.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: teams-sast
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → github-code-security-alert-escalation.yml

Submits an IT infrastructure change request to the ServiceNow Change Advisory Board queue, notifies CAB members via Microsoft Teams, and records the approval outcome for audit purposes.

naftiko: '0.5'
info:
  label: ServiceNow IT Change Request CAB Approval
  description: Submits an IT infrastructure change request to the ServiceNow Change Advisory Board queue, notifies CAB members via Microsoft Teams, and records the approval outcome for audit purposes.
  tags:
  - itsm
  - change-management
  - servicenow
  - microsoft-teams
  - approval
capability:
  exposes:
  - type: mcp
    namespace: itsm-change
    port: 8080
    tools:
    - name: submit-cab-change
      description: Submit a ServiceNow change request to the Change Advisory Board. Provide change description, risk level, and maintenance window. Notifies CAB members via Teams. Use before making any production infrastructure or connected vehicle platform changes.
      inputParameters:
      - name: change_title
        in: body
        type: string
        description: Short description of the proposed change.
      - name: risk_level
        in: body
        type: string
        description: 'Risk level: low, medium, or high.'
      - name: planned_start
        in: body
        type: string
        description: Maintenance window start in ISO 8601 format.
      - name: planned_end
        in: body
        type: string
        description: Maintenance window end in ISO 8601 format.
      steps:
      - name: create-change
        type: call
        call: servicenow-chg.create-change
        with:
          short_description: '{{change_title}}'
          risk: '{{risk_level}}'
          start_date: '{{planned_start}}'
          end_date: '{{planned_end}}'
          state: scheduled
      - name: notify-cab
        type: call
        call: teams-cab.send-message
        with:
          channel: it-change-advisory-board
          text: 'CAB Change Request | {{change_title}} | CR#: {{create-change.number}} | Risk: {{risk_level}} | Window: {{planned_start}} — {{planned_end}} | Approval required.'
  consumes:
  - type: http
    namespace: servicenow-chg
    baseUri: https://toyota.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: change-requests
      path: /table/change_request
      operations:
      - name: create-change
        method: POST
  - type: http
    namespace: teams-cab
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → servicenow-it-change-request-cab-approval.yml

Submits a business travel request in SAP Concur for an employee trip, links it to the SAP cost center, and sends a confirmation to the traveler via Microsoft Teams.

naftiko: '0.5'
info:
  label: SAP Concur Travel Request Submission
  description: Submits a business travel request in SAP Concur for an employee trip, links it to the SAP cost center, and sends a confirmation to the traveler via Microsoft Teams.
  tags:
  - finance
  - travel-management
  - sap-concur
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: finance-travel
    port: 8080
    tools:
    - name: submit-travel-request
      description: Submit a SAP Concur business travel request for a given employee trip. Provide trip name, destination, travel dates, and cost center. Sends a Teams confirmation to the traveler upon successful submission.
      inputParameters:
      - name: trip_name
        in: body
        type: string
        description: Trip name or business purpose.
      - name: destination
        in: body
        type: string
        description: Travel destination city and country.
      - name: start_date
        in: body
        type: string
        description: Trip start date in YYYY-MM-DD format.
      - name: end_date
        in: body
        type: string
        description: Trip end date in YYYY-MM-DD format.
      - name: traveler_email
        in: body
        type: string
        description: Corporate email of the traveler.
      steps:
      - name: submit-request
        type: call
        call: concur.create-travel-request
        with:
          name: '{{trip_name}}'
          destination: '{{destination}}'
          start_date: '{{start_date}}'
          end_date: '{{end_date}}'
      - name: confirm-traveler
        type: call
        call: teams-travel.send-message
        with:
          channel: finance-travel-ops
          text: 'Travel Request Submitted | {{trip_name}} | {{destination}} | {{start_date}} to {{end_date}} | Traveler: {{traveler_email}} | Request ID: {{submit-request.id}}'
  consumes:
  - type: http
    namespace: concur
    baseUri: https://www.concursolutions.com/api/v3.0
    authentication:
      type: bearer
      token: $secrets.concur_token
    resources:
    - name: travel-requests
      path: /travelrequest/requests
      operations:
      - name: create-travel-request
        method: POST
  - type: http
    namespace: teams-travel
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → sap-concur-travel-request-submission.yml

When a GitHub Actions workflow fails on a protected branch, creates a Jira bug for the engineering team, posts a failure alert to the engineering Microsoft Teams channel, and comments on the triggering pull request.

naftiko: '0.5'
info:
  label: GitHub CI/CD Pipeline Failure Orchestration
  description: When a GitHub Actions workflow fails on a protected branch, creates a Jira bug for the engineering team, posts a failure alert to the engineering Microsoft Teams channel, and comments on the triggering pull request.
  tags:
  - devops
  - github
  - jira
  - microsoft-teams
  - ci-cd
capability:
  exposes:
  - type: mcp
    namespace: devops-cicd
    port: 8080
    tools:
    - name: handle-workflow-failure
      description: Given a GitHub repository, workflow run ID, and associated PR number, retrieve failure details, open a Jira bug for the engineering team, comment on the PR with the failure summary, and alert the engineering Teams channel. Use for production-branch CI/CD failure response.
      inputParameters:
      - name: repo_owner
        in: body
        type: string
        description: GitHub organization or owner name.
      - name: repo_name
        in: body
        type: string
        description: GitHub repository name.
      - name: run_id
        in: body
        type: string
        description: The GitHub Actions workflow run ID.
      - name: pr_number
        in: body
        type: integer
        description: The pull request number that triggered the workflow.
      steps:
      - name: get-run
        type: call
        call: github-cicd.get-workflow-run
        with:
          owner: '{{repo_owner}}'
          repo: '{{repo_name}}'
          run_id: '{{run_id}}'
      - name: create-bug
        type: call
        call: jira-cicd.create-issue
        with:
          project_key: ENG
          issuetype: Bug
          summary: '[CI Failure] {{repo_name}} — {{get-run.name}} on {{get-run.head_branch}}'
          description: 'Workflow: {{get-run.name}}

            Branch: {{get-run.head_branch}}

            Commit: {{get-run.head_sha}}

            URL: {{get-run.html_url}}'
      - name: comment-pr
        type: call
        call: github-cicd.add-pr-comment
        with:
          owner: '{{repo_owner}}'
          repo: '{{repo_name}}'
          issue_number: '{{pr_number}}'
          body: 'CI Pipeline failed on run {{run_id}}. Jira bug created: {{create-bug.key}}. Please review {{get-run.html_url}}.'
      - name: notify-team
        type: call
        call: teams-cicd.send-message
        with:
          channel: engineering-ci-failures
          text: 'CI Failure | {{repo_name}} | Workflow: {{get-run.name}} | Branch: {{get-run.head_branch}} | Jira: {{create-bug.key}} | {{get-run.html_url}}'
  consumes:
  - type: http
    namespace: github-cicd
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: workflow-runs
      path: /repos/{{owner}}/{{repo}}/actions/runs/{{run_id}}
      inputParameters:
      - name: owner
        in: path
      - name: repo
        in: path
      - name: run_id
        in: path
      operations:
      - name: get-workflow-run
        method: GET
    - name: pr-comments
      path: /repos/{{owner}}/{{repo}}/issues/{{issue_number}}/comments
      inputParameters:
      - name: owner
        in: path
      - name: repo
        in: path
      - name: issue_number
        in: path
      operations:
      - name: add-pr-comment
        method: POST
  - type: http
    namespace: jira-cicd
    baseUri: https://toyota.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: teams-cicd
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → github-ci-cd-pipeline-failure-orchestration.yml

Provisions a new Azure resource group and virtual network for a project, and logs the provisioning event as a ServiceNow change record for IT governance and audit compliance.

naftiko: '0.5'
info:
  label: Azure Infrastructure Provisioning with ServiceNow Logging
  description: Provisions a new Azure resource group and virtual network for a project, and logs the provisioning event as a ServiceNow change record for IT governance and audit compliance.
  tags:
  - cloud
  - infrastructure
  - azure
  - servicenow
  - provisioning
capability:
  exposes:
  - type: mcp
    namespace: cloud-infra
    port: 8080
    tools:
    - name: provision-azure-environment
      description: Given an Azure subscription ID, resource group name, and region, create the resource group via the Azure Management API and log the provisioning as a closed ServiceNow change record. Use when approved project environments need to be stood up in Azure.
      inputParameters:
      - name: subscription_id
        in: body
        type: string
        description: The Azure subscription ID.
      - name: resource_group_name
        in: body
        type: string
        description: Name for the new Azure resource group.
      - name: location
        in: body
        type: string
        description: Azure region, e.g. japaneast, eastus, westeurope.
      steps:
      - name: create-rg
        type: call
        call: azure-rg.create-resource-group
        with:
          subscription_id: '{{subscription_id}}'
          resource_group_name: '{{resource_group_name}}'
          location: '{{location}}'
      - name: log-change
        type: call
        call: servicenow-rg.create-change
        with:
          short_description: 'Azure RG Provisioned: {{resource_group_name}} in {{location}}'
          category: cloud_provisioning
          state: closed
  consumes:
  - type: http
    namespace: azure-rg
    baseUri: https://management.azure.com
    authentication:
      type: bearer
      token: $secrets.azure_mgmt_token
    resources:
    - name: resource-groups
      path: /subscriptions/{{subscription_id}}/resourcegroups/{{resource_group_name}}
      inputParameters:
      - name: subscription_id
        in: path
      - name: resource_group_name
        in: path
      operations:
      - name: create-resource-group
        method: PUT
  - type: http
    namespace: servicenow-rg
    baseUri: https://toyota.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: change-requests
      path: /table/change_request
      operations:
      - name: create-change
        method: POST
Open in Framework → View in Fleet → azure-infrastructure-provisioning-with-servicenow-logging.yml

Processes a compensation adjustment for a Toyota employee in Workday, updates their base salary, and notifies the HR business partner and line manager via Microsoft Teams.

naftiko: '0.5'
info:
  label: Workday Compensation Change Processing
  description: Processes a compensation adjustment for a Toyota employee in Workday, updates their base salary, and notifies the HR business partner and line manager via Microsoft Teams.
  tags:
  - hr
  - compensation
  - workday
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-compensation
    port: 8080
    tools:
    - name: process-comp-change
      description: Submit a salary change for a Workday employee — update base pay and reason code, then notify the HR business partner and manager via Teams. Use for merit increases, market adjustments, and promotional pay changes across Toyota's global workforce.
      inputParameters:
      - name: workday_employee_id
        in: body
        type: string
        description: The Workday worker ID of the employee receiving the compensation change.
      - name: new_salary
        in: body
        type: number
        description: New annual base salary in local currency.
      - name: effective_date
        in: body
        type: string
        description: Effective date of the change in YYYY-MM-DD format.
      - name: reason_code
        in: body
        type: string
        description: Compensation change reason, e.g. Merit, Promotion, MarketAdjustment.
      steps:
      - name: update-comp
        type: call
        call: workday-comp.update-compensation
        with:
          worker_id: '{{workday_employee_id}}'
          new_salary: '{{new_salary}}'
          effective_date: '{{effective_date}}'
          reason: '{{reason_code}}'
      - name: notify-hrbp
        type: call
        call: teams-comp.send-message
        with:
          channel: hr-total-rewards-ops
          text: 'Compensation Change Processed | Employee: {{workday_employee_id}} | New Salary: {{new_salary}} | Effective: {{effective_date}} | Reason: {{reason_code}} | Transaction: {{update-comp.transaction_id}}'
  consumes:
  - type: http
    namespace: workday-comp
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: compensation
      path: /toyota/workers/{{worker_id}}/compensation
      inputParameters:
      - name: worker_id
        in: path
      operations:
      - name: update-compensation
        method: PUT
  - type: http
    namespace: teams-comp
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → workday-compensation-change-processing.yml

Queries Salesforce for dealer or partner contracts expiring within 90 days, and posts a renewal priority list to the sales operations Microsoft Teams channel for proactive account management.

naftiko: '0.5'
info:
  label: Salesforce Contract Renewal Alert
  description: Queries Salesforce for dealer or partner contracts expiring within 90 days, and posts a renewal priority list to the sales operations Microsoft Teams channel for proactive account management.
  tags:
  - sales
  - crm
  - salesforce
  - microsoft-teams
  - contract-management
capability:
  exposes:
  - type: mcp
    namespace: crm-renewals
    port: 8080
    tools:
    - name: alert-expiring-contracts
      description: Query Salesforce for active contracts expiring within the specified number of days and post a renewal alert to the sales ops Teams channel. Use for proactive dealer and partner contract renewal management across Toyota's distribution network.
      inputParameters:
      - name: days_to_expiry
        in: body
        type: integer
        description: Days ahead to scan for expiring contracts, typically 90.
      steps:
      - name: query-contracts
        type: call
        call: salesforce-cntr.query-expiring
        with:
          days_to_expiry: '{{days_to_expiry}}'
      - name: post-alert
        type: call
        call: teams-sops.send-message
        with:
          channel: sales-ops-contract-alerts
          text: 'Contract Renewal Alert | Expiring in {{days_to_expiry}} days: {{query-contracts.total_size}} contracts | Total Value at Risk: {{query-contracts.total_value}} | Review renewal pipeline.'
  consumes:
  - type: http
    namespace: salesforce-cntr
    baseUri: https://toyota.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: contracts
      path: /query
      inputParameters:
      - name: q
        in: query
      operations:
      - name: query-expiring
        method: GET
  - type: http
    namespace: teams-sops
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → salesforce-contract-renewal-alert.yml

Retrieves a hardware asset record from the ServiceNow CMDB by asset tag, returning model, assigned user, location, and warranty status for IT asset lifecycle management.

naftiko: '0.5'
info:
  label: ServiceNow IT Asset Inventory Lookup
  description: Retrieves a hardware asset record from the ServiceNow CMDB by asset tag, returning model, assigned user, location, and warranty status for IT asset lifecycle management.
  tags:
  - itsm
  - asset-management
  - servicenow
  - cmdb
capability:
  exposes:
  - type: mcp
    namespace: asset-management
    port: 8080
    tools:
    - name: get-asset-record
      description: Look up a ServiceNow CMDB hardware asset by asset tag. Returns model, assigned user, physical location, and warranty expiration. Use for IT refresh planning, hardware audits, and helpdesk support escalations.
      inputParameters:
      - name: asset_tag
        in: body
        type: string
        description: The asset tag or serial number of the hardware item.
      call: servicenow-assets.get-asset
      with:
        asset_tag: '{{asset_tag}}'
      outputParameters:
      - name: display_name
        type: string
        mapping: $.result[0].display_name
      - name: assigned_to
        type: string
        mapping: $.result[0].assigned_to.display_value
      - name: location
        type: string
        mapping: $.result[0].location.display_value
      - name: model
        type: string
        mapping: $.result[0].model_id.display_value
  consumes:
  - type: http
    namespace: servicenow-assets
    baseUri: https://toyota.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: hardware-assets
      path: /table/alm_hardware
      inputParameters:
      - name: asset_tag
        in: query
      operations:
      - name: get-asset
        method: GET
Open in Framework → View in Fleet → servicenow-it-asset-inventory-lookup.yml

Creates a new Salesforce service case for a customer or dealer issue, assigns it to the correct product support queue, and sends a case acknowledgment via Microsoft 365.

naftiko: '0.5'
info:
  label: Salesforce Customer Case Creation and Routing
  description: Creates a new Salesforce service case for a customer or dealer issue, assigns it to the correct product support queue, and sends a case acknowledgment via Microsoft 365.
  tags:
  - customer-support
  - salesforce
  - microsoft-365
  - microsoft-teams
  - case-management
capability:
  exposes:
  - type: mcp
    namespace: customer-support
    port: 8080
    tools:
    - name: create-service-case
      description: Create a Salesforce service case for a customer or Toyota dealer issue, assign it to the correct product support queue based on vehicle category, and send an email acknowledgment to the customer. Use for warranty claims, service escalations, and dealer support tickets.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: The Salesforce Account ID of the customer or dealer.
      - name: subject
        in: body
        type: string
        description: Brief summary of the customer issue.
      - name: description
        in: body
        type: string
        description: Full description of the issue.
      - name: product_category
        in: body
        type: string
        description: Vehicle or product category for queue routing, e.g. Hybrid, Truck, Connected Services.
      - name: customer_email
        in: body
        type: string
        description: Customer email address for acknowledgment.
      steps:
      - name: create-case
        type: call
        call: salesforce-cases.create-case
        with:
          account_id: '{{account_id}}'
          subject: '{{subject}}'
          description: '{{description}}'
          product_category: '{{product_category}}'
      - name: send-ack
        type: call
        call: msgraph-ack.send-email
        with:
          to: '{{customer_email}}'
          subject: Your Toyota Case {{create-case.case_number}} Has Been Received
          body: Thank you for contacting Toyota. Your case number is {{create-case.case_number}}. Our support team will respond within 1 business day.
  consumes:
  - type: http
    namespace: salesforce-cases
    baseUri: https://toyota.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: msgraph-ack
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: user-mail
      path: /users/{{sender_upn}}/sendMail
      inputParameters:
      - name: sender_upn
        in: path
      operations:
      - name: send-email
        method: POST
Open in Framework → View in Fleet → salesforce-customer-case-creation-and-routing.yml

Exports active employee headcount grouped by department and cost center from Workday, providing a real-time workforce snapshot for HR and finance planning across Toyota Motor Corporation entities.

naftiko: '0.5'
info:
  label: Workday Headcount Report by Cost Center
  description: Exports active employee headcount grouped by department and cost center from Workday, providing a real-time workforce snapshot for HR and finance planning across Toyota Motor Corporation entities.
  tags:
  - hr
  - reporting
  - workday
  - headcount
  - finance
capability:
  exposes:
  - type: mcp
    namespace: hr-reporting
    port: 8080
    tools:
    - name: get-headcount-snapshot
      description: Return active employee headcount grouped by department and cost center from Workday for Toyota Motor Corporation. Use for quarterly headcount reviews, budget reconciliation, and workforce planning across global business units.
      call: workday-rpt.get-headcount
      outputParameters:
      - name: employees
        type: array
        mapping: $.Report_Entry
        items:
        - name: employee_id
          type: string
          mapping: $.Employee_ID
        - name: full_name
          type: string
          mapping: $.Worker
        - name: cost_center
          type: string
          mapping: $.Cost_Center
        - name: department
          type: string
          mapping: $.Department
        - name: location
          type: string
          mapping: $.Location
  consumes:
  - type: http
    namespace: workday-rpt
    baseUri: https://wd2-impl-services1.workday.com/ccx/service/customreport2
    authentication:
      type: basic
      username: $secrets.workday_report_user
      password: $secrets.workday_report_password
    resources:
    - name: headcount-report
      path: /toyota/headcount_by_cost_center
      operations:
      - name: get-headcount
        method: GET
        outputRawFormat: json
Open in Framework → View in Fleet → workday-headcount-report-by-cost-center.yml

Initiates a Workday annual performance review cycle for a given management organization, notifies impacted managers via Microsoft Teams, and opens a ServiceNow HR task for HR ops tracking.

naftiko: '0.5'
info:
  label: Workday Performance Review Cycle Kickoff
  description: Initiates a Workday annual performance review cycle for a given management organization, notifies impacted managers via Microsoft Teams, and opens a ServiceNow HR task for HR ops tracking.
  tags:
  - hr
  - performance-management
  - workday
  - servicenow
  - microsoft-teams
capability:
  exposes:
  - type: mcp
    namespace: hr-performance
    port: 8080
    tools:
    - name: kickoff-review-cycle
      description: Start a Workday performance review cycle for a management unit and named review period. Notify managers via Teams and create a ServiceNow HR tracking task. Use at the start of annual or mid-year performance review seasons.
      inputParameters:
      - name: management_unit_id
        in: body
        type: string
        description: Workday management unit (organization) ID for the review cycle.
      - name: review_period
        in: body
        type: string
        description: Human-readable review period label, e.g. 2025 Annual Review.
      steps:
      - name: create-cycle
        type: call
        call: workday-perf.create-review-cycle
        with:
          management_unit_id: '{{management_unit_id}}'
          review_period: '{{review_period}}'
      - name: notify-managers
        type: call
        call: teams-perf.send-message
        with:
          channel: hr-announcements
          text: 'Performance Review Cycle Started | Period: {{review_period}} | Unit: {{management_unit_id}} | Cycle ID: {{create-cycle.cycle_id}} | Submission deadline in 30 days.'
      - name: open-hr-task
        type: call
        call: servicenow-perf.create-incident
        with:
          short_description: Track completion of {{review_period}} performance reviews
          category: hr_performance
          assignment_group: HR_Operations
  consumes:
  - type: http
    namespace: workday-perf
    baseUri: https://wd2-impl-services1.workday.com/ccx/api/v1
    authentication:
      type: bearer
      token: $secrets.workday_token
    resources:
    - name: review-cycles
      path: /toyota/performanceManagement/reviewCycles
      operations:
      - name: create-review-cycle
        method: POST
  - type: http
    namespace: teams-perf
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
  - type: http
    namespace: servicenow-perf
    baseUri: https://toyota.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → workday-performance-review-cycle-kickoff.yml

When a plant operations incident is filed in ServiceNow, enriches it with the affected equipment CI details, escalates to the plant operations group, and posts an alert to the manufacturing operations Microsoft Teams channel.

naftiko: '0.5'
info:
  label: ServiceNow Manufacturing Plant Incident Response
  description: When a plant operations incident is filed in ServiceNow, enriches it with the affected equipment CI details, escalates to the plant operations group, and posts an alert to the manufacturing operations Microsoft Teams channel.
  tags:
  - manufacturing
  - itsm
  - servicenow
  - microsoft-teams
  - incident-response
capability:
  exposes:
  - type: mcp
    namespace: plant-ops
    port: 8080
    tools:
    - name: handle-plant-incident
      description: Given a ServiceNow incident number for a manufacturing plant issue, retrieve incident and CI details, escalate priority, assign to the plant operations group, and post a real-time alert to the manufacturing ops Teams channel. Use for production line or equipment downtime events.
      inputParameters:
      - name: incident_number
        in: body
        type: string
        description: The ServiceNow incident number for the plant operations issue.
      - name: plant_code
        in: body
        type: string
        description: Toyota plant facility code, e.g. TTC_GEORGETOWN or TMMK.
      steps:
      - name: get-incident
        type: call
        call: servicenow-plant.get-incident
        with:
          number: '{{incident_number}}'
      - name: escalate
        type: call
        call: servicenow-plant.update-incident
        with:
          sys_id: '{{get-incident.sys_id}}'
          priority: '1'
          assignment_group: Plant_Operations_{{plant_code}}
      - name: notify-plant-ops
        type: call
        call: teams-plant.send-message
        with:
          channel: manufacturing-ops-alerts
          text: 'PLANT INCIDENT: {{incident_number}} | Plant: {{plant_code}} | Issue: {{get-incident.short_description}} | Priority escalated — plant ops team notified.'
  consumes:
  - type: http
    namespace: servicenow-plant
    baseUri: https://toyota.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      inputParameters:
      - name: number
        in: query
      operations:
      - name: get-incident
        method: GET
    - name: incident-record
      path: /table/incident/{{sys_id}}
      inputParameters:
      - name: sys_id
        in: path
      operations:
      - name: update-incident
        method: PATCH
  - type: http
    namespace: teams-plant
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → servicenow-manufacturing-plant-incident-response.yml

Queries open Salesforce vehicle sales opportunities by region and stage, calculates pipeline value, and posts a weekly sales forecast digest to the regional sales Microsoft Teams channel.

naftiko: '0.5'
info:
  label: Salesforce Vehicle Sales Opportunity Pipeline Digest
  description: Queries open Salesforce vehicle sales opportunities by region and stage, calculates pipeline value, and posts a weekly sales forecast digest to the regional sales Microsoft Teams channel.
  tags:
  - sales
  - crm
  - salesforce
  - microsoft-teams
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: sales-forecast
    port: 8080
    tools:
    - name: digest-sales-pipeline
      description: Query open Salesforce vehicle sales opportunities filtered by sales region and stage. Calculate total pipeline value and post a weekly forecast digest to the regional sales Teams channel. Use for weekly sales reviews and quarterly forecast roll-ups.
      inputParameters:
      - name: sales_region
        in: body
        type: string
        description: The sales region to filter opportunities by, e.g. North America, Europe, Asia Pacific.
      - name: stage_name
        in: body
        type: string
        description: The Salesforce opportunity stage to filter, e.g. Negotiation or Closed Won.
      steps:
      - name: query-opps
        type: call
        call: salesforce-sales.query-opportunities
        with:
          sales_region: '{{sales_region}}'
          stage_name: '{{stage_name}}'
      - name: post-digest
        type: call
        call: teams-sales.send-message
        with:
          channel: regional-sales-forecast
          text: 'Sales Pipeline | Region: {{sales_region}} | Stage: {{stage_name}} | Opportunities: {{query-opps.total_size}} | Total Value: {{query-opps.total_amount}}'
  consumes:
  - type: http
    namespace: salesforce-sales
    baseUri: https://toyota.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunities
      path: /query
      inputParameters:
      - name: q
        in: query
      operations:
      - name: query-opportunities
        method: GET
  - type: http
    namespace: teams-sales
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → salesforce-vehicle-sales-opportunity-pipeline-digest.yml

Retrieves all members of an Azure AD security group, identifies accounts inactive for more than 90 days, and posts a stale access report to the security Microsoft Teams channel for quarterly access review.

naftiko: '0.5'
info:
  label: Azure AD Security Group Access Review
  description: Retrieves all members of an Azure AD security group, identifies accounts inactive for more than 90 days, and posts a stale access report to the security Microsoft Teams channel for quarterly access review.
  tags:
  - security
  - identity
  - azure
  - microsoft-teams
  - access-management
capability:
  exposes:
  - type: mcp
    namespace: security-review
    port: 8080
    tools:
    - name: review-group-access
      description: Retrieve all members of an Azure AD security group and post a membership report to the security Teams channel for quarterly access review. Use for compliance-driven access certifications across Toyota's enterprise application groups.
      inputParameters:
      - name: group_id
        in: body
        type: string
        description: The Azure AD group object ID to review.
      steps:
      - name: get-members
        type: call
        call: msgraph-sec.get-group-members
        with:
          group_id: '{{group_id}}'
      - name: post-review
        type: call
        call: teams-sec.send-message
        with:
          channel: security-access-reviews
          text: 'Access Review | Group: {{group_id}} | Members: {{get-members.total_count}} | Review this list for stale or excess access and remediate within 5 business days.'
  consumes:
  - type: http
    namespace: msgraph-sec
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: group-members
      path: /groups/{{group_id}}/members
      inputParameters:
      - name: group_id
        in: path
      operations:
      - name: get-group-members
        method: GET
  - type: http
    namespace: teams-sec
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → azure-ad-security-group-access-review.yml

When an OTA update is approved, triggers deployment, monitors from Datadog, logs in ServiceNow, and notifies the software team.

naftiko: '0.5'
info:
  label: VW Connected Car OTA Deployment
  description: When an OTA update is approved, triggers deployment, monitors from Datadog, logs in ServiceNow, and notifies the software team.
  tags:
  - automotive
  - datadog
  - servicenow
  - slack
  - ota
capability:
  exposes:
  - type: mcp
    namespace: vw_connected_car_ota
    port: 8080
    tools:
    - name: handle-event
      description: When an OTA update is approved, triggers deployment, monitors from Datadog, logs in ServiceNow, and notifies the software team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[automotive] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: automotive-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-connected-car-ota-deployment.yml

When an autonomous driving incident is reported, creates a Jira investigation, queries telemetry from Snowflake, and alerts safety.

naftiko: '0.5'
info:
  label: VW Autonomous Driving Incident Handler
  description: When an autonomous driving incident is reported, creates a Jira investigation, queries telemetry from Snowflake, and alerts safety.
  tags:
  - automotive
  - snowflake
  - jira
  - slack
  - autonomous
capability:
  exposes:
  - type: mcp
    namespace: vw_autonomous_drivin
    port: 8080
    tools:
    - name: handle-event
      description: When an autonomous driving incident is reported, creates a Jira investigation, queries telemetry from Snowflake, and alerts safety.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[automotive] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: automotive-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-autonomous-driving-incident-handler.yml

When expense anomalies are detected in SAP Concur, queries patterns from Snowflake, creates a Jira audit task, and alerts finance.

naftiko: '0.5'
info:
  label: SAP Concur Expense Anomaly Handler
  description: When expense anomalies are detected in SAP Concur, queries patterns from Snowflake, creates a Jira audit task, and alerts finance.
  tags:
  - finance
  - snowflake
  - sap-concur
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: sap_concur_expense_a
    port: 8080
    tools:
    - name: handle-event
      description: When expense anomalies are detected in SAP Concur, queries patterns from Snowflake, creates a Jira audit task, and alerts finance.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[finance] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: finance-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → sap-concur-expense-anomaly-handler.yml

Validates vehicle configurations against SAP BOM, creates Jira tickets for invalid configs, and notifies the engineering team.

naftiko: '0.5'
info:
  label: VW Vehicle Configuration Validation
  description: Validates vehicle configurations against SAP BOM, creates Jira tickets for invalid configs, and notifies the engineering team.
  tags:
  - automotive
  - sap-s4hana
  - jira
  - slack
  - configuration
capability:
  exposes:
  - type: mcp
    namespace: vw_vehicle_configura
    port: 8080
    tools:
    - name: handle-event
      description: Validates vehicle configurations against SAP BOM, creates Jira tickets for invalid configs, and notifies the engineering team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[automotive] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: automotive-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-vehicle-configuration-validation.yml

Monitors connected car cybersecurity events from Snowflake, creates Jira incidents for threats, and pages the vehicle CERT.

naftiko: '0.5'
info:
  label: VW Connected Car Cybersecurity Monitor
  description: Monitors connected car cybersecurity events from Snowflake, creates Jira incidents for threats, and pages the vehicle CERT.
  tags:
  - security
  - snowflake
  - jira
  - slack
  - cybersecurity
capability:
  exposes:
  - type: mcp
    namespace: vw_connected_car_cyb
    port: 8080
    tools:
    - name: handle-event
      description: Monitors connected car cybersecurity events from Snowflake, creates Jira incidents for threats, and pages the vehicle CERT.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[security] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: security-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-connected-car-cybersecurity-monitor.yml

Queries Snowflake for warranty claim rates by model and component.

naftiko: '0.5'
info:
  label: Snowflake Warranty Claims Query
  description: Queries Snowflake for warranty claim rates by model and component.
  tags:
  - automotive
  - snowflake
  - warranty
capability:
  exposes:
  - type: mcp
    namespace: snowflake_warranty_c
    port: 8080
    tools:
    - name: query-data
      description: Queries Snowflake for warranty claim rates by model and component.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → snowflake-warranty-claims-query.yml

Monitors GitHub Dependabot alerts for critical dependency vulnerabilities in Volkswagen Group software repositories and creates ServiceNow security incidents.

naftiko: '0.5'
info:
  label: GitHub Dependabot Vulnerability Alert Handler
  description: Monitors GitHub Dependabot alerts for critical dependency vulnerabilities in Volkswagen Group software repositories and creates ServiceNow security incidents.
  tags:
  - devops
  - security
  - github
  - servicenow
  - vulnerability
  - dependency-management
capability:
  exposes:
  - type: mcp
    namespace: dependency-security
    port: 8080
    tools:
    - name: handle-dependabot-alert
      description: Given a GitHub Dependabot alert number and repository, fetch alert details and create a ServiceNow security incident for remediation tracking.
      inputParameters:
      - name: repository
        in: body
        type: string
        description: GitHub repository in owner/repo format.
      - name: alert_number
        in: body
        type: integer
        description: The Dependabot alert number.
      steps:
      - name: get-alert
        type: call
        call: github-dep.get-dependabot-alert
        with:
          repo: '{{repository}}'
          alert_number: '{{alert_number}}'
      - name: create-sec-incident
        type: call
        call: servicenow-vuln.create-incident
        with:
          short_description: 'Dependabot: {{get-alert.security_advisory.cve_id}} in {{repository}}'
          description: 'CVE: {{get-alert.security_advisory.cve_id}}. Severity: {{get-alert.security_advisory.severity}}. Package: {{get-alert.dependency.package.name}}.'
          category: security
  consumes:
  - type: http
    namespace: github-dep
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: dependabot-alerts
      path: /repos/{{repo}}/dependabot/alerts/{{alert_number}}
      inputParameters:
      - name: repo
        in: path
      - name: alert_number
        in: path
      operations:
      - name: get-dependabot-alert
        method: GET
  - type: http
    namespace: servicenow-vuln
    baseUri: https://vwgroup.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → github-dependabot-vulnerability-alert-handler.yml

Returns production order status, vehicle model, and delivery date from SAP S/4HANA.

naftiko: '0.5'
info:
  label: SAP Vehicle Production Order Lookup
  description: Returns production order status, vehicle model, and delivery date from SAP S/4HANA.
  tags:
  - automotive
  - sap-s4hana
  - production
capability:
  exposes:
  - type: mcp
    namespace: sap_vehicle_producti
    port: 8080
    tools:
    - name: query-data
      description: Returns production order status, vehicle model, and delivery date from SAP S/4HANA.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → sap-vehicle-production-order-lookup.yml

When a Datadog monitor fires for a Volkswagen manufacturing plant IT system, creates a P1 ServiceNow incident and pages the plant IT manager via Microsoft Teams.

naftiko: '0.5'
info:
  label: Manufacturing Plant IT Alert Escalation
  description: When a Datadog monitor fires for a Volkswagen manufacturing plant IT system, creates a P1 ServiceNow incident and pages the plant IT manager via Microsoft Teams.
  tags:
  - itsm
  - incident-response
  - datadog
  - servicenow
  - microsoft-teams
  - manufacturing
capability:
  exposes:
  - type: mcp
    namespace: plant-it-ops
    port: 8080
    tools:
    - name: handle-plant-it-alert
      description: Given a Datadog alert ID and plant identifier, create a P1 ServiceNow incident and notify the plant IT manager via Teams. Use for critical manufacturing IT system failures.
      inputParameters:
      - name: alert_id
        in: body
        type: string
        description: The Datadog alert or event ID.
      - name: monitor_name
        in: body
        type: string
        description: Name of the Datadog monitor that fired.
      - name: plant_code
        in: body
        type: string
        description: Volkswagen plant code (e.g., WOB for Wolfsburg, ERL for Erlangen).
      - name: severity
        in: body
        type: string
        description: 'Alert severity: critical, high, medium, or low.'
      - name: plant_manager_upn
        in: body
        type: string
        description: UPN of the plant IT manager to notify.
      steps:
      - name: get-alert
        type: call
        call: datadog.get-event
        with:
          event_id: '{{alert_id}}'
      - name: create-incident
        type: call
        call: servicenow-plant.create-incident
        with:
          short_description: '[{{severity}}] {{monitor_name}} — Plant {{plant_code}}'
          description: 'Datadog alert {{alert_id}}: {{get-alert.text}}. Plant: {{plant_code}}.'
          urgency: '1'
          impact: '1'
      - name: notify-plant-manager
        type: call
        call: msteams-plant.send-message
        with:
          recipient_upn: '{{plant_manager_upn}}'
          text: 'P1 IT Incident at Plant {{plant_code}}: {{monitor_name}} ({{severity}}). ServiceNow: {{create-incident.number}}. Immediate attention required.'
  consumes:
  - type: http
    namespace: datadog
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: events
      path: /events/{{event_id}}
      inputParameters:
      - name: event_id
        in: path
      operations:
      - name: get-event
        method: GET
  - type: http
    namespace: servicenow-plant
    baseUri: https://vwgroup.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
  - type: http
    namespace: msteams-plant
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → manufacturing-plant-it-alert-escalation.yml

When a vehicle enters delivery phase, updates Salesforce, sends customer notification, and tracks via logistics platform.

naftiko: '0.5'
info:
  label: VW Customer Delivery Tracking Workflow
  description: When a vehicle enters delivery phase, updates Salesforce, sends customer notification, and tracks via logistics platform.
  tags:
  - automotive
  - salesforce
  - slack
  - delivery
capability:
  exposes:
  - type: mcp
    namespace: vw_customer_delivery
    port: 8080
    tools:
    - name: handle-event
      description: When a vehicle enters delivery phase, updates Salesforce, sends customer notification, and tracks via logistics platform.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[automotive] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: automotive-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-customer-delivery-tracking-workflow.yml

When a supply chain disruption is detected, queries SAP for affected orders, creates Jira mitigation tasks, and alerts procurement.

naftiko: '0.5'
info:
  label: VW Supply Chain Disruption Handler
  description: When a supply chain disruption is detected, queries SAP for affected orders, creates Jira mitigation tasks, and alerts procurement.
  tags:
  - manufacturing
  - sap-s4hana
  - jira
  - slack
  - supply-chain
capability:
  exposes:
  - type: mcp
    namespace: vw_supply_chain_disr
    port: 8080
    tools:
    - name: handle-event
      description: When a supply chain disruption is detected, queries SAP for affected orders, creates Jira mitigation tasks, and alerts procurement.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[manufacturing] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: manufacturing-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-supply-chain-disruption-handler.yml

Returns the status and payment date of a supplier invoice from SAP.

naftiko: '0.5'
info:
  label: SAP Supplier Invoice Status
  description: Returns the status and payment date of a supplier invoice from SAP.
  tags:
  - finance
  - sap-s4hana
  - procurement
capability:
  exposes:
  - type: mcp
    namespace: sap_supplier_invoice
    port: 8080
    tools:
    - name: query-data
      description: Returns the status and payment date of a supplier invoice from SAP.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → sap-supplier-invoice-status.yml

Returns employee details from SAP SuccessFactors by employee ID.

naftiko: '0.5'
info:
  label: SAP SuccessFactors Employee Lookup
  description: Returns employee details from SAP SuccessFactors by employee ID.
  tags:
  - hr
  - sap-successfactors
  - employee-data
capability:
  exposes:
  - type: mcp
    namespace: sap_successfactors_e
    port: 8080
    tools:
    - name: query-data
      description: Returns employee details from SAP SuccessFactors by employee ID.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → sap-successfactors-employee-lookup.yml

When robot maintenance is due, creates SAP maintenance orders, Jira tracking tasks, and notifies the automation team.

naftiko: '0.5'
info:
  label: VW Assembly Robot Maintenance Scheduler
  description: When robot maintenance is due, creates SAP maintenance orders, Jira tracking tasks, and notifies the automation team.
  tags:
  - manufacturing
  - sap-s4hana
  - jira
  - slack
  - automation
capability:
  exposes:
  - type: mcp
    namespace: vw_assembly_robot_ma
    port: 8080
    tools:
    - name: handle-event
      description: When robot maintenance is due, creates SAP maintenance orders, Jira tracking tasks, and notifies the automation team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[manufacturing] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: manufacturing-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-assembly-robot-maintenance-scheduler.yml

Returns current headcount by plant, brand, and cost center from SAP SuccessFactors for workforce planning and finance reporting across Volkswagen Group brands.

naftiko: '0.5'
info:
  label: SAP SuccessFactors Headcount Snapshot
  description: Returns current headcount by plant, brand, and cost center from SAP SuccessFactors for workforce planning and finance reporting across Volkswagen Group brands.
  tags:
  - hr
  - finance
  - reporting
  - sap-successfactors
  - headcount
capability:
  exposes:
  - type: mcp
    namespace: hr-reporting
    port: 8080
    tools:
    - name: get-headcount-snapshot
      description: Returns active employees grouped by brand, plant, and cost center from SuccessFactors. Use for headcount planning and period-end finance reporting across VW Group brands.
      call: successfactors-hc.list-employees
      outputParameters:
      - name: employees
        type: array
        mapping: $.d.results
        items:
        - name: employee_id
          type: string
          mapping: $.userId
        - name: full_name
          type: string
          mapping: $.displayName
        - name: brand
          type: string
          mapping: $.custom01
        - name: plant
          type: string
          mapping: $.location
        - name: cost_center
          type: string
          mapping: $.costCenter
  consumes:
  - type: http
    namespace: successfactors-hc
    baseUri: https://api4.successfactors.com/odata/v2
    authentication:
      type: basic
      username: $secrets.sf_user
      password: $secrets.sf_password
    resources:
    - name: employees
      path: /User
      operations:
      - name: list-employees
        method: GET
Open in Framework → View in Fleet → sap-successfactors-headcount-snapshot.yml

Analyzes production schedule efficiency from Snowflake, creates Jira optimization tasks, and notifies the planning team.

naftiko: '0.5'
info:
  label: VW Production Schedule Optimization
  description: Analyzes production schedule efficiency from Snowflake, creates Jira optimization tasks, and notifies the planning team.
  tags:
  - manufacturing
  - snowflake
  - jira
  - slack
  - planning
capability:
  exposes:
  - type: mcp
    namespace: vw_production_schedu
    port: 8080
    tools:
    - name: handle-event
      description: Analyzes production schedule efficiency from Snowflake, creates Jira optimization tasks, and notifies the planning team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[manufacturing] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: manufacturing-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-production-schedule-optimization.yml

Returns travel expense report details from SAP Concur.

naftiko: '0.5'
info:
  label: SAP Concur Travel Expense Lookup
  description: Returns travel expense report details from SAP Concur.
  tags:
  - finance
  - sap-concur
  - travel
capability:
  exposes:
  - type: mcp
    namespace: sap_concur_travel_ex
    port: 8080
    tools:
    - name: query-data
      description: Returns travel expense report details from SAP Concur.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → sap-concur-travel-expense-lookup.yml

Monitors EV charging network health from Snowflake, creates Jira tickets for outages, and alerts the infrastructure team.

naftiko: '0.5'
info:
  label: VW Charging Network Health Monitor
  description: Monitors EV charging network health from Snowflake, creates Jira tickets for outages, and alerts the infrastructure team.
  tags:
  - automotive
  - snowflake
  - jira
  - slack
  - charging
capability:
  exposes:
  - type: mcp
    namespace: vw_charging_network_
    port: 8080
    tools:
    - name: handle-event
      description: Monitors EV charging network health from Snowflake, creates Jira tickets for outages, and alerts the infrastructure team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[automotive] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: automotive-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-charging-network-health-monitor.yml

Runs telematics data privacy checks from Snowflake, creates Jira compliance tasks for violations, and notifies the DPO.

naftiko: '0.5'
info:
  label: VW Telematics Data Privacy Audit
  description: Runs telematics data privacy checks from Snowflake, creates Jira compliance tasks for violations, and notifies the DPO.
  tags:
  - automotive
  - snowflake
  - jira
  - slack
  - privacy
capability:
  exposes:
  - type: mcp
    namespace: vw_telematics_data_p
    port: 8080
    tools:
    - name: handle-event
      description: Runs telematics data privacy checks from Snowflake, creates Jira compliance tasks for violations, and notifies the DPO.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[automotive] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: automotive-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-telematics-data-privacy-audit.yml

When charging session anomalies are detected, queries Snowflake for patterns, creates a Jira ticket, and alerts the EV team.

naftiko: '0.5'
info:
  label: VW EV Charging Session Anomaly Handler
  description: When charging session anomalies are detected, queries Snowflake for patterns, creates a Jira ticket, and alerts the EV team.
  tags:
  - automotive
  - snowflake
  - jira
  - slack
  - charging
capability:
  exposes:
  - type: mcp
    namespace: vw_ev_charging_sessi
    port: 8080
    tools:
    - name: handle-event
      description: When charging session anomalies are detected, queries Snowflake for patterns, creates a Jira ticket, and alerts the EV team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[automotive] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: automotive-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-ev-charging-session-anomaly-handler.yml

Analyzes manufacturing defect trends from Snowflake, creates Jira quality improvement tasks, and alerts the quality team.

naftiko: '0.5'
info:
  label: VW Manufacturing Defect Trend Analyzer
  description: Analyzes manufacturing defect trends from Snowflake, creates Jira quality improvement tasks, and alerts the quality team.
  tags:
  - manufacturing
  - snowflake
  - jira
  - slack
  - quality
capability:
  exposes:
  - type: mcp
    namespace: vw_manufacturing_def
    port: 8080
    tools:
    - name: handle-event
      description: Analyzes manufacturing defect trends from Snowflake, creates Jira quality improvement tasks, and alerts the quality team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[manufacturing] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: manufacturing-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-manufacturing-defect-trend-analyzer.yml

Generates carbon footprint reports from Snowflake, creates Jira tasks for reduction targets, and notifies sustainability.

naftiko: '0.5'
info:
  label: VW Carbon Footprint Reporting Workflow
  description: Generates carbon footprint reports from Snowflake, creates Jira tasks for reduction targets, and notifies sustainability.
  tags:
  - manufacturing
  - snowflake
  - jira
  - slack
  - sustainability
capability:
  exposes:
  - type: mcp
    namespace: vw_carbon_footprint_
    port: 8080
    tools:
    - name: handle-event
      description: Generates carbon footprint reports from Snowflake, creates Jira tasks for reduction targets, and notifies sustainability.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[manufacturing] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: manufacturing-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-carbon-footprint-reporting-workflow.yml

Returns the refresh status for manufacturing KPI dashboards.

naftiko: '0.5'
info:
  label: Tableau Manufacturing Dashboard Status
  description: Returns the refresh status for manufacturing KPI dashboards.
  tags:
  - analytics
  - tableau
  - manufacturing
capability:
  exposes:
  - type: mcp
    namespace: tableau_manufacturin
    port: 8080
    tools:
    - name: query-data
      description: Returns the refresh status for manufacturing KPI dashboards.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → tableau-manufacturing-dashboard-status.yml

Returns quality notification details and corrective actions from SAP QM.

naftiko: '0.5'
info:
  label: SAP Quality Notification Lookup
  description: Returns quality notification details and corrective actions from SAP QM.
  tags:
  - manufacturing
  - sap-s4hana
  - quality
capability:
  exposes:
  - type: mcp
    namespace: sap_quality_notifica
    port: 8080
    tools:
    - name: query-data
      description: Returns quality notification details and corrective actions from SAP QM.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → sap-quality-notification-lookup.yml

When a vehicle software vulnerability is found, creates a Jira security ticket, queries affected VINs, and alerts the CERT team.

naftiko: '0.5'
info:
  label: VW Vehicle Software Vulnerability Handler
  description: When a vehicle software vulnerability is found, creates a Jira security ticket, queries affected VINs, and alerts the CERT team.
  tags:
  - security
  - snowflake
  - jira
  - slack
  - vehicle-software
capability:
  exposes:
  - type: mcp
    namespace: vw_vehicle_software_
    port: 8080
    tools:
    - name: handle-event
      description: When a vehicle software vulnerability is found, creates a Jira security ticket, queries affected VINs, and alerts the CERT team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[security] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: security-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-vehicle-software-vulnerability-handler.yml

Fetches Microsoft 365 license utilization data via Microsoft Graph and delivers an underutilization report to the IT management Teams channel for cost optimization.

naftiko: '0.5'
info:
  label: Microsoft 365 License Optimization Report
  description: Fetches Microsoft 365 license utilization data via Microsoft Graph and delivers an underutilization report to the IT management Teams channel for cost optimization.
  tags:
  - it-operations
  - microsoft-365
  - cost-optimization
  - microsoft-teams
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: m365-reporting
    port: 8080
    tools:
    - name: report-m365-license-utilization
      description: Fetch Microsoft 365 license activation and usage data from Microsoft Graph and post an underutilization report to the IT management Teams channel.
      inputParameters:
      - name: report_period
        in: body
        type: string
        description: 'Reporting period: D7, D30, D90, or D180.'
      - name: it_channel_id
        in: body
        type: string
        description: Microsoft Teams channel ID for the IT management team.
      steps:
      - name: get-license-data
        type: call
        call: msgraph-m365.get-activations-report
        with:
          period: '{{report_period}}'
      - name: post-report
        type: call
        call: msteams-itops.post-message
        with:
          channel_id: '{{it_channel_id}}'
          text: 'M365 License Report ({{report_period}}): {{get-license-data.assigned_count}} licenses assigned, {{get-license-data.active_count}} active. Review inactive licenses to optimize costs across VW Group.'
  consumes:
  - type: http
    namespace: msgraph-m365
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: activations-report
      path: /reports/getOffice365ActivationsUserDetail(period='{{period}}')
      inputParameters:
      - name: period
        in: path
      operations:
      - name: get-activations-report
        method: GET
  - type: http
    namespace: msteams-itops
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → microsoft-365-license-optimization-report.yml

Tracks vehicle homologation status from Snowflake, creates Jira tasks for pending approvals, and notifies the regulatory team.

naftiko: '0.5'
info:
  label: VW Vehicle Homologation Tracker
  description: Tracks vehicle homologation status from Snowflake, creates Jira tasks for pending approvals, and notifies the regulatory team.
  tags:
  - automotive
  - snowflake
  - jira
  - slack
  - regulatory
capability:
  exposes:
  - type: mcp
    namespace: vw_vehicle_homologat
    port: 8080
    tools:
    - name: handle-event
      description: Tracks vehicle homologation status from Snowflake, creates Jira tasks for pending approvals, and notifies the regulatory team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[automotive] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: automotive-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-vehicle-homologation-tracker.yml

Detects Azure cloud spend anomalies for Volkswagen Group's digital and CARIAD software division accounts and creates ServiceNow FinOps tasks for the cloud team.

naftiko: '0.5'
info:
  label: Azure Cost Anomaly Response
  description: Detects Azure cloud spend anomalies for Volkswagen Group's digital and CARIAD software division accounts and creates ServiceNow FinOps tasks for the cloud team.
  tags:
  - cloud
  - finops
  - azure
  - servicenow
  - cost-management
capability:
  exposes:
  - type: mcp
    namespace: cloud-finops
    port: 8080
    tools:
    - name: handle-azure-cost-anomaly
      description: Given an Azure subscription ID and billing period, detect cost anomalies and create a ServiceNow FinOps task for the cloud engineering team when spend exceeds budget.
      inputParameters:
      - name: subscription_id
        in: body
        type: string
        description: Azure subscription ID to check.
      - name: billing_period
        in: body
        type: string
        description: Billing period in YYYYMM format.
      - name: overage_threshold_pct
        in: body
        type: number
        description: Percent overage above budget that triggers a task.
      steps:
      - name: get-cost-summary
        type: call
        call: azure-cost.get-usage-details
        with:
          subscription_id: '{{subscription_id}}'
          billing_period: '{{billing_period}}'
      - name: create-finops-task
        type: call
        call: servicenow-finops.create-task
        with:
          short_description: 'Azure cost anomaly: subscription {{subscription_id}} — {{billing_period}}'
          description: 'Actual spend: {{get-cost-summary.actual_cost}}. Budget: {{get-cost-summary.budget_amount}}. Overage: {{get-cost-summary.overage_pct}}%.'
          assignment_group: Cloud_FinOps
  consumes:
  - type: http
    namespace: azure-cost
    baseUri: https://management.azure.com/subscriptions/{{subscription_id}}/providers/Microsoft.Consumption
    authentication:
      type: bearer
      token: $secrets.azure_mgmt_token
    resources:
    - name: usage-details
      path: /billingPeriods/{{billing_period}}/providers/Microsoft.Consumption/usageDetails
      inputParameters:
      - name: subscription_id
        in: path
      - name: billing_period
        in: path
      operations:
      - name: get-usage-details
        method: GET
  - type: http
    namespace: servicenow-finops
    baseUri: https://vwgroup.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tasks
      path: /table/sc_task
      operations:
      - name: create-task
        method: POST
Open in Framework → View in Fleet → azure-cost-anomaly-response.yml

Queries Snowflake for vehicle emissions compliance data by model and region.

naftiko: '0.5'
info:
  label: Snowflake Emissions Compliance Query
  description: Queries Snowflake for vehicle emissions compliance data by model and region.
  tags:
  - automotive
  - snowflake
  - emissions
capability:
  exposes:
  - type: mcp
    namespace: snowflake_emissions_
    port: 8080
    tools:
    - name: query-data
      description: Queries Snowflake for vehicle emissions compliance data by model and region.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → snowflake-emissions-compliance-query.yml

When warranty claims spike for a component, queries Snowflake for patterns, creates a Jira engineering ticket, and alerts quality.

naftiko: '0.5'
info:
  label: VW Warranty Claim Investigation
  description: When warranty claims spike for a component, queries Snowflake for patterns, creates a Jira engineering ticket, and alerts quality.
  tags:
  - automotive
  - snowflake
  - jira
  - slack
  - warranty
capability:
  exposes:
  - type: mcp
    namespace: vw_warranty_claim_in
    port: 8080
    tools:
    - name: handle-event
      description: When warranty claims spike for a component, queries Snowflake for patterns, creates a Jira engineering ticket, and alerts quality.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[automotive] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: automotive-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-warranty-claim-investigation.yml

Fetches LinkedIn engagement analytics for Volkswagen Group brand pages and delivers a weekly social media performance digest to the corporate communications Teams channel.

naftiko: '0.5'
info:
  label: LinkedIn Automotive Brand Engagement Digest
  description: Fetches LinkedIn engagement analytics for Volkswagen Group brand pages and delivers a weekly social media performance digest to the corporate communications Teams channel.
  tags:
  - marketing
  - linkedin
  - microsoft-teams
  - social-media
  - reporting
  - brand
capability:
  exposes:
  - type: mcp
    namespace: brand-social-reporting
    port: 8080
    tools:
    - name: digest-brand-engagement
      description: Fetch LinkedIn organization follower and engagement statistics for a given VW Group brand page and post a weekly digest to the corporate communications Teams channel.
      inputParameters:
      - name: organization_id
        in: body
        type: string
        description: LinkedIn organization URN for the VW Group brand page.
      - name: brand_name
        in: body
        type: string
        description: Brand name for the report header (e.g., Volkswagen, Audi, Porsche).
      - name: teams_channel_id
        in: body
        type: string
        description: Teams channel ID for the corporate communications team.
      steps:
      - name: get-analytics
        type: call
        call: linkedin.get-follower-stats
        with:
          organization_id: '{{organization_id}}'
      - name: post-digest
        type: call
        call: msteams-comms.post-message
        with:
          channel_id: '{{teams_channel_id}}'
          text: 'LinkedIn Weekly: {{brand_name}} — Followers: {{get-analytics.followerCount}}, Impressions: {{get-analytics.impressionCount}}, Engagement: {{get-analytics.engagementRate}}%.'
  consumes:
  - type: http
    namespace: linkedin
    baseUri: https://api.linkedin.com/v2
    authentication:
      type: bearer
      token: $secrets.linkedin_token
    resources:
    - name: follower-stats
      path: /organizationalEntityFollowerStatistics
      operations:
      - name: get-follower-stats
        method: GET
  - type: http
    namespace: msteams-comms
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → linkedin-automotive-brand-engagement-digest.yml

Assesses new model launch readiness by querying production, supply chain, and dealer data from Snowflake, creating a Jira scorecard.

naftiko: '0.5'
info:
  label: VW New Model Launch Readiness
  description: Assesses new model launch readiness by querying production, supply chain, and dealer data from Snowflake, creating a Jira scorecard.
  tags:
  - automotive
  - snowflake
  - jira
  - slack
  - launch
capability:
  exposes:
  - type: mcp
    namespace: vw_new_model_launch_
    port: 8080
    tools:
    - name: handle-event
      description: Assesses new model launch readiness by querying production, supply chain, and dealer data from Snowflake, creating a Jira scorecard.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[automotive] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: automotive-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-new-model-launch-readiness.yml

Analyzes dealer inventory from Snowflake, creates SAP transfer orders, creates Jira logistics tasks, and notifies distribution.

naftiko: '0.5'
info:
  label: VW Dealer Inventory Rebalance
  description: Analyzes dealer inventory from Snowflake, creates SAP transfer orders, creates Jira logistics tasks, and notifies distribution.
  tags:
  - automotive
  - snowflake
  - sap-s4hana
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: vw_dealer_inventory_
    port: 8080
    tools:
    - name: handle-event
      description: Analyzes dealer inventory from Snowflake, creates SAP transfer orders, creates Jira logistics tasks, and notifies distribution.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[automotive] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: automotive-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-dealer-inventory-rebalance.yml

When a GitHub Actions pipeline fails on a protected branch in Volkswagen Group's software repositories, creates a Jira bug and alerts the engineering Microsoft Teams channel.

naftiko: '0.5'
info:
  label: GitHub CI/CD Pipeline Failure Handler
  description: When a GitHub Actions pipeline fails on a protected branch in Volkswagen Group's software repositories, creates a Jira bug and alerts the engineering Microsoft Teams channel.
  tags:
  - devops
  - cicd
  - github
  - jira
  - microsoft-teams
  - incident-response
capability:
  exposes:
  - type: mcp
    namespace: devops-cicd
    port: 8080
    tools:
    - name: handle-pipeline-failure
      description: Given a GitHub Actions run ID, repository, and branch, create a Jira bug and post a Teams alert with full failure context.
      inputParameters:
      - name: run_id
        in: body
        type: string
        description: The GitHub Actions workflow run ID.
      - name: repository
        in: body
        type: string
        description: GitHub repository in owner/repo format.
      - name: branch
        in: body
        type: string
        description: The branch where the pipeline failed.
      - name: workflow_name
        in: body
        type: string
        description: The failed workflow name.
      steps:
      - name: get-run
        type: call
        call: github.get-workflow-run
        with:
          repo: '{{repository}}'
          run_id: '{{run_id}}'
      - name: create-bug
        type: call
        call: jira.create-issue
        with:
          project_key: SW
          issuetype: Bug
          summary: '[CI Failure] {{repository}} / {{branch}} — {{workflow_name}}'
          description: 'Run {{run_id}} failed. URL: {{get-run.html_url}}'
      - name: post-teams-alert
        type: call
        call: msteams-eng.post-message
        with:
          channel_id: engineering-alerts
          text: 'Pipeline Failure: {{repository}} | Branch: {{branch}} | Jira: {{create-bug.key}} | Run: {{get-run.html_url}}'
  consumes:
  - type: http
    namespace: github
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: workflow-runs
      path: /repos/{{repo}}/actions/runs/{{run_id}}
      inputParameters:
      - name: repo
        in: path
      - name: run_id
        in: path
      operations:
      - name: get-workflow-run
        method: GET
  - type: http
    namespace: jira
    baseUri: https://vwgroup.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: msteams-eng
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → github-ci-cd-pipeline-failure-handler.yml

Queries Snowflake for vehicle sales metrics by model, region, and time period.

naftiko: '0.5'
info:
  label: Snowflake Vehicle Sales Query
  description: Queries Snowflake for vehicle sales metrics by model, region, and time period.
  tags:
  - analytics
  - snowflake
  - sales
capability:
  exposes:
  - type: mcp
    namespace: snowflake_vehicle_sa
    port: 8080
    tools:
    - name: query-data
      description: Queries Snowflake for vehicle sales metrics by model, region, and time period.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → snowflake-vehicle-sales-query.yml

Returns connected car platform health metrics from Datadog.

naftiko: '0.5'
info:
  label: Datadog Connected Car Health
  description: Returns connected car platform health metrics from Datadog.
  tags:
  - automotive
  - datadog
  - connected-vehicles
capability:
  exposes:
  - type: mcp
    namespace: datadog_connected_ca
    port: 8080
    tools:
    - name: query-data
      description: Returns connected car platform health metrics from Datadog.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → datadog-connected-car-health.yml

Fetches critical GitHub Advanced Security alerts for Volkswagen Group software repositories and creates ServiceNow security incidents for each finding requiring remediation.

naftiko: '0.5'
info:
  label: GitHub Security Scan and Vulnerability Triage
  description: Fetches critical GitHub Advanced Security alerts for Volkswagen Group software repositories and creates ServiceNow security incidents for each finding requiring remediation.
  tags:
  - devops
  - security
  - github
  - servicenow
  - vulnerability
capability:
  exposes:
  - type: mcp
    namespace: security-scan
    port: 8080
    tools:
    - name: triage-security-alerts
      description: Given a GitHub repository and severity level, list code scanning alerts and create ServiceNow security incidents for each. Use after automated security scans complete.
      inputParameters:
      - name: repository
        in: body
        type: string
        description: GitHub repository in owner/repo format.
      - name: severity_filter
        in: body
        type: string
        description: 'Minimum severity to triage: critical or high.'
      steps:
      - name: get-alerts
        type: call
        call: github-sec.list-alerts
        with:
          repo: '{{repository}}'
          severity: '{{severity_filter}}'
      - name: create-incident
        type: call
        call: servicenow-sec.create-incident
        with:
          short_description: 'Security scan findings: {{repository}} ({{severity_filter}})'
          description: GitHub Advanced Security found {{get-alerts.total_count}} {{severity_filter}} alerts. Immediate remediation required.
          category: security
          urgency: '1'
  consumes:
  - type: http
    namespace: github-sec
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: alerts
      path: /repos/{{repo}}/code-scanning/alerts
      inputParameters:
      - name: repo
        in: path
      operations:
      - name: list-alerts
        method: GET
  - type: http
    namespace: servicenow-sec
    baseUri: https://vwgroup.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → github-security-scan-and-vulnerability-triage.yml

When a prototype test phase begins, creates Jira test plan tasks, queries baseline data from Snowflake, and notifies the R&D team.

naftiko: '0.5'
info:
  label: VW Prototype Testing Workflow
  description: When a prototype test phase begins, creates Jira test plan tasks, queries baseline data from Snowflake, and notifies the R&D team.
  tags:
  - automotive
  - snowflake
  - jira
  - slack
  - testing
capability:
  exposes:
  - type: mcp
    namespace: vw_prototype_testing
    port: 8080
    tools:
    - name: handle-event
      description: When a prototype test phase begins, creates Jira test plan tasks, queries baseline data from Snowflake, and notifies the R&D team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[automotive] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: automotive-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-prototype-testing-workflow.yml

Queries Snowflake for dealer inventory levels by model and region.

naftiko: '0.5'
info:
  label: Snowflake Dealer Inventory Query
  description: Queries Snowflake for dealer inventory levels by model and region.
  tags:
  - automotive
  - snowflake
  - inventory
capability:
  exposes:
  - type: mcp
    namespace: snowflake_dealer_inv
    port: 8080
    tools:
    - name: query-data
      description: Queries Snowflake for dealer inventory levels by model and region.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → snowflake-dealer-inventory-query.yml

Queries customer satisfaction data from Snowflake, updates Salesforce dealer records, and posts alerts for low scores.

naftiko: '0.5'
info:
  label: VW Dealer Service Satisfaction Tracker
  description: Queries customer satisfaction data from Snowflake, updates Salesforce dealer records, and posts alerts for low scores.
  tags:
  - automotive
  - snowflake
  - salesforce
  - slack
  - customer-satisfaction
capability:
  exposes:
  - type: mcp
    namespace: vw_dealer_service_sa
    port: 8080
    tools:
    - name: handle-event
      description: Queries customer satisfaction data from Snowflake, updates Salesforce dealer records, and posts alerts for low scores.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[automotive] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: automotive-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-dealer-service-satisfaction-tracker.yml

When infotainment system errors spike, queries telemetry from Snowflake, creates a Jira bug, and alerts the UX team.

naftiko: '0.5'
info:
  label: VW Vehicle Infotainment Error Handler
  description: When infotainment system errors spike, queries telemetry from Snowflake, creates a Jira bug, and alerts the UX team.
  tags:
  - automotive
  - snowflake
  - jira
  - slack
  - infotainment
capability:
  exposes:
  - type: mcp
    namespace: vw_vehicle_infotainm
    port: 8080
    tools:
    - name: handle-event
      description: When infotainment system errors spike, queries telemetry from Snowflake, creates a Jira bug, and alerts the UX team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[automotive] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: automotive-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-vehicle-infotainment-error-handler.yml

Monitors powertrain performance metrics from Snowflake, creates Jira tickets for anomalies, and alerts the powertrain team.

naftiko: '0.5'
info:
  label: VW Powertrain Performance Monitor
  description: Monitors powertrain performance metrics from Snowflake, creates Jira tickets for anomalies, and alerts the powertrain team.
  tags:
  - automotive
  - snowflake
  - jira
  - slack
  - powertrain
capability:
  exposes:
  - type: mcp
    namespace: vw_powertrain_perfor
    port: 8080
    tools:
    - name: handle-event
      description: Monitors powertrain performance metrics from Snowflake, creates Jira tickets for anomalies, and alerts the powertrain team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[automotive] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: automotive-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-powertrain-performance-monitor.yml

When a supplier invoice is submitted in SAP Ariba, validates it against the corresponding SAP S/4HANA purchase order and creates a ServiceNow approval task for the finance team.

naftiko: '0.5'
info:
  label: SAP Ariba Supplier Invoice Processing
  description: When a supplier invoice is submitted in SAP Ariba, validates it against the corresponding SAP S/4HANA purchase order and creates a ServiceNow approval task for the finance team.
  tags:
  - finance
  - procurement
  - sap-ariba
  - sap-s4hana
  - servicenow
  - invoice
  - approval
capability:
  exposes:
  - type: mcp
    namespace: finance-invoicing
    port: 8080
    tools:
    - name: process-supplier-invoice
      description: Given an SAP Ariba invoice ID and PO number, fetch invoice details, validate against the SAP PO, and create a ServiceNow approval task for the finance team.
      inputParameters:
      - name: invoice_id
        in: body
        type: string
        description: The SAP Ariba invoice document ID.
      - name: po_number
        in: body
        type: string
        description: The associated SAP purchase order number.
      - name: approver_group
        in: body
        type: string
        description: ServiceNow assignment group for the approval task.
      steps:
      - name: get-invoice
        type: call
        call: sap-ariba.get-invoice
        with:
          invoice_id: '{{invoice_id}}'
      - name: get-po-details
        type: call
        call: sap-erp.get-po
        with:
          po_number: '{{po_number}}'
      - name: create-approval
        type: call
        call: servicenow-ap.create-task
        with:
          short_description: 'Invoice approval: {{get-invoice.invoice_number}} vs PO {{po_number}}'
          description: 'Invoice amount: {{get-invoice.total_amount}} {{get-invoice.currency}}. PO total: {{get-po-details.total_value}}. Vendor: {{get-po-details.vendor}}.'
          assignment_group: '{{approver_group}}'
  consumes:
  - type: http
    namespace: sap-ariba
    baseUri: https://openapi.ariba.com/api/invoice-management/v1
    authentication:
      type: bearer
      token: $secrets.ariba_token
    resources:
    - name: invoices
      path: /invoices/{{invoice_id}}
      inputParameters:
      - name: invoice_id
        in: path
      operations:
      - name: get-invoice
        method: GET
  - type: http
    namespace: sap-erp
    baseUri: https://vwgroup-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: purchase-orders
      path: /A_PurchaseOrder('{{po_number}}')
      inputParameters:
      - name: po_number
        in: path
      operations:
      - name: get-po
        method: GET
  - type: http
    namespace: servicenow-ap
    baseUri: https://vwgroup.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tasks
      path: /table/sc_task
      operations:
      - name: create-task
        method: POST
Open in Framework → View in Fleet → sap-ariba-supplier-invoice-processing.yml

Runs Snowflake queries on Volkswagen's production data warehouse and delivers a weekly vehicle production output report to the manufacturing leadership Teams channel.

naftiko: '0.5'
info:
  label: Snowflake Vehicle Production Analytics Report
  description: Runs Snowflake queries on Volkswagen's production data warehouse and delivers a weekly vehicle production output report to the manufacturing leadership Teams channel.
  tags:
  - analytics
  - snowflake
  - microsoft-teams
  - reporting
  - manufacturing
  - production
capability:
  exposes:
  - type: mcp
    namespace: production-analytics
    port: 8080
    tools:
    - name: digest-production-output
      description: Run a Snowflake production output query and post a weekly vehicle production digest to the manufacturing leadership Teams channel.
      inputParameters:
      - name: reporting_week
        in: body
        type: string
        description: ISO week in YYYY-Www format (e.g., 2026-W12).
      - name: plant_code
        in: body
        type: string
        description: VW plant code to filter production data (e.g., WOB, ERL, ZWI).
      - name: teams_channel_id
        in: body
        type: string
        description: Teams channel ID for the manufacturing leadership team.
      steps:
      - name: run-production-query
        type: call
        call: snowflake.execute-query
        with:
          statement: SELECT plant_code, brand, SUM(units_produced) as total_units, AVG(quality_rate) as quality_rate, AVG(oee) as oee FROM manufacturing.weekly_production WHERE iso_week = '{{reporting_week}}' AND plant_code = '{{plant_code}}' GROUP BY plant_code, brand
      - name: post-report
        type: call
        call: msteams-mfg.post-message
        with:
          channel_id: '{{teams_channel_id}}'
          text: 'Production Report ({{reporting_week}}, Plant {{plant_code}}): Units produced {{run-production-query.total_units}}, Quality rate {{run-production-query.quality_rate}}%, OEE {{run-production-query.oee}}%.'
  consumes:
  - type: http
    namespace: snowflake
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: execute-query
        method: POST
  - type: http
    namespace: msteams-mfg
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → snowflake-vehicle-production-analytics-report.yml

When range estimation accuracy drops, queries telemetry from Snowflake, creates a Jira calibration ticket, and alerts the EV team.

naftiko: '0.5'
info:
  label: VW EV Range Estimation Calibration
  description: When range estimation accuracy drops, queries telemetry from Snowflake, creates a Jira calibration ticket, and alerts the EV team.
  tags:
  - automotive
  - snowflake
  - jira
  - slack
  - ev
capability:
  exposes:
  - type: mcp
    namespace: vw_ev_range_estimati
    port: 8080
    tools:
    - name: handle-event
      description: When range estimation accuracy drops, queries telemetry from Snowflake, creates a Jira calibration ticket, and alerts the EV team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[automotive] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: automotive-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-ev-range-estimation-calibration.yml

Queries supplier risk scores from Snowflake, updates SAP Ariba risk profiles, creates Jira review tasks, and notifies procurement.

naftiko: '0.5'
info:
  label: SAP Ariba Supplier Risk Assessment
  description: Queries supplier risk scores from Snowflake, updates SAP Ariba risk profiles, creates Jira review tasks, and notifies procurement.
  tags:
  - procurement
  - snowflake
  - sap-ariba
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: sap_ariba_supplier_r
    port: 8080
    tools:
    - name: handle-event
      description: Queries supplier risk scores from Snowflake, updates SAP Ariba risk profiles, creates Jira review tasks, and notifies procurement.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[procurement] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: procurement-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → sap-ariba-supplier-risk-assessment.yml

When a production line stops, creates a SAP maintenance order, opens a Jira ticket, and pages the plant manager via Slack.

naftiko: '0.5'
info:
  label: VW Production Line Stoppage Handler
  description: When a production line stops, creates a SAP maintenance order, opens a Jira ticket, and pages the plant manager via Slack.
  tags:
  - manufacturing
  - sap-s4hana
  - jira
  - slack
  - production
capability:
  exposes:
  - type: mcp
    namespace: vw_production_line_s
    port: 8080
    tools:
    - name: handle-event
      description: When a production line stops, creates a SAP maintenance order, opens a Jira ticket, and pages the plant manager via Slack.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[manufacturing] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: manufacturing-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-production-line-stoppage-handler.yml

Reviews carrier performance from Snowflake, updates SAP vendor ratings, creates Jira tasks, and notifies logistics.

naftiko: '0.5'
info:
  label: VW Logistics Carrier Performance Review
  description: Reviews carrier performance from Snowflake, updates SAP vendor ratings, creates Jira tasks, and notifies logistics.
  tags:
  - manufacturing
  - snowflake
  - sap-s4hana
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: vw_logistics_carrier
    port: 8080
    tools:
    - name: handle-event
      description: Reviews carrier performance from Snowflake, updates SAP vendor ratings, creates Jira tasks, and notifies logistics.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[manufacturing] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: manufacturing-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-logistics-carrier-performance-review.yml

Queries supplier sustainability scores from Snowflake, creates Jira audit tasks, and notifies the sustainability team.

naftiko: '0.5'
info:
  label: VW Supplier Sustainability Audit
  description: Queries supplier sustainability scores from Snowflake, creates Jira audit tasks, and notifies the sustainability team.
  tags:
  - procurement
  - snowflake
  - jira
  - slack
  - sustainability
capability:
  exposes:
  - type: mcp
    namespace: vw_supplier_sustaina
    port: 8080
    tools:
    - name: handle-event
      description: Queries supplier sustainability scores from Snowflake, creates Jira audit tasks, and notifies the sustainability team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[procurement] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: procurement-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-supplier-sustainability-audit.yml

When a supplier delivery is delayed, queries impact from SAP, creates Jira mitigation tasks, and alerts the production team.

naftiko: '0.5'
info:
  label: VW Supplier Delivery Delay Handler
  description: When a supplier delivery is delayed, queries impact from SAP, creates Jira mitigation tasks, and alerts the production team.
  tags:
  - manufacturing
  - sap-s4hana
  - jira
  - slack
  - supply-chain
capability:
  exposes:
  - type: mcp
    namespace: vw_supplier_delivery
    port: 8080
    tools:
    - name: handle-event
      description: When a supplier delivery is delayed, queries impact from SAP, creates Jira mitigation tasks, and alerts the production team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[manufacturing] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: manufacturing-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-supplier-delivery-delay-handler.yml

Uses Anthropic to summarize lengthy vehicle technical specifications and engineering change documents, storing summaries in SharePoint for engineering teams to access.

naftiko: '0.5'
info:
  label: Anthropic Vehicle Technical Document Summarization
  description: Uses Anthropic to summarize lengthy vehicle technical specifications and engineering change documents, storing summaries in SharePoint for engineering teams to access.
  tags:
  - ai
  - document-processing
  - anthropic
  - sharepoint
  - engineering
  - automotive
capability:
  exposes:
  - type: mcp
    namespace: ai-engineering-docs
    port: 8080
    tools:
    - name: summarize-technical-document
      description: Given a vehicle technical specification or engineering change document, use Anthropic to generate a concise technical summary and store it in the engineering SharePoint library.
      inputParameters:
      - name: document_text
        in: body
        type: string
        description: Full text of the technical document to summarize.
      - name: document_title
        in: body
        type: string
        description: Title of the technical document.
      - name: document_type
        in: body
        type: string
        description: Type of document (e.g., technical_spec, engineering_change, homologation_report).
      - name: sharepoint_site_id
        in: body
        type: string
        description: SharePoint site ID for the engineering document library.
      steps:
      - name: summarize
        type: call
        call: anthropic.create-message
        with:
          model: claude-opus-4-5
          max_tokens: 1024
          prompt: 'Summarize this {{document_type}} for automotive engineers. Highlight: 1) Key specifications or changes, 2) Safety or compliance implications, 3) Required actions or approvals. Be concise and technical. Document: {{document_text}}'
      - name: store-summary
        type: call
        call: sharepoint-eng.upload-file
        with:
          site_id: '{{sharepoint_site_id}}'
          folder_path: EngineeringDocs/Summaries/{{document_type}}
          file_name: '{{document_title}}_summary.txt'
          content: '{{summarize.content}}'
  consumes:
  - type: http
    namespace: anthropic
    baseUri: https://api.anthropic.com/v1
    authentication:
      type: apikey
      key: x-api-key
      value: $secrets.anthropic_api_key
      placement: header
    resources:
    - name: messages
      path: /messages
      operations:
      - name: create-message
        method: POST
  - type: http
    namespace: sharepoint-eng
    baseUri: https://graph.microsoft.com/v1.0/sites
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: files
      path: /{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content
      inputParameters:
      - name: site_id
        in: path
      - name: folder_path
        in: path
      - name: file_name
        in: path
      operations:
      - name: upload-file
        method: PUT
Open in Framework → View in Fleet → anthropic-vehicle-technical-document-summarization.yml

Generates dealer performance reports from Snowflake, updates Salesforce records, creates Jira review tasks, and posts to Slack.

naftiko: '0.5'
info:
  label: VW Dealer Performance Review
  description: Generates dealer performance reports from Snowflake, updates Salesforce records, creates Jira review tasks, and posts to Slack.
  tags:
  - automotive
  - snowflake
  - salesforce
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: vw_dealer_performanc
    port: 8080
    tools:
    - name: handle-event
      description: Generates dealer performance reports from Snowflake, updates Salesforce records, creates Jira review tasks, and posts to Slack.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[automotive] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: automotive-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-dealer-performance-review.yml

When a customer complaint is filed, creates a Salesforce case, Jira investigation task, and notifies the customer relations team.

naftiko: '0.5'
info:
  label: VW Customer Complaint Escalation
  description: When a customer complaint is filed, creates a Salesforce case, Jira investigation task, and notifies the customer relations team.
  tags:
  - automotive
  - salesforce
  - jira
  - slack
  - customer-service
capability:
  exposes:
  - type: mcp
    namespace: vw_customer_complain
    port: 8080
    tools:
    - name: handle-event
      description: When a customer complaint is filed, creates a Salesforce case, Jira investigation task, and notifies the customer relations team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[automotive] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: automotive-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-customer-complaint-escalation.yml

Returns maintenance order details and status from SAP Plant Maintenance.

naftiko: '0.5'
info:
  label: SAP Plant Maintenance Order Lookup
  description: Returns maintenance order details and status from SAP Plant Maintenance.
  tags:
  - manufacturing
  - sap-s4hana
  - maintenance
capability:
  exposes:
  - type: mcp
    namespace: sap_plant_maintenanc
    port: 8080
    tools:
    - name: query-data
      description: Returns maintenance order details and status from SAP Plant Maintenance.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → sap-plant-maintenance-order-lookup.yml

Queries SAP Ariba for supplier contracts expiring within 90 days, creates renewal tasks in ServiceNow, and notifies the procurement team via Microsoft Teams.

naftiko: '0.5'
info:
  label: SAP Ariba Contract Expiry Alert
  description: Queries SAP Ariba for supplier contracts expiring within 90 days, creates renewal tasks in ServiceNow, and notifies the procurement team via Microsoft Teams.
  tags:
  - procurement
  - sap-ariba
  - servicenow
  - microsoft-teams
  - contract-management
capability:
  exposes:
  - type: mcp
    namespace: procurement-contracts
    port: 8080
    tools:
    - name: alert-expiring-contracts
      description: Fetch contracts expiring within a given number of days from SAP Ariba, create renewal tasks in ServiceNow, and notify the procurement Teams channel.
      inputParameters:
      - name: days_ahead
        in: body
        type: integer
        description: Days ahead to check for expiring contracts (e.g., 90).
      - name: procurement_channel_id
        in: body
        type: string
        description: Microsoft Teams channel ID for the procurement team.
      steps:
      - name: get-expiring
        type: call
        call: ariba-contracts.list-contracts
        with:
          days_to_expiry: '{{days_ahead}}'
      - name: create-renewal-task
        type: call
        call: servicenow-procurement.create-task
        with:
          short_description: '{{get-expiring.count}} supplier contracts expiring within {{days_ahead}} days'
          description: Contracts due for renewal. Review and initiate renewal process in SAP Ariba.
          assignment_group: Procurement_Team
      - name: notify-procurement
        type: call
        call: msteams-procurement.post-message
        with:
          channel_id: '{{procurement_channel_id}}'
          text: 'Contract Expiry Alert: {{get-expiring.count}} contracts expire within {{days_ahead}} days. ServiceNow task: {{create-renewal-task.number}}.'
  consumes:
  - type: http
    namespace: ariba-contracts
    baseUri: https://openapi.ariba.com/api/contract-management/v1
    authentication:
      type: bearer
      token: $secrets.ariba_token
    resources:
    - name: contracts
      path: /contracts
      operations:
      - name: list-contracts
        method: GET
  - type: http
    namespace: servicenow-procurement
    baseUri: https://vwgroup.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tasks
      path: /table/sc_task
      operations:
      - name: create-task
        method: POST
  - type: http
    namespace: msteams-procurement
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → sap-ariba-contract-expiry-alert.yml

Analyzes production capacity utilization from Snowflake, creates Jira planning tasks for high-utilization plants, and posts to Slack.

naftiko: '0.5'
info:
  label: VW Global Production Capacity Planner
  description: Analyzes production capacity utilization from Snowflake, creates Jira planning tasks for high-utilization plants, and posts to Slack.
  tags:
  - manufacturing
  - snowflake
  - jira
  - slack
  - capacity
capability:
  exposes:
  - type: mcp
    namespace: vw_global_production
    port: 8080
    tools:
    - name: handle-event
      description: Analyzes production capacity utilization from Snowflake, creates Jira planning tasks for high-utilization plants, and posts to Slack.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[manufacturing] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: manufacturing-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-global-production-capacity-planner.yml

Triggers a Tableau workbook refresh for Volkswagen Group's global sales and revenue dashboards and notifies the finance leadership team via Microsoft Teams.

naftiko: '0.5'
info:
  label: Tableau Sales and Revenue Dashboard Refresh
  description: Triggers a Tableau workbook refresh for Volkswagen Group's global sales and revenue dashboards and notifies the finance leadership team via Microsoft Teams.
  tags:
  - analytics
  - tableau
  - microsoft-teams
  - reporting
  - sales
  - dashboards
capability:
  exposes:
  - type: mcp
    namespace: sales-dashboards
    port: 8080
    tools:
    - name: refresh-sales-dashboard
      description: Trigger a Tableau workbook refresh for a global sales dashboard and notify the finance leadership Teams channel upon completion.
      inputParameters:
      - name: workbook_id
        in: body
        type: string
        description: Tableau workbook LUID to refresh.
      - name: site_id
        in: body
        type: string
        description: Tableau server site ID.
      - name: notify_channel_id
        in: body
        type: string
        description: Teams channel ID for finance leadership notification.
      steps:
      - name: trigger-refresh
        type: call
        call: tableau.refresh-workbook
        with:
          site_id: '{{site_id}}'
          workbook_id: '{{workbook_id}}'
      - name: notify-leaders
        type: call
        call: msteams-sales.post-message
        with:
          channel_id: '{{notify_channel_id}}'
          text: 'Sales dashboard refresh complete: workbook {{workbook_id}}. Job {{trigger-refresh.job_id}} — Status: {{trigger-refresh.status}}.'
  consumes:
  - type: http
    namespace: tableau
    baseUri: https://tableau.vwgroup.com/api/2.8
    authentication:
      type: apikey
      key: X-Tableau-Auth
      value: $secrets.tableau_token
      placement: header
    resources:
    - name: workbook-refresh
      path: /sites/{{site_id}}/workbooks/{{workbook_id}}/refresh
      inputParameters:
      - name: site_id
        in: path
      - name: workbook_id
        in: path
      operations:
      - name: refresh-workbook
        method: POST
  - type: http
    namespace: msteams-sales
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → tableau-sales-and-revenue-dashboard-refresh.yml

During financial period close, runs reconciliation checks from Snowflake, creates Jira tasks for discrepancies, and notifies finance.

naftiko: '0.5'
info:
  label: SAP Period Close Reconciliation Workflow
  description: During financial period close, runs reconciliation checks from Snowflake, creates Jira tasks for discrepancies, and notifies finance.
  tags:
  - finance
  - snowflake
  - sap-s4hana
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: sap_period_close_rec
    port: 8080
    tools:
    - name: handle-event
      description: During financial period close, runs reconciliation checks from Snowflake, creates Jira tasks for discrepancies, and notifies finance.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[finance] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: finance-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → sap-period-close-reconciliation-workflow.yml

Queries Snowflake for vehicle telemetry data aggregates by fleet.

naftiko: '0.5'
info:
  label: Snowflake Connected Car Telemetry Query
  description: Queries Snowflake for vehicle telemetry data aggregates by fleet.
  tags:
  - automotive
  - snowflake
  - telemetry
capability:
  exposes:
  - type: mcp
    namespace: snowflake_connected_
    port: 8080
    tools:
    - name: query-data
      description: Queries Snowflake for vehicle telemetry data aggregates by fleet.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → snowflake-connected-car-telemetry-query.yml

When supplier contracts approach renewal, queries performance from Snowflake, creates Jira tasks, and notifies procurement.

naftiko: '0.5'
info:
  label: SAP Ariba Contract Renewal Reminder
  description: When supplier contracts approach renewal, queries performance from Snowflake, creates Jira tasks, and notifies procurement.
  tags:
  - procurement
  - snowflake
  - sap-ariba
  - jira
  - slack
capability:
  exposes:
  - type: mcp
    namespace: sap_ariba_contract_r
    port: 8080
    tools:
    - name: handle-event
      description: When supplier contracts approach renewal, queries performance from Snowflake, creates Jira tasks, and notifies procurement.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[procurement] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: procurement-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → sap-ariba-contract-renewal-reminder.yml

At month end, queries SAP S/4HANA for open AP items and uncleared postings, creates a period-close task in ServiceNow, and notifies the controlling team via Teams.

naftiko: '0.5'
info:
  label: SAP Period-Close Financial Checklist
  description: At month end, queries SAP S/4HANA for open AP items and uncleared postings, creates a period-close task in ServiceNow, and notifies the controlling team via Teams.
  tags:
  - finance
  - period-close
  - sap-s4hana
  - servicenow
  - microsoft-teams
  - reporting
capability:
  exposes:
  - type: mcp
    namespace: finance-period-close
    port: 8080
    tools:
    - name: run-period-close-checklist
      description: Given a fiscal period and SAP company code, fetch open items from SAP S/4HANA FI module, create a period-close ServiceNow task, and notify the controller via Teams.
      inputParameters:
      - name: fiscal_period
        in: body
        type: string
        description: Fiscal period in YYYYMM format.
      - name: company_code
        in: body
        type: string
        description: SAP company code (4-character string, e.g., VW01).
      - name: controller_upn
        in: body
        type: string
        description: UPN of the finance controller to notify.
      steps:
      - name: get-open-items
        type: call
        call: sap-fi.get-open-items
        with:
          fiscal_period: '{{fiscal_period}}'
          company_code: '{{company_code}}'
      - name: create-close-task
        type: call
        call: servicenow-fi.create-task
        with:
          short_description: 'Period close: {{company_code}} — {{fiscal_period}}'
          description: 'Open items: {{get-open-items.count}}, Total amount: {{get-open-items.total_amount}} {{get-open-items.currency}}.'
          assignment_group: Finance_Controllers
      - name: notify-controller
        type: call
        call: msteams-finance.send-message
        with:
          recipient_upn: '{{controller_upn}}'
          text: 'Period close checklist created for {{company_code}} / {{fiscal_period}}. Open items: {{get-open-items.count}}. ServiceNow task: {{create-close-task.number}}.'
  consumes:
  - type: http
    namespace: sap-fi
    baseUri: https://vwgroup-s4.sap.com/sap/opu/odata/sap/API_JOURNALENTRYITEM_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: open-items
      path: /A_JournalEntryItem
      operations:
      - name: get-open-items
        method: GET
  - type: http
    namespace: servicenow-fi
    baseUri: https://vwgroup.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tasks
      path: /table/sc_task
      operations:
      - name: create-task
        method: POST
  - type: http
    namespace: msteams-finance
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: messages
      path: /users/{{recipient_upn}}/sendMail
      inputParameters:
      - name: recipient_upn
        in: path
      operations:
      - name: send-message
        method: POST
Open in Framework → View in Fleet → sap-period-close-financial-checklist.yml

When battery degradation exceeds threshold, queries Snowflake for affected vehicles, creates a Jira engineering ticket, and alerts R&D.

naftiko: '0.5'
info:
  label: VW EV Battery Degradation Alert
  description: When battery degradation exceeds threshold, queries Snowflake for affected vehicles, creates a Jira engineering ticket, and alerts R&D.
  tags:
  - automotive
  - snowflake
  - jira
  - slack
  - ev
capability:
  exposes:
  - type: mcp
    namespace: vw_ev_battery_degrad
    port: 8080
    tools:
    - name: handle-event
      description: When battery degradation exceeds threshold, queries Snowflake for affected vehicles, creates a Jira engineering ticket, and alerts R&D.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[automotive] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: automotive-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-ev-battery-degradation-alert.yml

When a quality gate check fails, blocks the batch in SAP, creates a Jira ticket, and notifies the quality manager.

naftiko: '0.5'
info:
  label: VW Production Quality Gate Workflow
  description: When a quality gate check fails, blocks the batch in SAP, creates a Jira ticket, and notifies the quality manager.
  tags:
  - manufacturing
  - sap-s4hana
  - jira
  - slack
  - quality
capability:
  exposes:
  - type: mcp
    namespace: vw_production_qualit
    port: 8080
    tools:
    - name: handle-event
      description: When a quality gate check fails, blocks the batch in SAP, creates a Jira ticket, and notifies the quality manager.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[manufacturing] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: manufacturing-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-production-quality-gate-workflow.yml

When supplier quality scores drop, queries Snowflake for defect patterns, creates a Jira corrective action, and notifies procurement via Slack.

naftiko: '0.5'
info:
  label: VW Supplier Quality Alert
  description: When supplier quality scores drop, queries Snowflake for defect patterns, creates a Jira corrective action, and notifies procurement via Slack.
  tags:
  - manufacturing
  - snowflake
  - jira
  - slack
  - quality
capability:
  exposes:
  - type: mcp
    namespace: vw_supplier_quality_
    port: 8080
    tools:
    - name: handle-event
      description: When supplier quality scores drop, queries Snowflake for defect patterns, creates a Jira corrective action, and notifies procurement via Slack.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[manufacturing] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: manufacturing-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-supplier-quality-alert.yml

Queries Snowflake for EV charging station utilization and availability.

naftiko: '0.5'
info:
  label: Snowflake Charging Infrastructure Query
  description: Queries Snowflake for EV charging station utilization and availability.
  tags:
  - automotive
  - snowflake
  - charging
capability:
  exposes:
  - type: mcp
    namespace: snowflake_charging_i
    port: 8080
    tools:
    - name: query-data
      description: Queries Snowflake for EV charging station utilization and availability.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → snowflake-charging-infrastructure-query.yml

Creates a SAP Plant Maintenance work order for a reported equipment failure at a Volkswagen plant and links it to the ServiceNow incident for end-to-end tracking.

naftiko: '0.5'
info:
  label: SAP Plant Maintenance Work Order Creation
  description: Creates a SAP Plant Maintenance work order for a reported equipment failure at a Volkswagen plant and links it to the ServiceNow incident for end-to-end tracking.
  tags:
  - asset-management
  - maintenance
  - sap-s4hana
  - servicenow
  - manufacturing
capability:
  exposes:
  - type: mcp
    namespace: plant-maintenance
    port: 8080
    tools:
    - name: create-maintenance-work-order
      description: Given a ServiceNow incident number and SAP equipment ID, create a Plant Maintenance work order in SAP S/4HANA and link it back to the ServiceNow incident.
      inputParameters:
      - name: snow_incident_number
        in: body
        type: string
        description: ServiceNow incident number that triggered the maintenance request.
      - name: equipment_id
        in: body
        type: string
        description: SAP equipment ID for the asset requiring maintenance.
      - name: maintenance_type
        in: body
        type: string
        description: 'Maintenance type: breakdown, preventive, or predictive.'
      - name: plant_code
        in: body
        type: string
        description: SAP plant code where the equipment is located.
      steps:
      - name: create-work-order
        type: call
        call: sap-pm.create-work-order
        with:
          equipment_id: '{{equipment_id}}'
          maintenance_type: '{{maintenance_type}}'
          plant: '{{plant_code}}'
          description: Maintenance triggered by ServiceNow incident {{snow_incident_number}}
      - name: update-incident
        type: call
        call: servicenow-maint.update-incident
        with:
          number: '{{snow_incident_number}}'
          work_notes: SAP PM work order {{create-work-order.order_number}} created for equipment {{equipment_id}} at plant {{plant_code}}.
  consumes:
  - type: http
    namespace: sap-pm
    baseUri: https://vwgroup-s4.sap.com/sap/opu/odata/sap/API_MAINTENANCEORDER_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: maintenance-orders
      path: /MaintenanceOrder
      operations:
      - name: create-work-order
        method: POST
  - type: http
    namespace: servicenow-maint
    baseUri: https://vwgroup.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: update-incident
        method: PATCH
Open in Framework → View in Fleet → sap-plant-maintenance-work-order-creation.yml

Queries Snowflake for over-the-air software update success rates by model.

naftiko: '0.5'
info:
  label: Snowflake OTA Update Metrics
  description: Queries Snowflake for over-the-air software update success rates by model.
  tags:
  - automotive
  - snowflake
  - ota
capability:
  exposes:
  - type: mcp
    namespace: snowflake_ota_update
    port: 8080
    tools:
    - name: query-data
      description: Queries Snowflake for over-the-air software update success rates by model.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → snowflake-ota-update-metrics.yml

When a recall is issued, queries affected VINs from Snowflake, creates Jira tasks for each plant, and notifies the quality team via Slack.

naftiko: '0.5'
info:
  label: VW Vehicle Recall Notification Workflow
  description: When a recall is issued, queries affected VINs from Snowflake, creates Jira tasks for each plant, and notifies the quality team via Slack.
  tags:
  - automotive
  - snowflake
  - jira
  - slack
  - recall
capability:
  exposes:
  - type: mcp
    namespace: vw_vehicle_recall_no
    port: 8080
    tools:
    - name: handle-event
      description: When a recall is issued, queries affected VINs from Snowflake, creates Jira tasks for each plant, and notifies the quality team via Slack.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[automotive] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: automotive-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-vehicle-recall-notification-workflow.yml

Enriches Salesforce dealer or fleet account records with sales performance and service quality scores derived from Snowflake to support account management decisions.

naftiko: '0.5'
info:
  label: Salesforce Account Health Score Enrichment
  description: Enriches Salesforce dealer or fleet account records with sales performance and service quality scores derived from Snowflake to support account management decisions.
  tags:
  - crm
  - salesforce
  - snowflake
  - customer-success
  - data-enrichment
  - dealer-management
capability:
  exposes:
  - type: mcp
    namespace: account-enrichment
    port: 8080
    tools:
    - name: enrich-dealer-health-score
      description: Given a Salesforce account ID and dealer ID, query Snowflake for dealer performance KPIs and update the Salesforce account with health score fields.
      inputParameters:
      - name: account_id
        in: body
        type: string
        description: Salesforce account ID (18-character).
      - name: dealer_id
        in: body
        type: string
        description: VW internal dealer identifier used as Snowflake lookup key.
      steps:
      - name: get-dealer-kpis
        type: call
        call: snowflake-dealer.execute-query
        with:
          statement: SELECT avg_csat_score, units_sold_ytd, service_revenue, complaint_rate FROM sales.dealer_performance WHERE dealer_id = '{{dealer_id}}' AND report_date = CURRENT_DATE
      - name: update-sf-account
        type: call
        call: salesforce-dealers.update-account
        with:
          account_id: '{{account_id}}'
          csat_score__c: '{{get-dealer-kpis.avg_csat_score}}'
          units_ytd__c: '{{get-dealer-kpis.units_sold_ytd}}'
          complaint_rate__c: '{{get-dealer-kpis.complaint_rate}}'
  consumes:
  - type: http
    namespace: snowflake-dealer
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: execute-query
        method: POST
  - type: http
    namespace: salesforce-dealers
    baseUri: https://vwgroup.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: accounts
      path: /sobjects/Account/{{account_id}}
      inputParameters:
      - name: account_id
        in: path
      operations:
      - name: update-account
        method: PATCH
Open in Framework → View in Fleet → salesforce-account-health-score-enrichment.yml

Monitors emissions compliance from Snowflake, creates Jira tasks for out-of-spec vehicles, and notifies the regulatory team.

naftiko: '0.5'
info:
  label: VW Emissions Compliance Monitor
  description: Monitors emissions compliance from Snowflake, creates Jira tasks for out-of-spec vehicles, and notifies the regulatory team.
  tags:
  - automotive
  - snowflake
  - jira
  - slack
  - emissions
capability:
  exposes:
  - type: mcp
    namespace: vw_emissions_complia
    port: 8080
    tools:
    - name: handle-event
      description: Monitors emissions compliance from Snowflake, creates Jira tasks for out-of-spec vehicles, and notifies the regulatory team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[automotive] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: automotive-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-emissions-compliance-monitor.yml

When paint shop defect rates spike, queries Snowflake for root causes, creates a Jira corrective action, and alerts manufacturing.

naftiko: '0.5'
info:
  label: VW Paint Shop Defect Rate Handler
  description: When paint shop defect rates spike, queries Snowflake for root causes, creates a Jira corrective action, and alerts manufacturing.
  tags:
  - manufacturing
  - snowflake
  - jira
  - slack
  - quality
capability:
  exposes:
  - type: mcp
    namespace: vw_paint_shop_defect
    port: 8080
    tools:
    - name: handle-event
      description: When paint shop defect rates spike, queries Snowflake for root causes, creates a Jira corrective action, and alerts manufacturing.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[manufacturing] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: manufacturing-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-paint-shop-defect-rate-handler.yml

When a new hire starts, provisions SAP access, creates Jira onboarding tasks, and sends welcome message via Slack.

naftiko: '0.5'
info:
  label: SAP SuccessFactors Onboarding Workflow
  description: When a new hire starts, provisions SAP access, creates Jira onboarding tasks, and sends welcome message via Slack.
  tags:
  - hr
  - sap-successfactors
  - jira
  - slack
  - onboarding
capability:
  exposes:
  - type: mcp
    namespace: sap_successfactors_o
    port: 8080
    tools:
    - name: handle-event
      description: When a new hire starts, provisions SAP access, creates Jira onboarding tasks, and sends welcome message via Slack.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[hr] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: hr-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → sap-successfactors-onboarding-workflow.yml

When a plant safety incident occurs, creates a ServiceNow record, Jira investigation task, and pages the safety manager.

naftiko: '0.5'
info:
  label: VW Plant Safety Incident Handler
  description: When a plant safety incident occurs, creates a ServiceNow record, Jira investigation task, and pages the safety manager.
  tags:
  - manufacturing
  - servicenow
  - jira
  - slack
  - safety
capability:
  exposes:
  - type: mcp
    namespace: vw_plant_safety_inci
    port: 8080
    tools:
    - name: handle-event
      description: When a plant safety incident occurs, creates a ServiceNow record, Jira investigation task, and pages the safety manager.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[manufacturing] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: manufacturing-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-plant-safety-incident-handler.yml

Assigns mandatory compliance and safety training courses in SAP SuccessFactors Learning for Volkswagen plant workers and office employees, tracking completion via ServiceNow.

naftiko: '0.5'
info:
  label: SAP SuccessFactors Compliance Training Assignment
  description: Assigns mandatory compliance and safety training courses in SAP SuccessFactors Learning for Volkswagen plant workers and office employees, tracking completion via ServiceNow.
  tags:
  - hr
  - learning
  - compliance
  - sap-successfactors
  - servicenow
  - safety
capability:
  exposes:
  - type: mcp
    namespace: hr-learning
    port: 8080
    tools:
    - name: assign-compliance-training
      description: Given a SuccessFactors employee ID and course ID, assign the compliance or safety training course and create a ServiceNow tracking task for the HR team.
      inputParameters:
      - name: employee_id
        in: body
        type: string
        description: SAP SuccessFactors employee ID.
      - name: course_id
        in: body
        type: string
        description: SuccessFactors Learning course ID to assign.
      - name: due_date
        in: body
        type: string
        description: Training completion due date in YYYY-MM-DD format.
      - name: training_category
        in: body
        type: string
        description: Training category (e.g., WorkplaceSafety, DataPrivacy, AntiCorruption).
      steps:
      - name: assign-course
        type: call
        call: successfactors-lms.assign-learning
        with:
          userId: '{{employee_id}}'
          itemID: '{{course_id}}'
          dueDate: '{{due_date}}'
      - name: create-tracking-task
        type: call
        call: servicenow-hr.create-task
        with:
          short_description: '{{training_category}} training assigned: {{course_id}} for {{employee_id}}'
          description: 'Course {{course_id}} assigned to employee {{employee_id}}. Category: {{training_category}}. Due: {{due_date}}.'
          due_date: '{{due_date}}'
  consumes:
  - type: http
    namespace: successfactors-lms
    baseUri: https://api4.successfactors.com/learning/odatav4
    authentication:
      type: basic
      username: $secrets.sf_user
      password: $secrets.sf_password
    resources:
    - name: learning-assignments
      path: /LearningItemAssignment
      operations:
      - name: assign-learning
        method: POST
  - type: http
    namespace: servicenow-hr
    baseUri: https://vwgroup.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tasks
      path: /table/sc_task
      operations:
      - name: create-task
        method: POST
Open in Framework → View in Fleet → sap-successfactors-compliance-training-assignment.yml

Pulls sprint velocity metrics from Jira for Volkswagen's software development teams (CARIAD, VW.OS) and delivers a digest to the product engineering Teams channel.

naftiko: '0.5'
info:
  label: Jira Agile Sprint Velocity Digest
  description: Pulls sprint velocity metrics from Jira for Volkswagen's software development teams (CARIAD, VW.OS) and delivers a digest to the product engineering Teams channel.
  tags:
  - devops
  - jira
  - microsoft-teams
  - reporting
  - agile
  - cariad
capability:
  exposes:
  - type: mcp
    namespace: agile-reporting
    port: 8080
    tools:
    - name: digest-sprint-velocity
      description: Given a Jira board ID and sprint ID, fetch sprint completion metrics and post a velocity digest to the product engineering Teams channel. Use at sprint close.
      inputParameters:
      - name: board_id
        in: body
        type: string
        description: Jira board ID.
      - name: sprint_id
        in: body
        type: string
        description: Jira sprint ID to report on.
      - name: teams_channel_id
        in: body
        type: string
        description: Microsoft Teams channel ID for the sprint digest.
      steps:
      - name: get-sprint
        type: call
        call: jira.get-sprint
        with:
          board_id: '{{board_id}}'
          sprint_id: '{{sprint_id}}'
      - name: post-digest
        type: call
        call: msteams-product.post-message
        with:
          channel_id: '{{teams_channel_id}}'
          text: 'Sprint Digest: {{get-sprint.name}}. Done: {{get-sprint.issues_done}}, Incomplete: {{get-sprint.issues_not_done}}, Velocity: {{get-sprint.story_points_completed}} pts.'
  consumes:
  - type: http
    namespace: jira
    baseUri: https://vwgroup.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_token
    resources:
    - name: sprints
      path: /board/{{board_id}}/sprint/{{sprint_id}}
      inputParameters:
      - name: board_id
        in: path
      - name: sprint_id
        in: path
      operations:
      - name: get-sprint
        method: GET
  - type: http
    namespace: msteams-product
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → jira-agile-sprint-velocity-digest.yml

Queries Snowflake for electric vehicle battery performance and degradation metrics.

naftiko: '0.5'
info:
  label: Snowflake EV Battery Metrics Query
  description: Queries Snowflake for electric vehicle battery performance and degradation metrics.
  tags:
  - automotive
  - snowflake
  - ev
capability:
  exposes:
  - type: mcp
    namespace: snowflake_ev_battery
    port: 8080
    tools:
    - name: query-data
      description: Queries Snowflake for electric vehicle battery performance and degradation metrics.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → snowflake-ev-battery-metrics-query.yml

Generates parts demand forecasts from Snowflake, creates SAP purchase requisitions, and notifies the parts logistics team.

naftiko: '0.5'
info:
  label: VW Aftermarket Parts Demand Forecast
  description: Generates parts demand forecasts from Snowflake, creates SAP purchase requisitions, and notifies the parts logistics team.
  tags:
  - automotive
  - snowflake
  - sap-s4hana
  - slack
  - parts
capability:
  exposes:
  - type: mcp
    namespace: vw_aftermarket_parts
    port: 8080
    tools:
    - name: handle-event
      description: Generates parts demand forecasts from Snowflake, creates SAP purchase requisitions, and notifies the parts logistics team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[automotive] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: automotive-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-aftermarket-parts-demand-forecast.yml

Creates and routes ServiceNow change requests for planned software releases and platform changes at Volkswagen Group through the standard CAB approval workflow.

naftiko: '0.5'
info:
  label: ServiceNow Change Management for Software Releases
  description: Creates and routes ServiceNow change requests for planned software releases and platform changes at Volkswagen Group through the standard CAB approval workflow.
  tags:
  - itsm
  - change-management
  - servicenow
  - release-management
  - approval
capability:
  exposes:
  - type: mcp
    namespace: change-mgmt
    port: 8080
    tools:
    - name: submit-software-change-request
      description: Given a change description, risk level, and maintenance window, create a ServiceNow change request for a software release and assign it to the appropriate CAB group.
      inputParameters:
      - name: change_description
        in: body
        type: string
        description: Description of the proposed software change or release.
      - name: risk_level
        in: body
        type: string
        description: 'Change risk level: low, medium, high, or critical.'
      - name: scheduled_start
        in: body
        type: string
        description: Planned start datetime in ISO 8601 format.
      - name: scheduled_end
        in: body
        type: string
        description: Planned end datetime in ISO 8601 format.
      - name: affected_system
        in: body
        type: string
        description: Name of the affected software system or platform.
      call: servicenow-change.create-change-request
      with:
        short_description: '{{change_description}}'
        risk: '{{risk_level}}'
        start_date: '{{scheduled_start}}'
        end_date: '{{scheduled_end}}'
        cmdb_ci: '{{affected_system}}'
      outputParameters:
      - name: change_number
        type: string
        mapping: $.result.number
  consumes:
  - type: http
    namespace: servicenow-change
    baseUri: https://vwgroup.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: change-requests
      path: /table/change_request
      operations:
      - name: create-change-request
        method: POST
Open in Framework → View in Fleet → servicenow-change-management-for-software-releases.yml

Syncs vehicle digital twin data from Snowflake telemetry, creates Jira tasks for calibration issues, and notifies engineering.

naftiko: '0.5'
info:
  label: VW Vehicle Digital Twin Sync
  description: Syncs vehicle digital twin data from Snowflake telemetry, creates Jira tasks for calibration issues, and notifies engineering.
  tags:
  - automotive
  - snowflake
  - jira
  - slack
  - digital-twin
capability:
  exposes:
  - type: mcp
    namespace: vw_vehicle_digital_t
    port: 8080
    tools:
    - name: handle-event
      description: Syncs vehicle digital twin data from Snowflake telemetry, creates Jira tasks for calibration issues, and notifies engineering.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[automotive] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: automotive-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-vehicle-digital-twin-sync.yml

Queries Snowflake for autonomous driving feature usage and safety metrics.

naftiko: '0.5'
info:
  label: Snowflake Autonomous Driving Metrics
  description: Queries Snowflake for autonomous driving feature usage and safety metrics.
  tags:
  - automotive
  - snowflake
  - autonomous
capability:
  exposes:
  - type: mcp
    namespace: snowflake_autonomous
    port: 8080
    tools:
    - name: query-data
      description: Queries Snowflake for autonomous driving feature usage and safety metrics.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → snowflake-autonomous-driving-metrics.yml

On a successful GitHub release for Volkswagen Group software, generates formatted release notes via Anthropic, publishes to Teams, and updates the ServiceNow CMDB.

naftiko: '0.5'
info:
  label: GitHub Release Notes and CMDB Update
  description: On a successful GitHub release for Volkswagen Group software, generates formatted release notes via Anthropic, publishes to Teams, and updates the ServiceNow CMDB.
  tags:
  - devops
  - release-management
  - github
  - anthropic
  - microsoft-teams
  - servicenow
capability:
  exposes:
  - type: mcp
    namespace: release-management
    port: 8080
    tools:
    - name: publish-release-notes
      description: Given a GitHub release tag and repository, generate release notes via Anthropic, post to the Teams engineering channel, and update the ServiceNow CMDB CI record.
      inputParameters:
      - name: repository
        in: body
        type: string
        description: GitHub repository in owner/repo format.
      - name: release_tag
        in: body
        type: string
        description: The GitHub release tag (e.g., v2.5.0).
      - name: teams_channel_id
        in: body
        type: string
        description: Microsoft Teams channel ID for release notes.
      - name: cmdb_ci_id
        in: body
        type: string
        description: ServiceNow CMDB CI sys_id to update.
      steps:
      - name: get-release
        type: call
        call: github-release.get-release
        with:
          repo: '{{repository}}'
          tag: '{{release_tag}}'
      - name: format-notes
        type: call
        call: anthropic-notes.create-message
        with:
          model: claude-opus-4-5
          max_tokens: 512
          prompt: 'Format these GitHub release notes for automotive software engineers. Highlight safety-critical changes prominently. Use bullet points. Notes: {{get-release.body}}'
      - name: post-to-teams
        type: call
        call: msteams-release.post-message
        with:
          channel_id: '{{teams_channel_id}}'
          text: 'Release {{release_tag}} for {{repository}}: {{format-notes.content}}'
      - name: update-cmdb
        type: call
        call: servicenow-cmdb.update-ci
        with:
          sys_id: '{{cmdb_ci_id}}'
          version: '{{release_tag}}'
  consumes:
  - type: http
    namespace: github-release
    baseUri: https://api.github.com
    authentication:
      type: bearer
      token: $secrets.github_token
    resources:
    - name: releases
      path: /repos/{{repo}}/releases/tags/{{tag}}
      inputParameters:
      - name: repo
        in: path
      - name: tag
        in: path
      operations:
      - name: get-release
        method: GET
  - type: http
    namespace: anthropic-notes
    baseUri: https://api.anthropic.com/v1
    authentication:
      type: apikey
      key: x-api-key
      value: $secrets.anthropic_api_key
      placement: header
    resources:
    - name: messages
      path: /messages
      operations:
      - name: create-message
        method: POST
  - type: http
    namespace: msteams-release
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
  - type: http
    namespace: servicenow-cmdb
    baseUri: https://vwgroup.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: cmdb-ci
      path: /table/cmdb_ci_appl/{{sys_id}}
      inputParameters:
      - name: sys_id
        in: path
      operations:
      - name: update-ci
        method: PATCH
Open in Framework → View in Fleet → github-release-notes-and-cmdb-update.yml

When crash test results are submitted, queries historical data from Snowflake, creates Jira engineering tasks, and notifies safety.

naftiko: '0.5'
info:
  label: VW Crash Test Data Analysis Workflow
  description: When crash test results are submitted, queries historical data from Snowflake, creates Jira engineering tasks, and notifies safety.
  tags:
  - automotive
  - snowflake
  - jira
  - slack
  - safety
capability:
  exposes:
  - type: mcp
    namespace: vw_crash_test_data_a
    port: 8080
    tools:
    - name: handle-event
      description: When crash test results are submitted, queries historical data from Snowflake, creates Jira engineering tasks, and notifies safety.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[automotive] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: automotive-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-crash-test-data-analysis-workflow.yml

When a Salesforce dealer opportunity reaches Closed Won for fleet or corporate vehicle sales, creates an order record in SAP S/4HANA and notifies the dealer team via Teams.

naftiko: '0.5'
info:
  label: Salesforce Dealer Opportunity Management
  description: When a Salesforce dealer opportunity reaches Closed Won for fleet or corporate vehicle sales, creates an order record in SAP S/4HANA and notifies the dealer team via Teams.
  tags:
  - crm
  - sales
  - salesforce
  - sap-s4hana
  - microsoft-teams
  - dealer-management
capability:
  exposes:
  - type: mcp
    namespace: dealer-sales
    port: 8080
    tools:
    - name: sync-dealer-opportunity
      description: Given a Salesforce opportunity ID for a won fleet or dealer deal, fetch details, create a sales order in SAP S/4HANA, and notify the dealer channel in Teams.
      inputParameters:
      - name: opportunity_id
        in: body
        type: string
        description: The Salesforce opportunity record ID (18-character).
      - name: dealer_channel_id
        in: body
        type: string
        description: Microsoft Teams channel ID for the dealer management team.
      steps:
      - name: get-opportunity
        type: call
        call: salesforce.get-opportunity
        with:
          opportunity_id: '{{opportunity_id}}'
      - name: create-sales-order
        type: call
        call: sap-sales.create-sales-order
        with:
          customer_id: '{{get-opportunity.AccountId}}'
          description: '{{get-opportunity.Name}}'
          value: '{{get-opportunity.Amount}}'
          currency: '{{get-opportunity.CurrencyIsoCode}}'
      - name: notify-dealer-team
        type: call
        call: msteams-dealer.post-message
        with:
          channel_id: '{{dealer_channel_id}}'
          text: 'Dealer deal won: {{get-opportunity.Name}} ({{get-opportunity.Amount}} {{get-opportunity.CurrencyIsoCode}}). SAP Sales Order: {{create-sales-order.order_number}}.'
  consumes:
  - type: http
    namespace: salesforce
    baseUri: https://vwgroup.my.salesforce.com/services/data/v58.0
    authentication:
      type: bearer
      token: $secrets.salesforce_token
    resources:
    - name: opportunities
      path: /sobjects/Opportunity/{{opportunity_id}}
      inputParameters:
      - name: opportunity_id
        in: path
      operations:
      - name: get-opportunity
        method: GET
  - type: http
    namespace: sap-sales
    baseUri: https://vwgroup-s4.sap.com/sap/opu/odata/sap/API_SALES_ORDER_SRV
    authentication:
      type: basic
      username: $secrets.sap_user
      password: $secrets.sap_password
    resources:
    - name: sales-orders
      path: /A_SalesOrder
      operations:
      - name: create-sales-order
        method: POST
  - type: http
    namespace: msteams-dealer
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → salesforce-dealer-opportunity-management.yml

Tracks battery recycling metrics from Snowflake, creates Jira tasks for compliance, and notifies the sustainability team.

naftiko: '0.5'
info:
  label: VW Battery Recycling Tracking Workflow
  description: Tracks battery recycling metrics from Snowflake, creates Jira tasks for compliance, and notifies the sustainability team.
  tags:
  - automotive
  - snowflake
  - jira
  - slack
  - recycling
capability:
  exposes:
  - type: mcp
    namespace: vw_battery_recycling
    port: 8080
    tools:
    - name: handle-event
      description: Tracks battery recycling metrics from Snowflake, creates Jira tasks for compliance, and notifies the sustainability team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[automotive] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: automotive-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-battery-recycling-tracking-workflow.yml

When a Snowflake supply chain analytics query detects a supplier delivery disruption risk, creates a ServiceNow task and notifies the supply chain management team via Teams.

naftiko: '0.5'
info:
  label: Supply Chain Disruption Alert and Response
  description: When a Snowflake supply chain analytics query detects a supplier delivery disruption risk, creates a ServiceNow task and notifies the supply chain management team via Teams.
  tags:
  - supply-chain
  - snowflake
  - servicenow
  - microsoft-teams
  - manufacturing
  - risk-management
capability:
  exposes:
  - type: mcp
    namespace: supply-chain-risk
    port: 8080
    tools:
    - name: handle-supply-chain-disruption
      description: Given a supplier ID and part number, query Snowflake for delivery risk indicators and create a ServiceNow task with Teams notification for the supply chain team when risk exceeds threshold.
      inputParameters:
      - name: supplier_id
        in: body
        type: string
        description: VW Group supplier identifier.
      - name: part_number
        in: body
        type: string
        description: Vehicle part number at risk of supply disruption.
      - name: risk_threshold
        in: body
        type: number
        description: Risk score threshold above which a task is created (0-100).
      - name: sc_channel_id
        in: body
        type: string
        description: Microsoft Teams channel ID for the supply chain management team.
      steps:
      - name: get-supply-risk
        type: call
        call: snowflake-sc.execute-query
        with:
          statement: SELECT supplier_name, risk_score, days_of_stock, lead_time_deviation FROM supply_chain.supplier_risk WHERE supplier_id = '{{supplier_id}}' AND part_number = '{{part_number}}'
      - name: create-sc-task
        type: call
        call: servicenow-sc.create-task
        with:
          short_description: 'Supply chain risk: part {{part_number}} from supplier {{supplier_id}}'
          description: 'Risk score: {{get-supply-risk.risk_score}}, Days of stock: {{get-supply-risk.days_of_stock}}, Lead time deviation: {{get-supply-risk.lead_time_deviation}} days. Supplier: {{get-supply-risk.supplier_name}}.'
          assignment_group: Supply_Chain_Management
      - name: notify-sc-team
        type: call
        call: msteams-sc.post-message
        with:
          channel_id: '{{sc_channel_id}}'
          text: 'Supply Chain Alert: Part {{part_number}} from {{get-supply-risk.supplier_name}} has risk score {{get-supply-risk.risk_score}} ({{get-supply-risk.days_of_stock}} days of stock). ServiceNow task: {{create-sc-task.number}}.'
  consumes:
  - type: http
    namespace: snowflake-sc
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: execute-query
        method: POST
  - type: http
    namespace: servicenow-sc
    baseUri: https://vwgroup.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: tasks
      path: /table/sc_task
      operations:
      - name: create-task
        method: POST
  - type: http
    namespace: msteams-sc
    baseUri: https://graph.microsoft.com/v1.0
    authentication:
      type: bearer
      token: $secrets.msgraph_token
    resources:
    - name: channel-messages
      path: /teams/{{team_id}}/channels/{{channel_id}}/messages
      inputParameters:
      - name: team_id
        in: path
      - name: channel_id
        in: path
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → supply-chain-disruption-alert-and-response.yml

Monitors Datadog metrics for Volkswagen's over-the-air (OTA) vehicle software update infrastructure and creates ServiceNow incidents when update rollout failure rates exceed thresholds.

naftiko: '0.5'
info:
  label: Datadog Vehicle Software OTA Update Monitor
  description: Monitors Datadog metrics for Volkswagen's over-the-air (OTA) vehicle software update infrastructure and creates ServiceNow incidents when update rollout failure rates exceed thresholds.
  tags:
  - observability
  - datadog
  - servicenow
  - ota
  - automotive
  - software-update
capability:
  exposes:
  - type: mcp
    namespace: ota-monitoring
    port: 8080
    tools:
    - name: monitor-ota-rollout-health"
      description: Given a Datadog monitor ID and OTA rollout ID, fetch rollout failure rate metrics and create a ServiceNow incident if the failure rate exceeds the defined threshold.
      inputParameters:
      - name: monitor_id
        in: body
        type: string
        description: Datadog monitor ID tracking OTA rollout health.
      - name: rollout_id
        in: body
        type: string
        description: OTA software update rollout identifier.
      - name: failure_threshold_pct
        in: body
        type: number
        description: Acceptable failure rate percentage threshold (e.g., 2.0 for 2%).
      steps:
      - name: get-monitor-status
        type: call
        call: datadog-ota.get-monitor
        with:
          monitor_id: '{{monitor_id}}'
      - name: create-incident
        type: call
        call: servicenow-ota.create-incident
        with:
          short_description: 'OTA rollout failure: {{rollout_id}} exceeded {{failure_threshold_pct}}% threshold'
          description: Datadog monitor {{monitor_id}} detected OTA rollout {{rollout_id}} failure rate above threshold. Rollout may need to be paused.
          category: software_update
          urgency: '1'
  consumes:
  - type: http
    namespace: datadog-ota
    baseUri: https://api.datadoghq.com/api/v1
    authentication:
      type: apikey
      key: DD-API-KEY
      value: $secrets.datadog_api_key
      placement: header
    resources:
    - name: monitors
      path: /monitor/{{monitor_id}}
      inputParameters:
      - name: monitor_id
        in: path
      operations:
      - name: get-monitor
        method: GET
  - type: http
    namespace: servicenow-ota
    baseUri: https://vwgroup.service-now.com/api/now
    authentication:
      type: basic
      username: $secrets.servicenow_user
      password: $secrets.servicenow_password
    resources:
    - name: incidents
      path: /table/incident
      operations:
      - name: create-incident
        method: POST
Open in Framework → View in Fleet → datadog-vehicle-software-ota-update-monitor.yml

Generates fleet health digests from Snowflake telemetry, updates Salesforce fleet records, and posts summaries to Slack.

naftiko: '0.5'
info:
  label: VW Fleet Management Health Digest
  description: Generates fleet health digests from Snowflake telemetry, updates Salesforce fleet records, and posts summaries to Slack.
  tags:
  - automotive
  - snowflake
  - salesforce
  - slack
  - fleet
capability:
  exposes:
  - type: mcp
    namespace: vw_fleet_management_
    port: 8080
    tools:
    - name: handle-event
      description: Generates fleet health digests from Snowflake telemetry, updates Salesforce fleet records, and posts summaries to Slack.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[automotive] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: automotive-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-fleet-management-health-digest.yml

Tracks dealership staff training compliance from Snowflake, creates Jira tasks for non-compliant dealers, and notifies the training team.

naftiko: '0.5'
info:
  label: VW Dealership Training Compliance
  description: Tracks dealership staff training compliance from Snowflake, creates Jira tasks for non-compliant dealers, and notifies the training team.
  tags:
  - automotive
  - snowflake
  - jira
  - slack
  - training
capability:
  exposes:
  - type: mcp
    namespace: vw_dealership_traini
    port: 8080
    tools:
    - name: handle-event
      description: Tracks dealership staff training compliance from Snowflake, creates Jira tasks for non-compliant dealers, and notifies the training team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[automotive] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: automotive-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-dealership-training-compliance.yml

Queries Snowflake for production yield rates by plant and assembly line.

naftiko: '0.5'
info:
  label: Snowflake Production Yield Query
  description: Queries Snowflake for production yield rates by plant and assembly line.
  tags:
  - manufacturing
  - snowflake
  - production
capability:
  exposes:
  - type: mcp
    namespace: snowflake_production
    port: 8080
    tools:
    - name: query-data
      description: Queries Snowflake for production yield rates by plant and assembly line.
      inputParameters:
      - name: query_param
        in: body
        type: string
        description: The query parameter.
      call: snowflake-api.run-query
      with:
        query_param: '{{query_param}}'
      outputParameters:
      - name: results
        type: object
        mapping: $.data
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
Open in Framework → View in Fleet → snowflake-production-yield-query.yml

When plant energy consumption exceeds targets, queries Snowflake for details, creates a Jira optimization task, and alerts operations.

naftiko: '0.5'
info:
  label: VW Plant Energy Consumption Alert
  description: When plant energy consumption exceeds targets, queries Snowflake for details, creates a Jira optimization task, and alerts operations.
  tags:
  - manufacturing
  - snowflake
  - jira
  - slack
  - sustainability
capability:
  exposes:
  - type: mcp
    namespace: vw_plant_energy_cons
    port: 8080
    tools:
    - name: handle-event
      description: When plant energy consumption exceeds targets, queries Snowflake for details, creates a Jira optimization task, and alerts operations.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[manufacturing] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: manufacturing-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-plant-energy-consumption-alert.yml

When a vehicle software release is approved, deploys OTA update, monitors from Datadog, and notifies the software team.

naftiko: '0.5'
info:
  label: VW Vehicle Software Release Workflow
  description: When a vehicle software release is approved, deploys OTA update, monitors from Datadog, and notifies the software team.
  tags:
  - automotive
  - datadog
  - jira
  - slack
  - vehicle-software
capability:
  exposes:
  - type: mcp
    namespace: vw_vehicle_software_
    port: 8080
    tools:
    - name: handle-event
      description: When a vehicle software release is approved, deploys OTA update, monitors from Datadog, and notifies the software team.
      inputParameters:
      - name: event_id
        in: body
        type: string
        description: The triggering event identifier.
      - name: context
        in: body
        type: string
        description: Additional context for the event.
      steps:
      - name: gather-data
        type: call
        call: snowflake-api.run-query
        with:
          event_id: '{{event_id}}'
      - name: create-ticket
        type: call
        call: jira-api.create-issue
        with:
          project: OPS
          issuetype: Task
          summary: '[automotive] {{event_id}} — {{context}}'
      - name: notify-team
        type: call
        call: slack-api.post-message
        with:
          channel: automotive-ops
          text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
  consumes:
  - type: http
    namespace: snowflake-api
    baseUri: https://vwgroup.snowflakecomputing.com/api/v2
    authentication:
      type: bearer
      token: $secrets.snowflake_token
    resources:
    - name: statements
      path: /statements
      operations:
      - name: run-query
        method: POST
  - type: http
    namespace: jira-api
    baseUri: https://volkswagen.atlassian.net/rest/api/3
    authentication:
      type: basic
      username: $secrets.jira_user
      password: $secrets.jira_api_token
    resources:
    - name: issues
      path: /issue
      operations:
      - name: create-issue
        method: POST
  - type: http
    namespace: slack-api
    baseUri: https://slack.com/api
    authentication:
      type: bearer
      token: $secrets.slack_token
    resources:
    - name: messages
      path: /chat.postMessage
      operations:
      - name: post-message
        method: POST
Open in Framework → View in Fleet → vw-vehicle-software-release-workflow.yml

Areas — Total: 1876

  • .NET
  • 3D
  • 3D Modeling
  • 3D Rendering
  • AI Applications
  • AI Architectures
  • AI Ethics
  • AI Infrastructure
  • AI Platforms
  • AI Safety
  • AI Solutions
  • AI Toolings
  • AJAX
  • API Development
  • API Gateways
  • API Management
  • Abacus
  • Acceptance Testing
  • Access Controls
  • Access Management
  • Accessibility
  • Account Management
  • Accountability
  • Accounting
  • Accounting Software
  • Accounting Systems
  • Accounts Payables
  • Accounts Receivables
  • Active Directory
  • Actuarial Sciences
  • Ad Management
  • Ad Platforms
  • Administration
  • Administratives
  • Advertising
  • Agent Frameworks
  • Agent-based Systems
  • Agentic AI
  • Agentic Systems
  • Agentics
  • Agents
  • Alarm Systems
  • Alerting
  • Alerts
  • Algorithm Design
  • Algorithm Development
  • Algorithm Implementations
  • Algorithms
  • Ambassadors
  • Analysis
  • Analytics
  • Androids
  • Animations
  • Annotations
  • Anomaly Detections
  • Anti-Money Launderings
  • Apache Portable Runtimes
  • Applicant Tracking Systems
  • Application Architectures
  • Application Development
  • Application Integrations
  • Application Lifecycle Management
  • Application Management
  • Application Monitoring
  • Application Performance Management
  • Application Platforms
  • Application Programming Interfaces
  • Application Securities
  • Applications
  • Architecture Design
  • Architecture Governance
  • Architecture Strategies
  • Architectures
  • Archives
  • Artifact Management
  • Artifact Repositories
  • Artificial Intelligence
  • Artificial Intelligence/Machine Learning
  • Assessments
  • Asset Allocations
  • Asset Liability Management
  • Asset Management
  • Asset Managers
  • Asset Protection
  • Asset Tracking
  • Assignments
  • Asynchronous
  • Asynchronous Communications
  • Attendance Tracking
  • Audio
  • Audit Management
  • Audit Processes
  • Audit Reports
  • Audit Trails
  • Audits
  • Australias
  • Authentications
  • Authoring Tools
  • Authorizations
  • Automated Testing
  • Automation
  • Automation Platforms
  • Automation Toolings
  • Automotive
  • Autonomous Systems
  • Awareness
  • BI
  • BPM
  • Backend Development
  • Backend Engineering
  • Backends
  • Background Checks
  • Backup And Recovery
  • Backups
  • Backward Compatibilities
  • Banking
  • Banking Platforms
  • Bashes
  • Battery Technologies
  • Belts
  • Benchmarkings
  • Benchmarks
  • Benefits Administration
  • Best Practices
  • Big Data
  • Billings
  • Black Box Testing
  • Blockchains
  • Bookings
  • Bookkeepings
  • Bots
  • Bridges
  • Browser Extensions
  • Browser Support
  • Browsers
  • Budgetings
  • Bug Tracking
  • Build Automation
  • Build Securities
  • Build Systems
  • Build Tools
  • Build Verifications
  • Building Automation
  • Built Environments
  • Business
  • Business Alignments
  • Business Analysis
  • Business Analytics
  • Business Applications
  • Business Continuities
  • Business Intelligence
  • Business Logics
  • Business Management
  • Business Models
  • Business Operations
  • Business Plannings
  • Business Plans
  • Business Process
  • Business Process Management
  • Business Roles
  • Business Solutions
  • Business Strategies
  • Business Tools
  • Business Transformations
  • Business to Consumers
  • Business-to-Business
  • CAD Software
  • CI
  • CI/CD Pipelines
  • CNC Programming
  • Caches
  • Caching
  • Calendars
  • Cameras
  • Campaign Management
  • Capacity Management
  • Capital Markets
  • Carbon Accounting
  • Career Development
  • Case Laws
  • Case Management
  • Catalogs
  • Certificates
  • Certifications
  • Change Data Captures
  • Change Management
  • Charts
  • Chatbots
  • Chats
  • Chemical Engineering
  • Cities
  • Claims Management
  • Claims Management Systems
  • Claims Processing
  • Classification
  • Clean Energies
  • Clearings
  • Client Experiences
  • Client Relations
  • Clients
  • Climate Changes
  • Climate Controls
  • Climate Tech
  • Climates
  • Cloud Architectures
  • Cloud Computes
  • Cloud Computing
  • Cloud Data
  • Cloud Data Platforms
  • Cloud Deployments
  • Cloud Development
  • Cloud Engineering
  • Cloud Environments
  • Cloud Governance
  • Cloud Infrastructure
  • Cloud Integrations
  • Cloud Migrations
  • Cloud Natives
  • Cloud Operations
  • Cloud Platforms
  • Cloud Runs
  • Cloud Securities
  • Cloud Security Controls
  • Cloud Security Posture Management
  • Cloud Services
  • Cloud Software
  • Cloud Solutions
  • Cloud Storage
  • Cloud Strategies
  • Cloud Systems
  • Cloud Technologies
  • Cloud Transformations
  • Cloud-Based
  • Cloud-Based Computing
  • Cloud-Based Data Platforms
  • Cloud-based Environments
  • Cloud-based Services
  • Cloud-based Solutions
  • Cloud-native Applications
  • Cloud-native Architectures
  • Cloud-native Development
  • Cloud-native Platforms
  • Cloud-native Solutions
  • Cloud-native Tech
  • Cloud-native Technologies
  • Clouds
  • Clustering
  • Coals
  • Code Analysis
  • Code Coverages
  • Code Debuggings
  • Code Generations
  • Code Management
  • Code Quality
  • Code Reusabilities
  • Code Reviews
  • Codes
  • Collaboration Tools
  • Collaborations
  • Collaborative Development
  • Collaterals
  • Collections
  • Command Lines
  • Commerce
  • Commercial Services
  • Commodities
  • Common Sense
  • Communication Tools
  • Communications
  • Communities
  • Community Engagements
  • Compatibilities
  • Competency Frameworks
  • Competitive Analysis
  • Competitive Intelligence
  • Competitor Analysis
  • Compilations
  • Compilers
  • Complex Systems
  • Complexity Analysis
  • Compliance
  • Compliance Expertises
  • Compliance Frameworks
  • Compliance Management
  • Compliance Managers
  • Compliance Monitoring
  • Compliance Policies
  • Component Engineering
  • Component Libraries
  • Computational Linguistics
  • Computational Modeling
  • Computational Tools
  • Computations
  • Computer Aided Design
  • Computer Aided Engineering
  • Computer Aided Manufacturing
  • Computer Applications
  • Computer Sciences
  • Computer Systems
  • Computer Visions
  • Computer-Aided Design/Computer-Aided Manufacturing
  • Computers
  • Computes
  • Computing
  • Concurrencies
  • Conferences
  • Conferencings
  • Configuration Management
  • Configuration Management Tools
  • Configurations
  • Connectivity
  • Connectors
  • Construction
  • Consulting Services
  • Consultings
  • Consumer Behaviors
  • Consumer Electronics
  • Consumer Protection
  • Contact Centers
  • Contacts
  • Container Management
  • Container Orchestration
  • Container Orchestration Services
  • Container Platforms
  • Container Registries
  • Container Services
  • Containerization
  • Containerization Technologies
  • Containerized Applications
  • Containers
  • Content Creations
  • Content Deliveries
  • Content Delivery Networks
  • Content Management Systems
  • Content Marketing
  • Content Strategies
  • Contents
  • Continuous Deliveries
  • Continuous Deployments
  • Continuous Improvements
  • Continuous Integration/Continuous Deployments
  • Continuous Integrations
  • Continuous Learning
  • Continuous Monitoring
  • Contract Management
  • Contributions
  • Control Algorithms
  • Control Methods
  • Control Systems
  • Controllers
  • Controls
  • Conveyor Systems
  • Coordinates
  • Copywritings
  • Corporate Finances
  • Cost Accounting
  • Cost Controls
  • Cost Engineering
  • Cost Management
  • Cost Optimizations
  • Country-Specific
  • Crawlings
  • Creative Software
  • Creative Suites
  • Credentials
  • Credit Applications
  • Credit Cards
  • Credit Management
  • Credit Process
  • Credit Ratings
  • Credit Risks
  • Credit Valuation Adjustments
  • Crisis Management
  • Critical Thinkings
  • Cross Platforms
  • Cryptographies
  • Cs
  • Cultural Changes
  • Currencies
  • Custodies
  • Custom Development
  • Custom Solutions
  • Customer Data
  • Customer Data Platforms
  • Customer Engagements
  • Customer Experience Design
  • Customer Experiences
  • Customer Feedback
  • Customer Journey Mappings
  • Customer Journeys
  • Customer Management
  • Customer Onboardings
  • Customer Portals
  • Customer Relationship Management
  • Customer Satisfactions
  • Customer Segmentations
  • Customer Service
  • Customer Support
  • Customer Targetings
  • Customizations
  • Customs
  • Customs Brokerages
  • Customs Procedures
  • Cyber Defenses
  • Cyber Programs
  • Cyber Resiliences
  • Cyber Securities
  • Cyber Security Assessments
  • Cybersecurities
  • Cybersecurity Frameworks
  • DNS, DHCP, and IP Address Management
  • Dashboards
  • Data
  • Data Access
  • Data Accessibility
  • Data Acquisition
  • Data Analysis
  • Data Analysis Methods
  • Data Analysis Software
  • Data Analysis Techniques
  • Data Analysis Tools
  • Data Analytic Tools
  • Data Analytics
  • Data Analytics Tools
  • Data Annotation Tools
  • Data Annotations
  • Data Architectures
  • Data Capabilities
  • Data Captures
  • Data Catalogs
  • Data Centers
  • Data Centres
  • Data Cleanings
  • Data Collections
  • Data Deletions
  • Data Distributions
  • Data Engineering
  • Data Entries
  • Data Exchanges
  • Data Explorations
  • Data Extractions
  • Data Flows
  • Data Gatherings
  • Data Governance
  • Data Handling
  • Data Infrastructure
  • Data Ingestions
  • Data Insights
  • Data Integrations
  • Data Integrity
  • Data Interpretations
  • Data Lakes
  • Data Lineages
  • Data Loss Preventions
  • Data Management
  • Data Management Systems
  • Data Management Tools
  • Data Manipulations
  • Data Mappings
  • Data Marketplaces
  • Data Meshes
  • Data Migrations
  • Data Minimizations
  • Data Mining
  • Data Operations
  • Data Pipelines
  • Data Platforms
  • Data Preparations
  • Data Privacies
  • Data Processes
  • Data Processing
  • Data Products
  • Data Protection
  • Data Providers
  • Data Quality
  • Data Quality Controls
  • Data Quality Management
  • Data Reportings
  • Data Retentions
  • Data Retrievals
  • Data Risk Management
  • Data Science Techniques
  • Data Sciences
  • Data Securities
  • Data Services
  • Data Stacks
  • Data Stewardships
  • Data Storage
  • Data Storytellings
  • Data Strategies
  • Data Streamings
  • Data Structures
  • Data Systems
  • Data Technologies
  • Data Tools
  • Data Tracking
  • Data Transfers
  • Data Transformations
  • Data Transmissions
  • Data Validation
  • Data Vaults
  • Data Visualisations
  • Data Visualization Platforms
  • Data Visualization Software
  • Data Visualization Tools
  • Data Visualizations
  • Data Warehouses
  • Data Warehousing
  • Data Wranglings
  • Data and Analytics
  • Data-Driven
  • Data-Driven Processes
  • Data-Driven Products
  • Data-driven Decision Making
  • Data-driven Insights
  • Database Applications
  • Database Design
  • Database Management
  • Database Queries
  • Database Systems
  • Database Technologies
  • Databases
  • Datastages
  • Debt Collections
  • Debt Securities
  • Debuggings
  • Decentralized
  • Decentralized Autonomous Organizations
  • Decision Making
  • Decision Sciences
  • Decision Support
  • Deep Learning
  • Defis
  • Deliveries
  • Dependencies
  • Dependency Management
  • Deployment Automation
  • Deployment Infrastructure
  • Deployment Pipelines
  • Deployment Strategies
  • Deployments
  • Derivatives
  • Design
  • Design Guidelines
  • Design Principles
  • Design Reviews
  • Design Software
  • Design Systems
  • Design Thinkings
  • Design Tools
  • Design Validation
  • Desktops
  • Developer Experiences
  • Developer Tools
  • Development
  • Development Lifecycle
  • Development Operations
  • Development Practices
  • Development Process
  • Development Tools
  • Device Drivers
  • Device Management
  • Diagnostic Tools
  • Diagnostics
  • Diagrammings
  • Digital Advertising
  • Digital Assets
  • Digital Channels
  • Digital Commerce
  • Digital Contents
  • Digital Experiences
  • Digital Marketing
  • Digital Media
  • Digital Products
  • Digital Services
  • Digital Signatures
  • Digital Solutions
  • Digital Storytellings
  • Digital Strategies
  • Digital Systems
  • Digital Technologies
  • Digital Tools
  • Digital Transformations
  • Digital Twins
  • Digitals
  • Digitizations
  • Directed Acyclic Graphs
  • Directory
  • Disaster Recovery
  • Distributed
  • Distributed Applications
  • Distributed Computing
  • Distributed Databases
  • Distributed Environments
  • Distributed Systems
  • Distributed Tracing
  • Distributed Trainings
  • Distribution Systems
  • Distributions
  • Document Analysis
  • Document Management
  • Document Management Systems
  • Document Object Models
  • Documentaries
  • Documentations
  • Documents
  • Domain Adaptations
  • Due Diligences
  • Dynamic Application Security Testing
  • Dynamic Models
  • Dynamic Pricings
  • Dynamics
  • E-commerces
  • E-learnings
  • E-mails
  • ERP
  • ESB
  • Economic Analysis
  • Economic Data
  • Economics
  • Ecosystems
  • Edge Computing
  • Ediscoveries
  • Educations
  • Efficiencies
  • Elections
  • Electric Vehicles
  • Electrical Infrastructure
  • Electromagnetic Compatibilities
  • Electronic Communications
  • Electronic Data Interchange
  • Electronics
  • Emails
  • Embedded Systems
  • Embeddings
  • Emergency Responses
  • Employee Benefits
  • Employee Development
  • Employee Engagements
  • Employee Experiences
  • Employee Networks
  • Employment
  • Enablement
  • Encryptions
  • End To End
  • End-to-end Testing
  • Energies
  • Energy Efficiencies
  • Energy Management
  • Engineering
  • Enterprise AI
  • Enterprise Applications
  • Enterprise Architectures
  • Enterprise Data
  • Enterprise IT
  • Enterprise Integrations
  • Enterprise Resource Planning
  • Enterprise Risk Management
  • Enterprise Risks
  • Enterprise Securities
  • Enterprise Software
  • Enterprise Solutions
  • Enterprise Systems
  • Enterprise Technologies
  • Enterprises
  • Entertainments
  • Entity Framework Cores
  • Entrepreneurships
  • Environment Management
  • Equipments
  • Error Handling
  • Estimations
  • Ethics
  • Evaluation Frameworks
  • Evaluations
  • Event Driven
  • Event Handling
  • Event Management
  • Event Marketing
  • Event Plannings
  • Event Streamings
  • Event-driven Systems
  • Events
  • Examples
  • Excels
  • Executions
  • Executive Reportings
  • Expense Management
  • Experiment Design
  • Experimentations
  • Exploitations
  • Extended Detection and Responses
  • Extensions
  • External Databases
  • External Systems
  • Extract Transform Loads
  • Facial Recognitions
  • Facilities Management
  • Fault Tolerants
  • Feature Engineering
  • Feature Enhancements
  • Feature Testing
  • Federations
  • Feedback
  • File Parsings
  • Finances
  • Financial Accounting
  • Financial Analysis
  • Financial Compliances
  • Financial Controls
  • Financial Crimes
  • Financial Data
  • Financial Engineering
  • Financial Instruments
  • Financial Management
  • Financial Mathematics
  • Financial Modeling
  • Financial Models
  • Financial Operations
  • Financial Plannings
  • Financial Reportings
  • Financial Risk Management
  • Financial Securities
  • Financial Services
  • Financial Software
  • Financial Stabilities
  • Financial Systems
  • Financial Technologies
  • Fine-tunings
  • Fintech
  • Firewalls
  • Firmwares
  • Fixed Incomes
  • Flashes
  • Flexibilities
  • Flexible Workings
  • Flinks
  • Forecasting
  • Forecasting Models
  • Forexes
  • Forge
  • Form Validation
  • Formal Verifications
  • Formatting Objects Processors
  • Forms
  • Fossil Fuels
  • Foundations
  • Frameworks
  • Fraud Detections
  • Fraud Preventions
  • Freight Forwardings
  • Frenches
  • Front-ends
  • Frontends
  • Full Stack Development
  • Full Stacks
  • Functional Testing
  • Functions
  • Functions as a Services
  • Futures
  • Gamings
  • Gateways
  • General Ledgers
  • Generative AI
  • Generative Models
  • Geographies
  • Geolocations
  • GitHub Copilots
  • Global Markets
  • Global Positioning Systems
  • Globalizations
  • Goal Settings
  • Governance
  • Governance Frameworks
  • Government
  • Government Relations
  • Graph Databases
  • Graphic Design
  • Graphical User Interfaces
  • Graphics
  • Graphics Processing Units
  • Graphings
  • Graphs
  • Green Buildings
  • Green Technologies
  • HCM
  • HR Analytics
  • HR Management
  • HR Systems
  • HR Tech
  • HR Technologies
  • Hadoop Distributed File Systems
  • Hardenings
  • Hardware
  • Hardware Testing
  • Healthcare
  • Heating, Ventilation, and Air Conditionings
  • Hedging
  • Help Desks
  • High Availabilities
  • High Performance Computing
  • High Performances
  • High Throughputs
  • Hirings
  • Hospitality
  • Hosting
  • Human Factors
  • Human Resources
  • Human-Centered Design
  • Hybrid Clouds
  • Hypervisors
  • Hypothesis Testing
  • IPAM
  • IT Architectures
  • IT Governance
  • IT Infrastructure
  • IT Management
  • IT Operations
  • IT Plannings
  • IT Platforms
  • IT Project Management
  • IT Risks
  • IT Service Management
  • IT Services
  • IT Strategies
  • Ideas
  • Ideations
  • Identities
  • Identity And Access Management
  • Identity Management
  • Identity Providers
  • Identity Verifications
  • Image Buildings
  • Image Processing
  • Implementations
  • Incident Management
  • Incident Management Systems
  • Incident Management Tools
  • Incident Responses
  • Indexings
  • Industrial Automation
  • Industrial Engineering
  • Industrial Equipments
  • Inference Optimizations
  • Inferences
  • Informatics
  • Information Architectures
  • Information Management
  • Information Protection
  • Information Securities
  • Information Sharing
  • Information Systems
  • Information Technologies
  • Information Technology Infrastructure
  • Informationssystemes
  • Infrastructure
  • Infrastructure As Codes
  • Infrastructure Components
  • Infrastructure Management
  • Infrastructure Monitoring
  • Infrastructure Securities
  • Innovation
  • Insights
  • Inspections
  • Instrumentations
  • Insurance Operations
  • Insurances
  • Integrated Development Environments
  • Integrated Solutions
  • Integration Frameworks
  • Integration Platforms
  • Integration Strategies
  • Integration Testing
  • Integration Tests
  • Integration Workflows
  • Integrations
  • Integrity
  • Intellectual Properties
  • Intelligence
  • Intelligent Systems
  • Interactive Voice Responses
  • Interactives
  • Interest Rate Swaps
  • Interface Design
  • Interfaces
  • Internal Audits
  • Internal Communications
  • Internal Controls
  • Internal Databases
  • Internal Networks
  • Internal Platforms
  • Internal Systems
  • Internal Tools
  • International Markets
  • International Trades
  • Internationalizations
  • Internet
  • Internet of Things
  • Interoperabilities
  • Intranets
  • Intrusion Detections
  • Inventory Management
  • Investment Banking
  • Investment Data
  • Investment Management
  • Investment Tracking
  • Investments
  • Investor Relations
  • Isolations
  • Issue Tracking
  • Iterative Development
  • Ivies
  • Java Virtual Machines
  • Job Boards
  • Job Scheduling
  • Journey Builders
  • Journey Mappings
  • Kernels
  • Key Management
  • Key Metrics
  • Key Values
  • Knowledge Bases
  • Knowledge Management
  • Knowledge Sharing
  • LLM
  • Language Understandings
  • Large Data Sets
  • Large Datasets
  • Large Language Models
  • Large-scale Distributed Systems
  • Latency Reductions
  • Launch Strategies
  • Law Enforcements
  • Lead Generations
  • Lead Management
  • Leaderships
  • Learning
  • Learning And Development
  • Learning Management
  • Ledgers
  • Legacy Systems
  • Legal
  • Legal Compliances
  • Legal Frameworks
  • Legal Tech
  • Lendings
  • Lessons Learned
  • Libraries
  • License Management
  • Licensings
  • Life Cycle Management
  • Lifecycle Management
  • Lightings
  • Liquidity Management
  • Live Data
  • Load Balancers
  • Load Balancings
  • Load Testing
  • Localizations
  • Log Analytics
  • Log Management
  • Logging
  • Logistic Regressions
  • Logistics
  • Loss Data
  • Low Carbons
  • Low Latencies
  • M&AS
  • ML Engineering
  • Machine Learning
  • Machine Learning Algorithms
  • Machine Learning Frameworks
  • Machine Learning Models
  • Machine Learning Platforms
  • Machinings
  • Mails
  • Mainframes
  • Maintenance
  • Major Incident Management
  • Managed Services
  • Management
  • Management Information
  • Management Software
  • Management Systems
  • Management Tools
  • Manual Processes
  • Manufacturing
  • Mappings
  • Market Analysis
  • Market Data
  • Market Information
  • Market Intelligence
  • Market Researches
  • Marketing
  • Marketing Analytics
  • Marketing Automation
  • Marketing Platforms
  • Marketing Strategies
  • Marketing Tools
  • Marketplaces
  • Markets
  • Master Data
  • Material Design
  • Material Handling
  • Mathematical Modeling
  • Mathematics
  • Matrixes
  • Measurements
  • Mechanical Systems
  • Media
  • Media Contents
  • Media Management
  • Media Monitoring
  • Mediations
  • Medical Devices
  • Meetings
  • Memory Management
  • Mental Healths
  • Mentoring
  • Message Brokers
  • Message Encryptions
  • Message Queues
  • Messaging
  • Messaging Platforms
  • Messaging Systems
  • Metadata
  • Metrics
  • Micro-services
  • Microcontrollers
  • Microservices
  • Microsoft Access
  • Middle Offices
  • Middlewares
  • Migrations
  • Mission Critical
  • Mobile Applications
  • Mobile Apps
  • Mobile Development
  • Mobile Devices
  • Mobile Technologies
  • Mobiles
  • Mockings
  • Mocks
  • Model Analysis
  • Model Architectures
  • Model Context Protocols
  • Model Context Protocols (MCP)
  • Model Deployments
  • Model Development
  • Model Evaluations
  • Model Lifecycle Management
  • Model Maintenance
  • Model Management
  • Model Monitoring
  • Model Optimizations
  • Model Performance
  • Model Servings
  • Model Testing
  • Model Trainings
  • Modeling
  • Modeling Tools
  • Modernizations
  • Modularity
  • Monitoring
  • Monitoring Software
  • Monitoring Tools
  • Monte Carloes
  • Multi-Agent Systems
  • Multi-Factor Authentications
  • Multi-channels
  • Multi-platforms
  • Multi-regions
  • Multimedias
  • Multimodals
  • Multiple Systems
  • NLP
  • Natural Gas
  • Natural Language Processing
  • Navigation
  • Negotiations
  • Network Analysis
  • Network Architectures
  • Network Automation
  • Network Engineering
  • Network Infrastructure
  • Network Management
  • Network Performance
  • Network Performance Management
  • Network Securities
  • Network Simulations
  • Network Tools
  • Network Topologies
  • Networking
  • Neural Networks
  • News
  • News Media
  • Newsletters
  • NoSQL
  • Nonprofits
  • Nostro
  • Notebooks
  • Notifications
  • OIA
  • OLE for Process Controls
  • ORM
  • OSX
  • Object-Oriented
  • Observability
  • Observability Tools
  • Obsolescence Management
  • Office Applications
  • Office Management
  • Office Software
  • Office Suites
  • On Demands
  • Onboardings
  • Online Forms
  • Online Learning
  • Online Services
  • Online Shoppings
  • Open Data
  • Open Source
  • Open-Source Software
  • Open-source Frameworks
  • Open-source Technologies
  • Operating Systems
  • Operational Efficiencies
  • Operational Excellence
  • Operational Metrics
  • Operational Practices
  • Operational Resiliences
  • Operational Risk Management
  • Operational Risks
  • Operational Systems
  • Operational Technologies
  • Operations
  • Operations Management
  • Operations Researches
  • Operators
  • Optical Character Recognitions
  • Optimization Techniques
  • Optimizations
  • Options
  • Orchestration
  • Order Management
  • Order Management Systems
  • Organizational Changes
  • Organizational Design
  • Organizational Development
  • Organizational Structures
  • Organizational Transformations
  • Organizations
  • Outils Internes
  • Outlier Detections
  • Packages
  • Packaging
  • Pair Programming
  • Panoramas
  • Parallel Computing
  • Patch Management
  • Pattern Recognitions
  • Patterns
  • Pay Per Clicks
  • Payment Processing
  • Payments
  • Payroll
  • Penetration Testing
  • Performance
  • Performance Analysis
  • Performance Engineering
  • Performance Evaluations
  • Performance Improvements
  • Performance Management
  • Performance Measurements
  • Performance Metrics
  • Performance Monitoring
  • Performance Optimizations
  • Performance Testing
  • Performance Tracking
  • Performance Tuning
  • Persistences
  • Personalizations
  • Photographies
  • Physical Securities
  • Physics Simulations
  • Pigs
  • Pipeline Management
  • Pipelines
  • Pivot Tables
  • Plannings
  • Platform Development
  • Platform Engineering
  • Platform Management
  • Platform Securities
  • Platform Services
  • Platform Software
  • Platform Solutions
  • Platform Strategies
  • Platform Systems
  • Platforms
  • Plugins
  • Policies
  • Policy Administration
  • Policy Enforcements
  • Portabilities
  • Portables
  • Portals
  • Portfolio Management
  • Portlets
  • Post Productions
  • Postmortems
  • Power Distributions
  • Power Tools
  • Power Transmissions
  • Predictabilities
  • Predictions
  • Predictive Analytics
  • Predictive Modeling
  • Presentation Software
  • Presentations
  • Pricing Analytics
  • Pricing Models
  • Pricing Strategies
  • Pricings
  • Prioritizations
  • Privacy
  • Privacy Impact Assessments
  • Probabilities
  • Problem Management
  • Problem Resolutions
  • Problem Solving
  • Problem-Solving Tools
  • Process Analysis
  • Process Automation
  • Process Builders
  • Process Controls
  • Process Design
  • Process Documentations
  • Process Engineering
  • Process Improvements
  • Process Management
  • Process Mappings
  • Process Maps
  • Process Mining
  • Process Modeling
  • Process Optimizations
  • Process Safety
  • Processes
  • Procurement Tools
  • Procurements
  • Product Analytics
  • Product Areas
  • Product Costings
  • Product Design
  • Product Development
  • Product Development Lifecycle
  • Product Integrations
  • Product Lifecycle Management
  • Product Management
  • Product Management Tools
  • Product Owners
  • Product Ownerships
  • Product Roadmaps
  • Product Securities
  • Product Strategies
  • Product Testing
  • Production
  • Production Deployments
  • Production Environments
  • Production Management
  • Production Monitoring
  • Production Support
  • Production Systems
  • Productivity
  • Productivity Tools
  • Products
  • Professional Development
  • Professional Networking
  • Professional Services
  • Professional Trainings
  • Profilings
  • Profitability Analysis
  • Program Management
  • Programmable Logic Controllers
  • Programming
  • Programming Languages
  • Progress Reports
  • Project Management
  • Project Management Processes
  • Project Management Tools
  • Project Schedules
  • Projects
  • Prompt Engineering
  • Promptings
  • Prompts
  • Property Management
  • Protection
  • Protocols
  • Prototype Development
  • Prototyping
  • Provisioning Process
  • Provisionings
  • Proxies
  • Prunings
  • Psychologies
  • Public Affairs
  • Public Clouds
  • Public Healths
  • Public Key Infrastructure
  • Purchasings
  • QA
  • QA Automation
  • Quality Assurance
  • Quality Assurance Processes
  • Quality Assurance Reviews
  • Quality Centers
  • Quality Controls
  • Quality Frameworks
  • Quality Management
  • Quality Metrics
  • Quality Testing
  • Quality Tools
  • Quantitative Analysis
  • Quantitative Finances
  • Quantitative Modeling
  • Quantitative Models
  • Quantum Computing
  • Query Languages
  • Query Optimizations
  • Query Tools
  • Queues
  • Rapid Development
  • Rapid Prototyping
  • Ratings
  • Reactives
  • Real Estates
  • Real Time
  • Real-Time Operating Systems
  • Real-time Analytics
  • Real-time Applications
  • Real-time Data
  • Real-time Insights
  • Real-time Monitoring
  • Real-time Operations
  • Real-time Processing
  • Real-time Rendering
  • Real-time Streamings
  • Real-time Systems
  • Reasonings
  • Reconciliations
  • Reconnaissances
  • Record Keepings
  • Recordings
  • Records Management
  • Recruitings
  • Recruitment
  • Registrations
  • Regression Analysis
  • Regression Testing
  • Regulatory Affairs
  • Regulatory Compliances
  • Regulatory Filings
  • Regulatory Reportings
  • Reinforcement Learning
  • Relational Data
  • Relational Database Management Systems
  • Relational Databases
  • Relationals
  • Relationship Buildings
  • Relationship Management
  • Release Activities
  • Release Management
  • Release Management Processes
  • Release Plannings
  • Reliabilities
  • Reliability Engineering
  • Remote Access
  • Remote Works
  • Rendering
  • Renewable Energies
  • Replications
  • Reporting And Analytics
  • Reporting Frameworks
  • Reporting Mechanisms
  • Reporting Solutions
  • Reporting Systems
  • Reporting Tools
  • Reportings
  • Repository Management
  • Requirements
  • Requirements Engineering
  • Requirements Gatherings
  • Requirements Management
  • Research
  • Research Data
  • Research Methods
  • Research Tools
  • Reservation Systems
  • Resilience Engineering
  • Resiliences
  • Resiliency
  • Resource Allocations
  • Resource Management
  • Resource Plannings
  • Resource Scheduling
  • Retails
  • Reusable Components
  • Revenue Management
  • Revenues
  • Review And Approvals
  • Reviews
  • Rich Internet Applications
  • Risk Analysis
  • Risk Assessments
  • Risk Management
  • Risk Management Plans
  • Risk Management Tools
  • Roadmappings
  • Robotic Process Automation
  • Robotics
  • Robustness
  • Root Cause Analysis
  • Routers
  • Routings
  • Runtimes
  • SQL Databases
  • Safes
  • Safety
  • Safety Engineering
  • Sales
  • Sales Analytics
  • Sales Clouds
  • Sales Enablement
  • Sales Management
  • Sales Trainings
  • Sanctions
  • Sandboxes
  • Scalabilities
  • Scaling
  • Scannings
  • Scenario Analysis
  • Scenario Modeling
  • Scenarios
  • Scheduling
  • Scientific Computing
  • Scientific Methods
  • Scorings
  • Screenings
  • Scripting Languages
  • Scriptings
  • Search
  • Search Engine Optimizations
  • Search Engines
  • Search Indexings
  • Secrets Management
  • Secure Coding Practices
  • Secure Codings
  • Secure Communications
  • Secure Configurations
  • Secure Development
  • Secure Software Development
  • Secure Transports
  • Securities Tradings
  • Securitisations
  • Security
  • Security Analysis
  • Security Architectures
  • Security Assessments
  • Security Audits
  • Security Automation
  • Security Awareness Trainings
  • Security Best Practices
  • Security Compliances
  • Security Controls
  • Security Development Lifecycle
  • Security Engineering
  • Security Frameworks
  • Security Governance
  • Security Groups
  • Security Information and Event Management
  • Security Intelligence
  • Security Management
  • Security Measures
  • Security Mechanisms
  • Security Monitoring
  • Security Operations
  • Security Orchestration, Automation and Responses
  • Security Procedures
  • Security Requirements
  • Security Solutions
  • Security Systems
  • Security Testing
  • Security Tools
  • Segmentations
  • Self-healings
  • Self-improvements
  • Semantic Searches
  • Semantic Technologies
  • Sensors
  • Serverless
  • Serverless Architectures
  • Servers
  • Service Bus
  • Service Catalogs
  • Service Clouds
  • Service Deliveries
  • Service Design
  • Service Desks
  • Service Level Objectives (SLOs)
  • Service Management
  • Service Operations
  • Services
  • Servlets
  • Settlements
  • Shells
  • Shippings
  • Short Message Services
  • Signal Processing
  • Simple API for XML
  • Simulation Environments
  • Simulation Modeling
  • Simulation Tools
  • Simulations
  • Simulators
  • Site Reliability Engineering
  • Skill Development
  • Skills Development
  • Slides
  • Smart Grids
  • Smart Homes
  • Smartphones
  • Social
  • Social Media
  • Social Media Management
  • Social Media Marketing
  • Social Networks
  • Software
  • Software Applications
  • Software Architectures
  • Software Configuration Management
  • Software Configurations
  • Software Deliveries
  • Software Delivery Pipelines
  • Software Deployments
  • Software Design
  • Software Development
  • Software Development Kits
  • Software Engineering
  • Software Infrastructure
  • Software Languages
  • Software Licensings
  • Software Platforms
  • Software Projects
  • Software Quality
  • Software Solutions
  • Software Systems
  • Software Technologies
  • Software Testing
  • Software Tools
  • Software Troubleshooting
  • Software Upgrades
  • Software Version Controls
  • Software as a Services
  • Software-as-a-Service
  • Solutions
  • Source Code Management
  • Source Codes
  • Source Controls
  • Source Systems
  • Sourcings
  • Spreadsheets
  • Stakeholder Management
  • Startups
  • State Machines
  • State Management
  • Static Analysis
  • Static Application Security Testing
  • Statistical Analysis
  • Statistical Analysis Software
  • Statistical Computing
  • Statistical Methods
  • Statistical Modeling
  • Statistical Models
  • Statistical Packages
  • Statistical Techniques
  • Statistics
  • Storage
  • Storage Management
  • Stored Procedures
  • Strategic Design
  • Strategic Plannings
  • Strategies
  • Streaming Architectures
  • Streaming Data
  • Streamings
  • Stress Testing
  • Structured Data
  • Structured Products
  • Subscriptions
  • Supervised Learning
  • Supplier Contracts
  • Supplier Management
  • Supply Chain Management
  • Supply Chain Securities
  • Supply Chains
  • Support
  • Support Platforms
  • Support Systems
  • Surveillances
  • Sustainability
  • Switches
  • Synthetics
  • System Administration
  • System Analysis
  • System Applications
  • System Architectures
  • System Automation
  • System Configurations
  • System Design
  • System Development
  • System Enhancements
  • System Hardenings
  • System Information
  • System Integrations
  • System Interfaces
  • System Libraries
  • System Maintenance
  • System Management
  • System Monitoring
  • System Of Records
  • System Operations
  • System Optimizations
  • System Performances
  • System Programming
  • System Requirements
  • System Services
  • System Software
  • System Stabilities
  • System Testing
  • System Tests
  • System Tools
  • Systems
  • Systems Administration
  • Systems Analysis
  • Systems Architectures
  • Systems Design
  • Systems Development
  • Systems Engineering
  • Systems Integrations
  • Systems Management
  • Systems Programming
  • Systems Software
  • Systems Testing
  • Systems Thinkings
  • T1S
  • Tablets
  • Tainas
  • Talent Acquisition
  • Talent Management
  • Task Management
  • Tasks
  • Tax Compliances
  • Tax Laws
  • Tax Management
  • Tax Plannings
  • Taxes
  • Tcls
  • Team Collaborations
  • Team Development
  • Team Management
  • Technical Debt
  • Technical Plannings
  • Technical Reviews
  • Technical Support
  • Technical Writings
  • Technologies
  • Technology Architectures
  • Technology Enhancements
  • Technology Platforms
  • Technology Stacks
  • Technology Strategies
  • Telecommunications
  • Telefonies
  • Telefonoes
  • Telefons
  • Telefoons
  • Telemetry
  • Telephonies
  • Telewerkens
  • Terminals
  • Test Anything Protocols
  • Test Automation
  • Test Automation Frameworks
  • Test Case Management
  • Test Controls
  • Test Design
  • Test Engineering
  • Test Environments
  • Test Equipments
  • Test Executions
  • Test Management
  • Test Management Tools
  • Test Plannings
  • Test Strategies
  • Test Tools
  • Test-and-learns
  • Testing Frameworks
  • Testing Strategies
  • Testing Tools
  • Tests
  • Text Analysis
  • Text Analytics
  • Text Mining
  • Third Parties
  • Third Party Risks
  • Third-Party Integrations
  • Third-party Data
  • Third-party Management
  • Third-party Systems
  • Threat Analysis
  • Threat Detections
  • Threat Huntings
  • Threat Intelligence
  • Threat Mitigations
  • Threat Modeling
  • Ticketing
  • Tickets
  • Time Management
  • Time Series
  • Time Series Analysis
  • Time Series Forecasting
  • Timelines
  • Tokens
  • Tools
  • Total Rewards
  • Tracing
  • Tracking
  • Tracking Software
  • Tracs
  • Trade Compliances
  • Trade Management
  • Trade Managers
  • Trade Shows
  • Trade Validation
  • Tradings
  • Traffic Analysis
  • Traffic Monitoring
  • Training Platforms
  • Trainings
  • Transaction Processing
  • Transfer Learning
  • Transformations
  • Transformers
  • Translations
  • Transparency
  • Transportation
  • Travel Management
  • Travels
  • Treasuries
  • Treasury Management
  • Treasury Operations
  • Troubleshooting
  • Tuning
  • UI
  • UI Design
  • UX
  • UX Design
  • Underwritings
  • Unified Communications
  • Unit Testing
  • Unixes
  • Unstructured Data
  • Unsupervised Learning
  • Updates
  • Uptime
  • Urban Plannings
  • Usabilities
  • Usability Testing
  • User Acceptance Testing
  • User Account Management
  • User Engagements
  • User Experiences
  • User Feedback
  • User Guides
  • User Insights
  • User Interface/User Experiences
  • User Interfaces
  • User Journeys
  • User Life Cycles
  • User Lifecycle
  • User Researches
  • User Testing
  • User Tracking
  • Utilities
  • VBA
  • VOIP
  • Validation
  • Validation Tools
  • Validation and Testing
  • Valuation Models
  • Valuations
  • Value Streams
  • Vector Databases
  • Vector Graphics
  • Vehicle Repairs
  • Vendor Management
  • Venture Capital
  • Venue Management
  • Venues
  • Verifications
  • Version Control Systems
  • Version Controls
  • Versionings
  • Video Conferences
  • Video Courses
  • Video Productions
  • Videos
  • Virtual Environments
  • Virtual Events
  • Virtual Testing
  • Virtual Trainings
  • Virtualizations
  • Visibility
  • Visual Analytics
  • Visual Design
  • Visual Effects
  • Visual Management
  • Visual Programming
  • Visualizations
  • Voice
  • Votings
  • Vues
  • Vulnerability Assessments
  • Vulnerability Management
  • Vulnerability Management Tools
  • Vulnerability Scannings
  • Warehouse Machineries
  • Warehouse Management
  • Web Analytics
  • Web Applications
  • Web Based
  • Web Browsers
  • Web Components
  • Web Development
  • Web Frameworks
  • Web Interfaces
  • Web Performances
  • Web Platforms
  • Web Searches
  • Web Servers
  • Web Services
  • Web Sites
  • Web Technologies
  • Webinars
  • Webs
  • Wellbeings
  • Whiteboards
  • Wi-Fi
  • Wikis
  • Windows Servers
  • Wins
  • Words
  • Work From Homes
  • Workflow Analysis
  • Workflow Design
  • Workflow Management
  • Workflow Management Tools
  • Workflow Optimizations
  • Workflow Orchestration
  • Workflows
  • Workforce Development
  • Working Capital
  • Workplace Safety
  • Workplace Technologies
  • Workshops
  • Workspaces

Services — Total: 339

  • ADP
  • AWS Lambda
  • Adobe
  • Adobe Acrobat
  • Adobe Analytics
  • Adobe Campaign
  • Adobe Captivate
  • Adobe Creative Cloud
  • Adobe Creative Suite
  • Adobe Illustrator
  • Adobe Launch
  • Adobe Photoshop
  • Adobe Premiere Pro
  • Adobe Suite
  • Airtable
  • Alteryx
  • Amazon API Gateway
  • Amazon ECS
  • Amazon Kinesis
  • Amazon Q
  • Amazon Redshift
  • Amazon S3
  • Amazon SNS
  • Amazon SQS
  • Amazon SageMaker
  • Amazon Web Services
  • Ambassador
  • Android
  • Ansible Automation Platform
  • Anthropic
  • Apache Airflow
  • Apache Software Foundation
  • Apigee
  • Appian
  • Apple
  • Apple Keynote
  • Apple Safari
  • Ariba
  • Artifactory
  • Aruba
  • Asana
  • Atlassian
  • AutoCAD
  • Autodesk
  • Autodesk Fusion 360
  • Autodesk Maya
  • Azure API Management
  • Azure Active Directory
  • Azure Automation
  • Azure Data Factory
  • Azure Databricks
  • Azure DevOps
  • Azure Event Hubs
  • Azure Functions
  • Azure Key Vault
  • Azure Kubernetes Service
  • Azure Log Analytics
  • Azure Machine Learning
  • Azure Monitor
  • Azure Service Bus
  • Azure Synapse Analytics
  • Azure Virtual Desktop
  • Backstage
  • BigCommerce
  • Bitbucket
  • Bloomberg
  • Bloomberg AIM
  • Bloomberg EMSX
  • Bloomberg Economics
  • Bloomberg Enterprise Data
  • Bloomberg Index Solutions Limited (BISL)
  • Bloomberg Intelligence
  • Bloomberg News
  • Bloomberg Professional Service
  • Bloomberg Terminal
  • Boomi
  • Box
  • Burp Suite
  • Calypso
  • Canva
  • ChatGPT
  • Checkmarx
  • Circana
  • Cisco
  • Cisco Firepower
  • Cisco Nexus
  • Cisco Voice Portal
  • Cisco Webex
  • Citrix NetScaler
  • Claude
  • CloudFormation
  • CloudWatch
  • Cloudflare
  • Cobalt
  • Concur
  • Conductor
  • Confluence
  • Coupa
  • Crystal Reports
  • Dagster
  • Databricks
  • Databricks Asset Bundles
  • Datadog
  • DocuSign
  • DynamoDB
  • Dynatrace
  • EC2
  • EMC
  • F5 Networks
  • Facebook
  • FactSet
  • Fargate
  • Fern
  • Figma
  • ForgeRock
  • Fortify
  • Fusio
  • G2
  • GCP Cloud Storage
  • Gemini
  • GitHub
  • GitHub Actions
  • GitHub Copilot
  • GitLab
  • Gong
  • Google
  • Google Analytics
  • Google Android
  • Google Apps Script
  • Google Campaign Manager
  • Google Chrome
  • Google Cloud Dataflow
  • Google Cloud Logging
  • Google Cloud Platform
  • Google Data Studio
  • Google Docs
  • Google Drive
  • Google Forms
  • Google Maps
  • Google Optimize
  • Google Search Console
  • Google Sheets
  • Google Slides
  • Google Tag Manager
  • Google Workspace
  • Harness
  • Hobart
  • Hoppscotch
  • HubSpot
  • Hugging Face
  • Hunter
  • IBM
  • Indeed
  • Informatica
  • Informática
  • Instagram
  • IntelliJ IDEA
  • International Business Machines
  • Intuit
  • Istio
  • JFrog
  • JFrog Artifactory
  • Jira
  • Jupyter Notebook
  • Kinesis
  • Knit
  • Konfig
  • Kong
  • Kuma
  • Lambda
  • Lightroom
  • LinkedIn
  • Looker
  • Looker Studio
  • MATLAB
  • MailChimp
  • Make
  • Mastercard
  • Maya
  • McAfee
  • Membrane
  • Merge
  • Meta
  • Metasploit
  • Microsoft
  • Microsoft .NET
  • Microsoft 365
  • Microsoft Access
  • Microsoft Azure
  • Microsoft Bicep
  • Microsoft Configuration Manager
  • Microsoft Copilot
  • Microsoft Defender
  • Microsoft Dynamics 365
  • Microsoft Edge
  • Microsoft Endpoint Configuration Management
  • Microsoft Endpoint Manager
  • Microsoft Entity Framework
  • Microsoft Entra
  • Microsoft Excel
  • Microsoft Exchange
  • Microsoft Graph
  • Microsoft Identity Manager
  • Microsoft Intune
  • Microsoft Office
  • Microsoft Office 365
  • Microsoft Outlook
  • Microsoft Planner
  • Microsoft Power Apps
  • Microsoft Power Automate
  • Microsoft Power Platform
  • Microsoft PowerPoint
  • Microsoft Project
  • Microsoft Purview
  • Microsoft Sentinel
  • Microsoft Teams
  • Microsoft Visio
  • Microsoft Windows
  • Microsoft Windows 10
  • Microsoft Windows Server
  • Microsoft Word
  • Microsoft Xbox
  • Moody's
  • MuleSoft
  • NASA
  • Navision
  • Nessus
  • New Relic
  • Notion
  • Ollama
  • OpenAI
  • OpenShift
  • Oracle
  • Oracle APEX
  • Oracle Cloud
  • Oracle E-Business Suite
  • Oracle Enterprise Manager
  • Oracle GoldenGate
  • Oracle Hyperion
  • Oracle Integration
  • Oracle R12
  • Orion
  • Palo Alto Networks
  • Panora
  • Paw
  • PeopleSoft
  • Perforce
  • Photoshop
  • Pluralsight
  • Port
  • Postman
  • Power Apps
  • Power BI
  • Power Platform
  • Power Query
  • Prisma
  • Prismatic
  • Productiv
  • Pulse
  • Qlik
  • Qlik Sense
  • QlikSense
  • QlikView
  • Qube
  • Red Hat
  • Red Hat Ansible Automation Platform
  • Red Hat Enterprise Linux
  • Red Hat Satellite
  • Revert
  • SAP
  • SAP Ariba
  • SAP BRIM (Billing and Revenue Innovation Management)
  • SAP BW
  • SAP Commerce Cloud
  • SAP Concur
  • SAP HANA
  • SAP S/4HANA
  • SQL Server
  • SailPoint
  • Salesforce
  • Salesforce Automation
  • Salesforce Einstein
  • Salesforce Experience Cloud
  • Salesforce Lightning
  • Salesforce Marketing Cloud
  • Salesforce Sales Cloud
  • Salesforce Service Cloud
  • Scalar
  • Service Cloud
  • ServiceNow
  • SharePoint
  • Shell
  • SimCorp Dimension
  • Slack
  • Snowflake
  • SolarWinds
  • Solaris Zones
  • Sparx Enterprise Architect
  • Splunk
  • Spot
  • Square
  • Stripe
  • TIBCO
  • Tableau
  • Tableau Desktop
  • Tableau Server
  • TeamCity
  • Temenos Transact
  • Temporal
  • Teradata
  • Torii
  • Tradeweb
  • Trellix
  • Trellix Web Gateway
  • Tropic
  • Truto
  • Twitter
  • Tyk
  • Unity
  • Unix
  • VMware
  • Vantage
  • Vendr
  • Veritas Cluster
  • Veritas InfoScale
  • Veritas NetBackup
  • Veritas Volume Manager
  • Vessel
  • Visio
  • Visualforce
  • WebSphere
  • WhatsApp
  • Workday
  • Youtube
  • Zendesk
  • Zoom
  • ZoomInfo
  • n8n
  • nOps

Tools — Total: 213

  • Akri
  • Angular
  • Ansible
  • Apache
  • Apache AGE
  • Apache APR
  • Apache Airflow
  • Apache Ant
  • Apache Aries
  • Apache Arrow
  • Apache Atlas
  • Apache Axis
  • Apache Beam
  • Apache BookKeeper
  • Apache Brooklyn
  • Apache Camel
  • Apache Cassandra
  • Apache Cocoon
  • Apache CouchDB
  • Apache DolphinScheduler
  • Apache Drill
  • Apache Felix
  • Apache Flex
  • Apache Flink
  • Apache FreeMarker
  • Apache Gora
  • Apache Groovy
  • Apache Gump
  • Apache Hadoop
  • Apache Helix
  • Apache Hive
  • Apache Hop
  • Apache Iceberg
  • Apache Ignite
  • Apache Ivy
  • Apache James
  • Apache Jena
  • Apache Kafka
  • Apache Kylin
  • Apache MINA
  • Apache Maven
  • Apache NiFi
  • Apache ORC
  • Apache Olingo
  • Apache OpenJPA
  • Apache OpenOffice
  • Apache OpenWebBeans
  • Apache Ozone
  • Apache POI
  • Apache Phoenix
  • Apache Pig
  • Apache Pivot
  • Apache Portals
  • Apache Pulsar
  • Apache Ranger
  • Apache Ratis
  • Apache Roller
  • Apache Rya
  • Apache SINGA
  • Apache Serf
  • Apache ShenYu
  • Apache SkyWalking
  • Apache Sling
  • Apache SpamAssassin
  • Apache Spark
  • Apache Spatial
  • Apache Storm
  • Apache Streams
  • Apache Struts
  • Apache Subversion
  • Apache Superset
  • Apache Synapse
  • Apache TVM
  • Apache Tapestry
  • Apache Tcl
  • Apache Tez
  • Apache Tika
  • Apache Traffic Control
  • Apache Traffic Server
  • Apache Turbine
  • Apache Velocity
  • Apache Web Services
  • Apache XML Graphics
  • Apache ZooKeeper
  • Appium
  • Argo
  • BFE
  • Backstage
  • Blender
  • Buildpacks
  • C#
  • C++
  • CRI-O
  • Chef
  • ClickHouse
  • Cloud Custodian
  • Consul
  • Contour
  • Copa
  • Dex
  • Django
  • Docker
  • Docker Swarm
  • Eclipse
  • Elastic Stack
  • Elasticsearch
  • Elk
  • Elk Stack
  • Envoy
  • Ethereum
  • Falco
  • FastAPI
  • Fluid
  • Flux
  • Git
  • Grafana
  • HAMI
  • Harbor
  • Hashicorp Vault
  • Helm
  • Hexa
  • Hibernate
  • Hugging Face Transformers
  • Interlink
  • Istio
  • JBoss
  • JUnit
  • Jenkins
  • Jest
  • Jupyter
  • KEDA
  • Kafka Connect
  • Keycloak
  • Kibana
  • Koordinator
  • Kotlin
  • Kubeflow
  • Kubernetes
  • Kubernetes Operators
  • Kuma
  • Lean
  • Lightning Web Components
  • Lima
  • Linux
  • Llama
  • Logstash
  • Matplotlib
  • Maven Central
  • MongoDB
  • MySQL
  • NATS
  • Nexus
  • Node.js
  • NumPy
  • ORAS
  • Open Policy Agent
  • OpenSearch
  • OpenTelemetry
  • OpenTofu
  • PHP
  • Pandas
  • Perl
  • Pixie
  • Playwright
  • Podman
  • Porter
  • PostgreSQL
  • PowerShell
  • Prometheus
  • Pulumi
  • PySpark
  • PyTorch
  • Python
  • R
  • RabbitMQ
  • Radius
  • Ratify
  • React
  • React Native
  • Redis
  • Redux
  • Rook
  • SPIRE
  • SVN
  • Scala
  • Score
  • Semantic Kernel
  • Sonar
  • SonarQube
  • Spring
  • Spring Batch
  • Spring Boot
  • Spring Boot Admin Console
  • Spring Cloud
  • Spring Cloud Stream
  • Spring Framework
  • Spring Security
  • Swift
  • TensorFlow
  • Terraform
  • TiKV
  • Vault
  • Vite
  • Vitess
  • Vue.js
  • Wireshark
  • WordPress
  • YARN
  • Zot
  • eBPF
  • gRPC
  • jQuery
  • werf

Standards — Total: 214

  • ACID
  • AIS
  • AUTHORS.md
  • Acceptance Criteria
  • Accessibility Standards
  • Accounting Standards
  • Actor Model
  • Agile
  • Agile Delivery
  • Agile Methodology
  • Architectural Design Patterns
  • Architecture Pattern
  • BDD
  • BLE
  • Banking Regulation
  • Big O Notation
  • CCPA
  • CHANGELOG.md
  • CITATION.cff
  • CNCF
  • CODE_OF_CONDUCT.md
  • CONTRIBUTING.md
  • CONTRIBUTORS.md
  • CQRS
  • CSS
  • Capital Requirements
  • Certificate Enrolment Protocols
  • Communication Protocols
  • Component Model
  • Configuration Language
  • Consensus
  • Convention Over Configuration
  • Cybersecurity Standards
  • DHCP
  • DNS
  • DOT Regulations
  • DSL
  • Data Flow Diagrams
  • Data Modeling
  • Data Models
  • Data Privacy Standards
  • Database Schema Design
  • Defense In Depth
  • Dependency Injection
  • Design Patterns
  • Design Standards
  • DevOps
  • DevSecOps
  • Development Methodology
  • Disclosure Requirements
  • Domain-Driven Design
  • Enterprise Integration Patterns
  • Entity Relationship
  • Equator Principles
  • Event Sourcing
  • Event-driven Architecture
  • Extreme Programming
  • FTP
  • File Format
  • FinOps
  • Flowcharts
  • Functional Programming
  • GDPR
  • Gherkin
  • GitOps
  • GraphQL
  • HIPAA
  • HTML
  • HTML5
  • HTTP
  • HTTP/2
  • IAM
  • ISO
  • IT Standards
  • ITIL
  • ITSM
  • Integration Patterns
  • Interface Specifications
  • Internal Control Standards
  • Inversion Of Control
  • JDBC
  • JMS
  • JPA
  • JSON
  • Jakarta EE
  • Java EE
  • Kanban
  • LDAP
  • LICENSE.md
  • Lakehouse Architecture
  • Lean Management
  • Lean Manufacturing
  • Lean Operations
  • Lean Six Sigma
  • Lean Six Sigma Black Belt
  • MLOps
  • MVC
  • MapReduce
  • Methodology
  • Mockups
  • Modeling Language
  • NFC
  • NIO
  • NIST
  • Network Protocols
  • Normalization
  • OAuth
  • OCI
  • OData
  • OIDC
  • OSHA
  • OWASP
  • Object-Oriented Programming
  • OpenAPI
  • OpenID Connect
  • PCI Compliance
  • PDF
  • POSIX
  • Partitioning
  • Privacy By Design
  • Process Flow Diagrams
  • Product Backlog
  • Product Backlog Items
  • Product Specifications
  • Project Management Methodology
  • Protocol Buffers
  • Prototypes
  • Pub/Sub
  • QoS
  • Quality Of Service
  • Quality Standards
  • RACI
  • RBAC
  • RDP
  • REST
  • RESTful
  • RFID
  • RPC
  • RTSP
  • Raft
  • Reactive Programming
  • Regular Expressions
  • Regulation
  • Regulatory
  • Relational Data Modeling
  • Reporting Templates
  • Runbooks
  • SAFe Agile
  • SAML
  • SCADA
  • SDLC
  • SECURITY.md
  • SFTP
  • SOA
  • SOAP
  • SPA
  • SQL
  • SSH
  • SSL/TLS
  • SSO
  • SUPPORT.md
  • Scaled Agile
  • Schema Design
  • Schema Validation
  • Scrum
  • SecOps
  • Secure Software Development Life Cycle
  • Secure Software Development Lifecycle
  • Secure-by-Design
  • Security By Design
  • Security Protocols
  • Security Standards
  • Security Standards And Procedures
  • Service Oriented Architecture
  • Six Sigma
  • Sketches
  • Software Design Architectural Patterns
  • Software Design Patterns
  • Software Development Life Cycle
  • Software Development Lifecycle
  • Software-Defined Networking
  • Specification
  • Standard Operating Procedures
  • Standardization
  • Standards
  • Swagger
  • TCP/IP
  • Table Format
  • Technical Specifications
  • Technology Standards
  • Templates
  • Test Cases
  • Test First
  • Test Plans
  • Test Scripts
  • Test Specifications
  • Test Suites
  • Test-driven Development
  • UML
  • Underwriting Standards
  • Use Cases
  • User Stories
  • VPN
  • WCAG
  • WSDL
  • Waterfall
  • WebSockets
  • Wireframes
  • Write Ahead Log
  • XML
  • XSLT
  • Zero Trust
  • Zero Trust Architecture
  • Zero-Trust Security Model

Why do we do this?

  • Understand the state of the market by industry.
  • Meet new and diverse design partners across verticals.
  • Help us prioritize industry-specific business capabilities.

Who is this for?

  • AI, API, integration and platform leadership within the industry.
  • The C-Suite looking to benchmark their enterprise against peers.
  • Analysts and media outlets reporting on industry-level technology trends.

Why become a design partner?

  • Collaboration to define industry-wide capabilities and benchmarks.
  • Obtain more control over the integrations your industry depends on.
  • Help shape the Naftiko roadmap to meet your vertical’s needs.

About This Research

  • Signals aggregate how we rate investments across all companies in the industry.
  • Areas reveal the technology areas being invested in across the vertical.
  • Services show which SaaS platforms appear across industry companies.
  • Tools highlight the open-source investments being made industry-wide.
  • Standards speak to how aligned integrations are with market standards.

About This Guidance

  • Impact Report provides a narrative analysis of the industry’s collective AI investment posture.
  • Impact Pages outlines the layered data behind the industry’s AI response, with company rankings per signal area.
  • Companies lists all organizations tracked in this industry vertical.
  • Radar maps the maturity of technology investments across the industry.
  • Capabilities are Naftiko definitions for how industry-common services and tools can deliver AI-driven business value.
  • Navigation highlights strategic opportunities for this industry vertical.

What This Means For You

See where you stand, decide what to build, control what you build — grounded in public-data signals, not boilerplate best practice.

01

Where you stand

The leads, the gaps, and where AI has shifted the gradient — in numbers from public data, not vendor decks.

See full report →
02

What to build

Capabilities being built across the peer set — tied to the markets you actually serve.

View capabilities →
03

Where to go next

A prioritized roadmap grounded in signal data. Not a generic best-practices deck, not a vendor-shaped pitch.

Get your navigation →
04

Control what you build

Run it on infrastructure you control. Open source — fork it, audit it, run it on your stack. No vendor lock-in.

First capability live in 90 days.

Become a design partner →