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.
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 HoldingsFortune 1000 company Allison Transmission Holdings. Public API documentation has not yet been catalogued in...
- American Axle and ManufacturingAmerican Axle & Manufacturing (AAM), now operating as Dauch Corporation following the February 2026 acquisition...
- Asbury Automotive GroupAsbury Automotive Group is one of the largest automotive retailers in the United States, operating...
- AutolivAutoliv is the world's largest automotive safety supplier, designing, manufacturing, and selling airbags, seatbelts, steering...
- AutoNationAutoNation is the largest automotive retailer in the United States, operating over 250 new and...
- BMWA German multinational manufacturer of luxury vehicles, motorcycles, and engines. Produces premium automobiles under the...
- BorgWarnerBorgWarner is a global automotive supplier designing and manufacturing propulsion systems, thermal management, battery systems,...
- CarvanaCarvana is an e-commerce platform for buying, selling, and financing used cars online, featuring home...
- Cooper Standard HoldingsCooper Standard Holdings is a global automotive supplier headquartered in Northville, Michigan, that designs, engineers,...
- CumminsCummins is a global power leader that designs, manufactures, distributes, and services diesel and natural...
- DanaDana Incorporated is a global supplier of fully integrated drivetrain and electrified propulsion systems for...
- FordAn American multinational automobile manufacturer and one of the largest automakers in the world. Produces...
- Ford MotorFord Motor Company is a global automotive manufacturer that designs, manufactures, markets, and services a...
- Garrett MotionProfile for Garrett Motion in the API Evangelist network. Fortune F1000 (rank 739).
- General MotorsOne of the world's largest automakers designing, manufacturing, and selling vehicles under brands like Chevrolet,...
- Goodyear Tire & RubberThe Goodyear Tire & Rubber Company is a global tire manufacturer that provides developer APIs...
- Group 1 AutomotiveGroup 1 Automotive is an international Fortune 500 automotive retailer with automotive dealerships and collision...
- Harley-DavidsonShop the Official Harley-Davidson site for new and used motorcycles, genuine parts and apparel. Locate...
- HertzIn airports around the world and rental car locations near you, get a great selection...
- HondaA Japanese multinational manufacturer of automobiles, motorcycles, and power equipment. The world's largest motorcycle manufacturer...
- HyundaiA South Korean multinational automotive manufacturer and one of the world's largest car companies. Produces...
- LearLear Corporation is a Fortune 500 global automotive technology leader in Seating and E-Systems, delivering...
- Lithia MotorsLithia Motors is one of the largest automotive retailers in the United States, operating new...
- LKQ CorporationLKQ Corporation is a Fortune 500 company and a leading provider of alternative and specialty...
- LyftLyft is a transportation network company that develops, markets, and operates a mobile app offering...
- Mercedes-BenzA German multinational automotive company and one of the world's most recognizable luxury vehicle manufacturers....
- PACCARPACCAR is a global technology leader in the design, manufacture, and customer support of premium...
- PenskeA diversified transportation services conglomerate operating truck leasing, logistics, automotive retail, and professional motorsports across...
- Penske AutomotivePenske Automotive Group is a Fortune 500 diversified international transportation services company that operates automotive...
- PolarisProfile for Polaris in the API Evangelist network. Fortune F500 (rank 424).
- REV GroupProfile for REV Group in the API Evangelist network. Fortune F1000 (rank 892).
- Rivian AutomotiveRivian Automotive is an American electric vehicle manufacturer that designs and builds adventure-oriented electric trucks,...
- Rush EnterprisesRush Enterprises is the largest network of commercial vehicle dealerships in North America, operating Rush...
- Ryder SystemRyder System, Inc. is a leading provider of supply chain, dedicated transportation, and fleet management...
- Sonic AutomotiveSonic Automotive is one of the largest automotive retailers in the United States, operating 100+...
- TeslaAn American electric vehicle and clean energy company that transformed the global automotive industry. Designs...
- Thor IndustriesThor Industries is the world's largest manufacturer of recreational vehicles, owning subsidiary brands including Airstream,...
- Toyota Motor CorporationThe world's largest automobile manufacturer by production volume, producing a wide range of vehicles from...
- VisteonVisteon Corporation is a global automotive electronics supplier providing innovative cockpit electronics products and connected...
- VolkswagenA German multinational automotive manufacturer and one of the world's largest automakers by revenue. Operates...
- VontierVontier is a global mobility technology company serving convenience stores, fleet operators, and auto repair...
- Wabash NationalProfile for Wabash National in the API Evangelist network. Fortune F1000 (rank 913).
- Winnebago IndustriesWinnebago 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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Retrieves real-time vehicle telemetry data from AWS IoT Core by VIN, returning location, speed, battery level, and engine status.
naftiko: '0.5'
info:
label: AWS IoT Vehicle Telemetry Lookup
description: Retrieves real-time vehicle telemetry data from AWS IoT Core by VIN, returning location, speed, battery level, and engine status.
tags:
- connected-car
- telemetry
- amazon-web-services
capability:
exposes:
- type: mcp
namespace: vehicle-telemetry
port: 8080
tools:
- name: get-telemetry
description: Get real-time vehicle telemetry by VIN.
inputParameters:
- name: vin
in: body
type: string
description: The vehicle identification number.
call: aws-iot.get-thing-shadow
with:
thing_name: vehicle_{{vin}}
outputParameters:
- name: location
type: object
mapping: $.state.reported.location
- name: speed
type: number
mapping: $.state.reported.speed
- name: battery_level
type: number
mapping: $.state.reported.batteryLevel
consumes:
- type: http
namespace: aws-iot
baseUri: https://iot.us-east-1.amazonaws.com
authentication:
type: bearer
token: $secrets.aws_iot_token
resources:
- name: shadows
path: /things/{{thing_name}}/shadow
inputParameters:
- name: thing_name
in: path
operations:
- name: get-thing-shadow
method: GET
Retrieves 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
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
Aggregates dealer sales data from Salesforce, service metrics from ServiceNow, customer satisfaction from Google Forms, and generates a quarterly performance review report posted to SharePoint and Microsoft Teams.
naftiko: '0.5'
info:
label: Dealer Performance Review Generator
description: Aggregates dealer sales data from Salesforce, service metrics from ServiceNow, customer satisfaction from Google Forms, and generates a quarterly performance review report posted to SharePoint and Microsoft Teams.
tags:
- dealer-management
- sales
- salesforce
- servicenow
- sharepoint
- microsoft-teams
- analytics
capability:
exposes:
- type: mcp
namespace: dealer-performance
port: 8080
tools:
- name: generate-dealer-review
description: Given a dealer code and quarter, aggregate performance data from multiple sources and publish a review report.
inputParameters:
- name: dealer_code
in: body
type: string
description: The Hyundai dealer code.
- name: quarter
in: body
type: string
description: The quarter to review (e.g. Q1-2026).
steps:
- name: get-sales-data
type: call
call: salesforce.get-dealer-sales
with:
dealer_code: '{{dealer_code}}'
quarter: '{{quarter}}'
- name: get-service-metrics
type: call
call: servicenow.get-dealer-service-metrics
with:
dealer_code: '{{dealer_code}}'
quarter: '{{quarter}}'
- name: upload-report
type: call
call: sharepoint.upload-file
with:
site_id: dealer_performance
file_path: Reviews/{{dealer_code}}/{{quarter}}_performance.json
content: 'Sales units: {{get-sales-data.units_sold}}. Revenue: {{get-sales-data.revenue}}. Avg service time: {{get-service-metrics.avg_service_hours}}h. CSAT: {{get-service-metrics.avg_csat}}.'
- name: notify-regional-manager
type: call
call: msteams.post-channel
with:
channel_id: dealer-performance
text: 'Dealer {{dealer_code}} {{quarter}} review ready. Sales: {{get-sales-data.units_sold}} units (${{get-sales-data.revenue}}). Service CSAT: {{get-service-metrics.avg_csat}}/10. Report: {{upload-report.url}}'
consumes:
- type: http
namespace: salesforce
baseUri: https://hyundai.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: dealer-sales
path: /query?q=SELECT+SUM(Units_Sold__c),SUM(Revenue__c)+FROM+Dealer_Sales__c+WHERE+Dealer_Code__c='{{dealer_code}}'+AND+Quarter__c='{{quarter}}'
inputParameters:
- name: dealer_code
in: query
- name: quarter
in: query
operations:
- name: get-dealer-sales
method: GET
- type: http
namespace: servicenow
baseUri: https://hyundai.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: service-metrics
path: /table/u_dealer_service_metrics?sysparm_query=u_dealer_code={{dealer_code}}^u_quarter={{quarter}}
inputParameters:
- name: dealer_code
in: query
- name: quarter
in: query
operations:
- name: get-dealer-service-metrics
method: GET
- type: http
namespace: sharepoint
baseUri: https://graph.microsoft.com/v1.0/sites
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: drive-items
path: /{{site_id}}/drive/root:/{{file_path}}:/content
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/hyundai-dealer-ops/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel
method: POST
When a new lead arrives in Salesforce, enriches the contact with LinkedIn profile data via HubSpot, assigns to the nearest dealer in Google Maps, and alerts the dealer sales manager in Microsoft Teams.
naftiko: '0.5'
info:
label: Dealer Sales Lead Enrichment Pipeline
description: When a new lead arrives in Salesforce, enriches the contact with LinkedIn profile data via HubSpot, assigns to the nearest dealer in Google Maps, and alerts the dealer sales manager in Microsoft Teams.
tags:
- sales
- dealer-management
- salesforce
- hubspot
- google-maps
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: dealer-leads
port: 8080
tools:
- name: enrich-and-assign-lead
description: Given a Salesforce lead ID and customer zip code, enrich the lead with HubSpot data, find the nearest dealer via Google Maps, and notify the dealer manager in Teams.
inputParameters:
- name: lead_id
in: body
type: string
description: The Salesforce lead record ID.
- name: customer_zip
in: body
type: string
description: The customer postal/zip code for dealer proximity matching.
steps:
- name: get-lead
type: call
call: salesforce.get-lead
with:
lead_id: '{{lead_id}}'
- name: enrich-contact
type: call
call: hubspot.enrich-contact
with:
email: '{{get-lead.email}}'
- name: find-nearest-dealer
type: call
call: gmaps.find-nearest
with:
zip_code: '{{customer_zip}}'
type: hyundai_dealer
- name: notify-dealer-manager
type: call
call: msteams.send-message
with:
recipient_upn: '{{find-nearest-dealer.manager_email}}'
text: 'New lead assigned: {{get-lead.first_name}} {{get-lead.last_name}} ({{get-lead.email}}). Interested in: {{get-lead.vehicle_interest}}. Enrichment: {{enrich-contact.company}}, {{enrich-contact.job_title}}. Dealer: {{find-nearest-dealer.dealer_name}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://hyundai.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: leads
path: /sobjects/Lead/{{lead_id}}
inputParameters:
- name: lead_id
in: path
operations:
- name: get-lead
method: GET
- type: http
namespace: hubspot
baseUri: https://api.hubapi.com/contacts/v1
authentication:
type: bearer
token: $secrets.hubspot_token
resources:
- name: contacts
path: /contact/email/{{email}}/profile
inputParameters:
- name: email
in: path
operations:
- name: enrich-contact
method: GET
- type: http
namespace: gmaps
baseUri: https://maps.googleapis.com/maps/api
authentication:
type: bearer
token: $secrets.google_maps_key
resources:
- name: places
path: /place/nearbysearch/json?location={{zip_code}}&keyword={{type}}&rankby=distance
inputParameters:
- name: zip_code
in: query
- name: type
in: query
operations:
- name: find-nearest
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
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
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
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
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
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
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
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
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
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
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
When a dealer's parts inventory falls below a minimum threshold in Salesforce, creates a SAP purchase requisition and notifies the parts manager via Microsoft Teams.
naftiko: '0.5'
info:
label: Parts Reorder Automation
description: When a dealer's parts inventory falls below a minimum threshold in Salesforce, creates a SAP purchase requisition and notifies the parts manager via Microsoft Teams.
tags:
- supply-chain
- dealer-management
- salesforce
- sap
- microsoft-teams
- inventory
capability:
exposes:
- type: mcp
namespace: parts-reorder
port: 8080
tools:
- name: reorder-parts
description: Given a dealer code and part number, check current inventory in Salesforce, create a SAP purchase requisition, and notify the parts manager.
inputParameters:
- name: dealer_code
in: body
type: string
description: The Hyundai dealer code.
- name: part_number
in: body
type: string
description: The Hyundai part number.
- name: reorder_quantity
in: body
type: number
description: The quantity to reorder.
steps:
- name: check-inventory
type: call
call: salesforce.get-parts-inventory
with:
dealer_code: '{{dealer_code}}'
part_number: '{{part_number}}'
- name: create-requisition
type: call
call: sap.create-purchase-req
with:
material_number: '{{part_number}}'
quantity: '{{reorder_quantity}}'
plant: '{{check-inventory.supply_plant}}'
delivery_date: '{{check-inventory.next_delivery_date}}'
- name: notify-parts-manager
type: call
call: msteams.send-message
with:
recipient_upn: '{{check-inventory.parts_manager_email}}'
text: 'Parts reorder: Part {{part_number}} for dealer {{dealer_code}}. Current stock: {{check-inventory.current_qty}}. Reorder qty: {{reorder_quantity}}. SAP PR: {{create-requisition.requisition_number}}.'
consumes:
- type: http
namespace: salesforce
baseUri: https://hyundai.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: parts-inventory
path: /query?q=SELECT+Current_Qty__c,Supply_Plant__c,Parts_Manager_Email__c+FROM+Parts_Inventory__c+WHERE+Dealer_Code__c='{{dealer_code}}'+AND+Part_Number__c='{{part_number}}'
inputParameters:
- name: dealer_code
in: query
- name: part_number
in: query
operations:
- name: get-parts-inventory
method: GET
- type: http
namespace: sap
baseUri: https://hyundai-s4.sap.com/sap/opu/odata/sap/MM_PUR_REQ_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: purchase-requisitions
path: /A_PurchaseRequisition
operations:
- name: create-purchase-req
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Queries 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
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
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
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
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
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
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
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
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
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
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
When a connected vehicle reports a critical DTC via Bluelink, looks up the vehicle owner in Salesforce, creates a ServiceNow case, and notifies the nearest dealer service center via Microsoft Teams.
naftiko: '0.5'
info:
label: Connected Vehicle Diagnostic Alert Handler
description: When a connected vehicle reports a critical DTC via Bluelink, looks up the vehicle owner in Salesforce, creates a ServiceNow case, and notifies the nearest dealer service center via Microsoft Teams.
tags:
- connected-car
- diagnostics
- bluelink
- salesforce
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: vehicle-diagnostics
port: 8080
tools:
- name: handle-diagnostic-alert
description: Given a VIN and DTC code, look up the vehicle owner, create a service case, and notify the dealer.
inputParameters:
- name: vin
in: body
type: string
description: The 17-character VIN.
- name: dtc_code
in: body
type: string
description: The diagnostic trouble code (e.g. P0300).
- name: severity
in: body
type: string
description: The severity level (CRITICAL, WARNING, INFO).
steps:
- name: get-vehicle-data
type: call
call: bluelink.get-vehicle-info
with:
vin: '{{vin}}'
- name: get-owner
type: call
call: salesforce.get-owner
with:
vin: '{{vin}}'
- name: create-service-case
type: call
call: servicenow.create-case
with:
short_description: DTC {{dtc_code}} — VIN {{vin}} — {{severity}}
description: 'Vehicle {{get-vehicle-data.model}} {{get-vehicle-data.year}} (VIN: {{vin}}) reported DTC {{dtc_code}} at severity {{severity}}. Owner: {{get-owner.name}} ({{get-owner.email}}). Odometer: {{get-vehicle-data.odometer_km}} km.'
category: vehicle_diagnostic
priority: '1'
- name: notify-dealer
type: call
call: msteams.send-message
with:
recipient_upn: '{{get-owner.dealer_service_email}}'
text: 'Diagnostic alert: {{get-vehicle-data.model}} {{get-vehicle-data.year}} VIN {{vin}} — DTC {{dtc_code}} ({{severity}}). Owner: {{get-owner.name}}. Case: {{create-service-case.number}}. Proactive outreach recommended.'
consumes:
- type: http
namespace: bluelink
baseUri: https://api.bluelink.hyundai.com/v2
authentication:
type: bearer
token: $secrets.bluelink_api_token
resources:
- name: vehicles
path: /vehicles/{{vin}}
inputParameters:
- name: vin
in: path
operations:
- name: get-vehicle-info
method: GET
- type: http
namespace: salesforce
baseUri: https://hyundai.my.salesforce.com/services/data/v59.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: owners
path: /query?q=SELECT+Name,Email,Dealer_Service_Email__c+FROM+Vehicle_Owner__c+WHERE+VIN__c='{{vin}}'
inputParameters:
- name: vin
in: query
operations:
- name: get-owner
method: GET
- type: http
namespace: servicenow
baseUri: https://hyundai.service-now.com/api/now
authentication:
type: basic
username: $secrets.servicenow_user
password: $secrets.servicenow_password
resources:
- name: cases
path: /table/sn_customerservice_case
operations:
- name: create-case
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: messages
path: /users/{{recipient_upn}}/sendMail
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
When a 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
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
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
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
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
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
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
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
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
Retrieves supplier performance metrics from SAP Ariba, and if the composite score falls below threshold, creates a Jira improvement task and notifies the procurement team in Microsoft Teams.
naftiko: '0.5'
info:
label: Supplier Performance Review Escalation
description: Retrieves supplier performance metrics from SAP Ariba, and if the composite score falls below threshold, creates a Jira improvement task and notifies the procurement team in Microsoft Teams.
tags:
- supply-chain
- supplier-management
- sap-ariba
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: supplier-performance
port: 8080
tools:
- name: review-supplier-performance
description: Fetch supplier scorecard from Ariba and escalate underperforming suppliers with a Jira task and Teams notification.
inputParameters:
- name: supplier_id
in: body
type: string
description: The SAP Ariba supplier identifier.
- name: min_score_threshold
in: body
type: number
description: The minimum acceptable composite score.
steps:
- name: get-scorecard
type: call
call: ariba.get-supplier-scorecard
with:
supplier_id: '{{supplier_id}}'
- name: create-improvement-task
type: call
call: jira.create-issue
with:
project_key: SCM
summary: 'Supplier improvement: {{supplier_id}} — Score {{get-scorecard.composite_score}} below {{min_score_threshold}}'
description: 'Supplier {{supplier_id}} scorecard: OTD {{get-scorecard.on_time_delivery_pct}}%, Defect PPM {{get-scorecard.defect_ppm}}, Cost Variance {{get-scorecard.cost_variance_pct}}%. Composite: {{get-scorecard.composite_score}}.'
issue_type: Task
priority: High
- name: notify-procurement
type: call
call: msteams.post-channel
with:
channel_id: supplier-management
text: 'Supplier performance alert: {{supplier_id}} scored {{get-scorecard.composite_score}} (threshold: {{min_score_threshold}}). OTD: {{get-scorecard.on_time_delivery_pct}}%. Defect PPM: {{get-scorecard.defect_ppm}}. Jira: {{create-improvement-task.key}}'
consumes:
- type: http
namespace: ariba
baseUri: https://openapi.ariba.com/api/supplier-management/v1
authentication:
type: bearer
token: $secrets.ariba_token
resources:
- name: scorecards
path: /suppliers/{{supplier_id}}/scorecard
inputParameters:
- name: supplier_id
in: path
operations:
- name: get-supplier-scorecard
method: GET
- type: http
namespace: jira
baseUri: https://hyundai-motor.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/hyundai-procurement/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel
method: POST
When a 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
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
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
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
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
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
Retrieves dealer network performance data from Tableau including sales volume, customer satisfaction scores, and service throughput by region.
naftiko: '0.5'
info:
label: Tableau Dealer Network Performance Snapshot
description: Retrieves dealer network performance data from Tableau including sales volume, customer satisfaction scores, and service throughput by region.
tags:
- analytics
- dealer
- tableau
capability:
exposes:
- type: mcp
namespace: dealer-performance
port: 8080
tools:
- name: get-dealer-performance
description: Get dealer network performance snapshot from Tableau.
inputParameters:
- name: region
in: body
type: string
description: The dealer region.
call: tableau.get-view-data
with:
workbook: dealer-network-performance
view: regional-summary
filter_region: '{{region}}'
outputParameters:
- name: total_units
type: integer
mapping: $.data.summary.totalUnits
- name: avg_csi
type: number
mapping: $.data.summary.avgCSI
consumes:
- type: http
namespace: tableau
baseUri: https://tableau.hyundai.com/api/3.19
authentication:
type: bearer
token: $secrets.tableau_token
resources:
- name: views
path: /sites/hyundai/workbooks/{{workbook}}/views/{{view}}/data
inputParameters:
- name: workbook
in: path
- name: view
in: path
operations:
- name: get-view-data
method: GET
Retrieves the status of a Terraform Cloud workspace run for EV charging infrastructure provisioning and posts the apply status to the infrastructure team in Microsoft Teams.
naftiko: '0.5'
info:
label: Terraform Infrastructure Provisioning Tracker
description: Retrieves the status of a Terraform Cloud workspace run for EV charging infrastructure provisioning and posts the apply status to the infrastructure team in Microsoft Teams.
tags:
- infrastructure
- ev-battery
- terraform
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: infra-provisioning
port: 8080
tools:
- name: track-terraform-run
description: Given a Terraform workspace ID and run ID, check the apply status and notify the infrastructure team in Teams.
inputParameters:
- name: workspace_id
in: body
type: string
description: The Terraform Cloud workspace ID.
- name: run_id
in: body
type: string
description: The Terraform Cloud run ID.
steps:
- name: get-run-status
type: call
call: terraform.get-run
with:
run_id: '{{run_id}}'
- name: notify-infra-team
type: call
call: msteams.post-channel
with:
channel_id: ev-infrastructure
text: 'Terraform run {{run_id}} in workspace {{workspace_id}}: Status {{get-run-status.status}}. Resources added: {{get-run-status.resource_additions}}. Changed: {{get-run-status.resource_changes}}. Destroyed: {{get-run-status.resource_destructions}}.'
consumes:
- type: http
namespace: terraform
baseUri: https://app.terraform.io/api/v2
authentication:
type: bearer
token: $secrets.terraform_token
resources:
- name: runs
path: /runs/{{run_id}}
inputParameters:
- name: run_id
in: path
operations:
- name: get-run
method: GET
- type: http
namespace: msteams
baseUri: https://graph.microsoft.com/v1.0
authentication:
type: bearer
token: $secrets.msgraph_token
resources:
- name: channel-messages
path: /teams/hyundai-infra/channels/{{channel_id}}/messages
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel
method: POST
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Retrieves the current sprint status for a Jira board used by vehicle engineering teams. Returns sprint name, story points completed, remaining, and burndown velocity.
naftiko: '0.5'
info:
label: Jira Engineering Sprint Status
description: Retrieves the current sprint status for a Jira board used by vehicle engineering teams. Returns sprint name, story points completed, remaining, and burndown velocity.
tags:
- engineering
- project-management
- jira
capability:
exposes:
- type: mcp
namespace: engineering-sprints
port: 8080
tools:
- name: get-sprint-status
description: Fetch the active sprint status for a Jira board by board ID. Returns sprint name, total story points, completed points, remaining points, and velocity.
inputParameters:
- name: board_id
in: body
type: string
description: The Jira board ID for the engineering team.
call: jira.get-active-sprint
with:
board_id: '{{board_id}}'
outputParameters:
- name: sprint_name
type: string
mapping: $.values[0].name
- name: total_points
type: number
mapping: $.values[0].totalPoints
- name: completed_points
type: number
mapping: $.values[0].completedPoints
- name: velocity
type: number
mapping: $.values[0].velocity
consumes:
- type: http
namespace: jira
baseUri: https://hyundai-motor.atlassian.net/rest/agile/1.0
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: sprints
path: /board/{{board_id}}/sprint?state=active
inputParameters:
- name: board_id
in: path
operations:
- name: get-active-sprint
method: GET
Retrieves the current sprint status and velocity for a vehicle platform development project in Jira.
naftiko: '0.5'
info:
label: Jira Vehicle Platform Project Status
description: Retrieves the current sprint status and velocity for a vehicle platform development project in Jira.
tags:
- engineering
- project
- jira
capability:
exposes:
- type: mcp
namespace: platform-projects
port: 8080
tools:
- name: get-project-status
description: Get vehicle platform project sprint status.
inputParameters:
- name: board_id
in: body
type: string
description: The Jira board ID.
call: jira.get-active-sprint
with:
board: '{{board_id}}'
outputParameters:
- name: sprint_name
type: string
mapping: $.values[0].name
- name: goal
type: string
mapping: $.values[0].goal
consumes:
- type: http
namespace: jira
baseUri: https://hyundai.atlassian.net/rest/agile/1.0
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: sprints
path: /board/{{board}}/sprint?state=active
inputParameters:
- name: board
in: path
operations:
- name: get-active-sprint
method: GET
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
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
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
Adjudicates warranty claims submitted by Hyundai dealers, validating coverage eligibility, repair codes, and labor time against warranty policy rules.
naftiko: '0.5'
info:
label: Warranty Claim Adjudication Pipeline
description: Adjudicates warranty claims submitted by Hyundai dealers, validating coverage eligibility, repair codes, and labor time against warranty policy rules.
tags:
- warranty
- claims-processing
- dealer-management
capability:
exposes:
- type: mcp
namespace: warranty-claims
port: 8080
tools:
- name: adjudicate-warranty-claim
description: Adjudicate a dealer-submitted warranty claim.
inputParameters:
- name: claim_id
in: body
type: string
description: The warranty claim identifier.
- name: dealer_id
in: body
type: string
description: The submitting dealer identifier.
call: warranty-api.adjudicate-claim
with:
claim: '{{claim_id}}'
dealer: '{{dealer_id}}'
outputParameters:
- name: adjudication_result
type: string
mapping: $.claim.result
- name: approved_amount
type: number
mapping: $.claim.approvedAmount
- name: denial_reason
type: string
mapping: $.claim.denialReason
consumes:
- type: http
namespace: warranty-api
baseUri: https://api.hyundai.com/warranty/v1
authentication:
type: bearer
token: $secrets.hyundai_warranty_api_token
resources:
- name: claims
path: /claims/{{claim}}/adjudicate
inputParameters:
- name: claim
in: path
operations:
- name: adjudicate-claim
method: POST
Manages weld quality inspections by pulling vision system data from the MES, logging results in SAP QM, and alerting quality engineers via Slack on failures.
naftiko: '0.5'
info:
label: Weld Quality Inspection Pipeline
description: Manages weld quality inspections by pulling vision system data from the MES, logging results in SAP QM, and alerting quality engineers via Slack on failures.
tags:
- quality
- manufacturing
- sap
- slack
capability:
exposes:
- type: mcp
namespace: weld-inspection
port: 8080
tools:
- name: process-weld-inspection
description: Process weld quality inspection results.
inputParameters:
- name: body_number
in: body
type: string
description: The vehicle body number.
- name: station_id
in: body
type: string
description: The welding station ID.
steps:
- name: get-vision-results
type: call
call: mes.get-weld-inspection
with:
body: '{{body_number}}'
station: '{{station_id}}'
- name: log-in-sap
type: call
call: sap-qm.create-inspection-lot
with:
body: '{{body_number}}'
station: '{{station_id}}'
result: '{{get-vision-results.pass_fail}}'
defects: '{{get-vision-results.defect_count}}'
- name: alert-on-failure
type: call
call: slack.post-message
with:
channel: quality-weld-alerts
text: 'Weld inspection: Body {{body_number}} at station {{station_id}} - {{get-vision-results.pass_fail}}. Defects: {{get-vision-results.defect_count}}. SAP lot: {{log-in-sap.lot_number}}.'
consumes:
- type: http
namespace: mes
baseUri: https://mes.hyundai.com/api/v1
authentication:
type: bearer
token: $secrets.mes_token
resources:
- name: inspections
path: /bodies/{{body}}/stations/{{station}}/weld-inspection
inputParameters:
- name: body
in: path
- name: station
in: path
operations:
- name: get-weld-inspection
method: GET
- type: http
namespace: sap-qm
baseUri: https://hyundai-s4.sap.com/sap/opu/odata/sap/ZQM_INSPECTION_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: lots
path: /InspectionLotSet
operations:
- name: create-inspection-lot
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Retrieves 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
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
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
Escalates supplier part shortages by checking SAP inventory, contacting the supplier via the procurement portal, and alerting production planning via Slack.
naftiko: '0.5'
info:
label: Supplier Part Shortage Escalation Orchestrator
description: Escalates supplier part shortages by checking SAP inventory, contacting the supplier via the procurement portal, and alerting production planning via Slack.
tags:
- supply-chain
- procurement
- sap
- slack
capability:
exposes:
- type: mcp
namespace: part-shortage
port: 8080
tools:
- name: escalate-shortage
description: Escalate a supplier part shortage.
inputParameters:
- name: part_number
in: body
type: string
description: The part number.
- name: plant_code
in: body
type: string
description: The plant code.
steps:
- name: check-inventory
type: call
call: sap.get-stock
with:
material: '{{part_number}}'
plant: '{{plant_code}}'
- name: contact-supplier
type: call
call: procurement-portal.create-urgent-request
with:
part: '{{part_number}}'
current_stock: '{{check-inventory.available_quantity}}'
days_of_supply: '{{check-inventory.days_of_supply}}'
- name: alert-planning
type: call
call: slack.post-message
with:
channel: plant-{{plant_code}}-planning
text: 'PART SHORTAGE: {{part_number}} at plant {{plant_code}}. Stock: {{check-inventory.available_quantity}} ({{check-inventory.days_of_supply}} days). Supplier notified: {{contact-supplier.request_id}}.'
consumes:
- type: http
namespace: sap
baseUri: https://hyundai-s4.sap.com/sap/opu/odata/sap/ZMM_STOCK_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: stock
path: /StockSet(Material='{{material}}',Plant='{{plant}}')
inputParameters:
- name: material
in: path
- name: plant
in: path
operations:
- name: get-stock
method: GET
- type: http
namespace: procurement-portal
baseUri: https://procurement.hyundai.com/api/v1
authentication:
type: bearer
token: $secrets.procurement_token
resources:
- name: requests
path: /urgent-requests
operations:
- name: create-urgent-request
method: POST
- type: http
namespace: slack
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Retrieves 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Queries Snowflake for Autopilot disengagement event statistics over a specified period.
naftiko: '0.5'
info:
label: Snowflake Autopilot Disengagement Query
description: Queries Snowflake for Autopilot disengagement event statistics over a specified period.
tags:
- analytics
- snowflake
- autopilot
capability:
exposes:
- type: mcp
namespace: autopilot-analytics
port: 8080
tools:
- name: get-disengagement-stats
description: Given a time range, return Autopilot disengagement statistics from Snowflake. Use for safety metrics reporting.
inputParameters:
- name: time_range
in: body
type: string
description: Time range for the query (e.g. last_7d).
call: snowflake-ap.run-query
with:
time_range: '{{time_range}}'
outputParameters:
- name: stats
type: object
mapping: $.data
consumes:
- type: http
namespace: snowflake-ap
baseUri: https://tesla.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
Queries 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
Tracks ML experiment results from GitHub Actions, logs metrics to Snowflake, and posts training run summaries to the ML team Slack channel.
naftiko: '0.5'
info:
label: GitHub ML Experiment Tracker
description: Tracks ML experiment results from GitHub Actions, logs metrics to Snowflake, and posts training run summaries to the ML team Slack channel.
tags:
- ai
- github
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: ml-experiments
port: 8080
tools:
- name: handle-ml-experiment
description: Given a GitHub Actions run ID and experiment name, track results, log to Snowflake, and post a summary to the ML team Slack channel.
inputParameters:
- name: run_id
in: body
type: integer
description: GitHub Actions workflow run ID.
- name: experiment_name
in: body
type: string
description: Name of the ML experiment.
steps:
- name: get-run
type: call
call: github-ml.get-run
with:
run_id: '{{run_id}}'
- name: log-metrics
type: call
call: snowflake-ml.run-query
with:
experiment: '{{experiment_name}}'
run_id: '{{run_id}}'
- name: notify-ml
type: call
call: slack-ml.post-message
with:
channel: ml-experiments
text: 'ML Experiment: {{experiment_name}} | Run: {{run_id}} | Status: {{get-run.conclusion}} | Logged to Snowflake'
consumes:
- type: http
namespace: github-ml
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: runs
path: /repos/tesla/ml-platform/actions/runs/{{run_id}}
inputParameters:
- name: run_id
in: path
operations:
- name: get-run
method: GET
- type: http
namespace: snowflake-ml
baseUri: https://tesla.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: slack-ml
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a 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
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
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
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
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
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
Transfers a customer-reported issue from a Salesforce case to a Jira engineering ticket and notifies the engineering team in Slack.
naftiko: '0.5'
info:
label: Jira Customer Issue to Engineering Handoff
description: Transfers a customer-reported issue from a Salesforce case to a Jira engineering ticket and notifies the engineering team in Slack.
tags:
- support
- jira
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: support-handoff
port: 8080
tools:
- name: handle-customer-handoff
description: Given a Salesforce case ID, create a Jira engineering ticket and notify the engineering team in Slack.
inputParameters:
- name: case_id
in: body
type: string
description: Salesforce case record ID.
- name: engineering_project
in: body
type: string
description: Jira project key for the engineering team.
steps:
- name: get-case
type: call
call: sf-support.get-case
with:
case_id: '{{case_id}}'
- name: create-ticket
type: call
call: jira-eng.create-issue
with:
project_key: '{{engineering_project}}'
issuetype: Bug
summary: 'Customer issue: {{get-case.Subject}}'
description: 'Escalated from Salesforce case {{case_id}}. Customer: {{get-case.Contact.Name}}. Description: {{get-case.Description}}'
- name: notify-eng
type: call
call: slack-eng.post-message
with:
channel: engineering-escalations
text: 'CUSTOMER ESCALATION: {{get-case.Subject}} | Case: {{case_id}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: sf-support
baseUri: https://tesla.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: cases
path: /sobjects/Case/{{case_id}}
inputParameters:
- name: case_id
in: path
operations:
- name: get-case
method: GET
- type: http
namespace: jira-eng
baseUri: https://tesla.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-eng
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Retrieves the review status of a pull request in the Autopilot repository.
naftiko: '0.5'
info:
label: GitHub Autopilot PR Status
description: Retrieves the review status of a pull request in the Autopilot repository.
tags:
- engineering
- github
- autopilot
capability:
exposes:
- type: mcp
namespace: autopilot-dev
port: 8080
tools:
- name: get-pr-status
description: Given a PR number, return the review status of an Autopilot pull request. Use for merge readiness checks.
inputParameters:
- name: pr_number
in: body
type: integer
description: Pull request number to check.
call: github-ap.get-pr
with:
pr_number: '{{pr_number}}'
outputParameters:
- name: pr
type: object
mapping: $
consumes:
- type: http
namespace: github-ap
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: pulls
path: /repos/tesla/autopilot/pulls/{{pr_number}}
inputParameters:
- name: pr_number
in: path
operations:
- name: get-pr
method: GET
When 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
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
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
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
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
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
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
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
When an engineer is terminated in Workday, removes their GitHub organization membership, closes open Jira assignments, and notifies HR operations in Slack.
naftiko: '0.5'
info:
label: Workday Engineer Offboarding
description: When an engineer is terminated in Workday, removes their GitHub organization membership, closes open Jira assignments, and notifies HR operations in Slack.
tags:
- hr
- workday
- github
- jira
- slack
- offboarding
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: offboard-engineer
description: 'Given a Workday worker ID, GitHub username, and Jira account ID, remove the engineer from the GitHub organization, search for open Jira issues, and notify #hr-ops in Slack. Use on confirmed engineer terminations from Workday.'
inputParameters:
- name: worker_id
in: body
type: string
description: Workday worker ID of the departing engineer.
- name: github_org
in: body
type: string
description: GitHub organization to remove the engineer from.
- name: github_username
in: body
type: string
description: GitHub username of the departing engineer.
- name: jira_account_id
in: body
type: string
description: Jira account ID to search for open assignments.
steps:
- name: remove-github-member
type: call
call: github-remove.remove-member
with:
org: '{{github_org}}'
username: '{{github_username}}'
- name: find-open-issues
type: call
call: jira-offboard.search-issues
with:
jql: assignee={{jira_account_id}} AND status!=Done
- name: notify-hr
type: call
call: slack-offboard.post-message
with:
channel: hr-ops
text: 'Engineer offboarding: {{github_username}} ({{worker_id}}) removed from GitHub org {{github_org}}. Open Jira issues: {{find-open-issues.total}} — reassign before departure.'
consumes:
- type: http
namespace: github-remove
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: org-members
path: /orgs/{{org}}/members/{{username}}
inputParameters:
- name: org
in: path
- name: username
in: path
operations:
- name: remove-member
method: DELETE
- type: http
namespace: jira-offboard
baseUri: https://tesla.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issue-search
path: /issue/search
inputParameters:
- name: jql
in: query
operations:
- name: search-issues
method: GET
- type: http
namespace: slack-offboard
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a leave request is submitted in Workday, validates team coverage and notifies the manager in Slack for approval.
naftiko: '0.5'
info:
label: Workday Leave Request Manager Notification
description: When a leave request is submitted in Workday, validates team coverage and notifies the manager in Slack for approval.
tags:
- hr
- workday
- slack
- leave-management
capability:
exposes:
- type: mcp
namespace: leave-ops
port: 8080
tools:
- name: handle-leave-request
description: Given a Workday employee ID and leave request details, check team coverage and notify the manager in Slack.
inputParameters:
- name: employee_id
in: body
type: string
description: Workday employee ID requesting leave.
- name: leave_dates
in: body
type: string
description: Requested leave dates.
steps:
- name: get-worker
type: call
call: workday-leave.get-worker
with:
employee_id: '{{employee_id}}'
- name: notify-manager
type: call
call: slack-hr.post-message
with:
channel: manager-approvals
text: 'LEAVE REQUEST: {{get-worker.fullName}} ({{employee_id}}) requests time off: {{leave_dates}}. Please review in Workday.'
consumes:
- type: http
namespace: workday-leave
baseUri: https://wd5-impl-services1.workday.com/ccx/api/v1/tesla
authentication:
type: bearer
token: $secrets.workday_token
resources:
- name: workers
path: /workers/{{employee_id}}
inputParameters:
- name: employee_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: slack-hr
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
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
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
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
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
Retrieves the latest firmware release tag from a Tesla firmware repository on GitHub.
naftiko: '0.5'
info:
label: GitHub Firmware Release Tag Lookup
description: Retrieves the latest firmware release tag from a Tesla firmware repository on GitHub.
tags:
- engineering
- github
- firmware
capability:
exposes:
- type: mcp
namespace: firmware-ops
port: 8080
tools:
- name: get-latest-release
description: Given a repository name, return the latest firmware release tag. Use for OTA deployment validation.
inputParameters:
- name: repo_name
in: body
type: string
description: GitHub repository name for firmware.
call: github-fw.get-release
with:
repo_name: '{{repo_name}}'
outputParameters:
- name: release
type: object
mapping: $
consumes:
- type: http
namespace: github-fw
baseUri: https://api.github.com
authentication:
type: bearer
token: $secrets.github_token
resources:
- name: releases
path: /repos/tesla/{{repo_name}}/releases/latest
inputParameters:
- name: repo_name
in: path
operations:
- name: get-release
method: GET
When 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Generates a weekly SLO compliance report for Cybertruck production line monitoring from Datadog and posts it to the Cybertruck Slack channel.
naftiko: '0.5'
info:
label: Datadog Cybertruck Production SLO Report
description: Generates a weekly SLO compliance report for Cybertruck production line monitoring from Datadog and posts it to the Cybertruck Slack channel.
tags:
- manufacturing
- datadog
- slack
- slo
capability:
exposes:
- type: mcp
namespace: cybertruck-ops
port: 8080
tools:
- name: handle-cybertruck-slo-report
description: Given a Datadog SLO ID for Cybertruck production, generate a weekly compliance report and post to the Cybertruck Slack channel.
inputParameters:
- name: slo_id
in: body
type: string
description: Datadog SLO ID for Cybertruck production.
steps:
- name: get-slo-history
type: call
call: dd-ct.get-slo-history
with:
slo_id: '{{slo_id}}'
- name: post-report
type: call
call: slack-ct.post-message
with:
channel: cybertruck-production
text: 'Weekly Cybertruck SLO Report: Target: {{get-slo-history.target}}% | Actual: {{get-slo-history.overall_status}} | Budget remaining: {{get-slo-history.error_budget_remaining}}%'
consumes:
- type: http
namespace: dd-ct
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: slo-history
path: /slo/{{slo_id}}/history
inputParameters:
- name: slo_id
in: path
operations:
- name: get-slo-history
method: GET
- type: http
namespace: slack-ct
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Queries 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
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
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
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
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
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
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
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
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
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
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
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
Creates a Salesforce service case for a Tesla vehicle service appointment and notifies the service center team in Slack with the appointment details.
naftiko: '0.5'
info:
label: Salesforce EV Service Appointment Scheduling
description: Creates a Salesforce service case for a Tesla vehicle service appointment and notifies the service center team in Slack with the appointment details.
tags:
- crm
- salesforce
- slack
- customer-support
- service
capability:
exposes:
- type: mcp
namespace: service-ops
port: 8080
tools:
- name: schedule-service-appointment
description: Given a Salesforce account ID, vehicle VIN, service type, and preferred date, create a Salesforce service case and notify the service center Slack channel. Use for customer-initiated or automated service appointment booking.
inputParameters:
- name: account_id
in: body
type: string
description: Salesforce account ID for the Tesla vehicle owner.
- name: vin
in: body
type: string
description: Vehicle identification number (VIN) for the service appointment.
- name: service_type
in: body
type: string
description: Type of service required (e.g. Annual Service, Recall, Body Repair).
- name: preferred_date
in: body
type: string
description: Preferred service appointment date in YYYY-MM-DD format.
steps:
- name: create-service-case
type: call
call: sf-cases.create-case
with:
AccountId: '{{account_id}}'
Subject: '{{service_type}} — VIN {{vin}}'
Description: 'Service appointment request for VIN {{vin}}. Type: {{service_type}}. Preferred date: {{preferred_date}}'
Type: Service
- name: notify-service-center
type: call
call: slack-service.post-message
with:
channel: service-center
text: 'New service appointment: VIN {{vin}} | Type: {{service_type}} | Preferred: {{preferred_date}} | Case: {{create-service-case.id}}'
consumes:
- type: http
namespace: sf-cases
baseUri: https://tesla.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_access_token
resources:
- name: cases
path: /sobjects/Case
operations:
- name: create-case
method: POST
- type: http
namespace: slack-service
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Looks up fleet sales contract details in Salesforce for enterprise EV deployments.
naftiko: '0.5'
info:
label: Salesforce Fleet Contract Lookup
description: Looks up fleet sales contract details in Salesforce for enterprise EV deployments.
tags:
- sales
- salesforce
- fleet
capability:
exposes:
- type: mcp
namespace: fleet-ops
port: 8080
tools:
- name: get-contract
description: Given a Salesforce contract ID, return fleet sales contract details. Use for enterprise account management.
inputParameters:
- name: contract_id
in: body
type: string
description: Salesforce contract record ID.
call: sf-fleet.get-contract
with:
contract_id: '{{contract_id}}'
outputParameters:
- name: contract
type: object
mapping: $
consumes:
- type: http
namespace: sf-fleet
baseUri: https://tesla.my.salesforce.com/services/data/v58.0
authentication:
type: bearer
token: $secrets.salesforce_token
resources:
- name: contracts
path: /sobjects/Contract/{{contract_id}}
inputParameters:
- name: contract_id
in: path
operations:
- name: get-contract
method: GET
When a 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
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
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
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
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
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
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
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
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
Queries SAP S/4HANA for supplier on-time delivery and quality metrics for the current quarter, and posts a supplier performance digest to the procurement Slack channel.
naftiko: '0.5'
info:
label: SAP Supplier Performance Report
description: Queries SAP S/4HANA for supplier on-time delivery and quality metrics for the current quarter, and posts a supplier performance digest to the procurement Slack channel.
tags:
- procurement
- sap
- slack
- supplier-management
- reporting
capability:
exposes:
- type: mcp
namespace: supplier-reporting
port: 8080
tools:
- name: digest-supplier-performance
description: 'Given a SAP supplier number and fiscal quarter, query on-time delivery rates and quality rejection counts from SAP S/4HANA, and post a performance summary to the #procurement Slack channel. Use quarterly for supplier review meetings.'
inputParameters:
- name: supplier_number
in: body
type: string
description: SAP supplier account number to evaluate.
- name: fiscal_quarter
in: body
type: string
description: Fiscal quarter to report on (e.g. Q1-2026).
steps:
- name: get-supplier-data
type: call
call: sap-supplier.get-supplier
with:
supplier_number: '{{supplier_number}}'
- name: post-performance
type: call
call: slack-supply.post-message
with:
channel: procurement
text: 'Supplier performance {{fiscal_quarter}}: Supplier {{supplier_number}} ({{get-supplier-data.SupplierName}}). Review on-time delivery and quality metrics in SAP.'
consumes:
- type: http
namespace: sap-supplier
baseUri: https://tesla-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: suppliers
path: /A_Supplier('{{supplier_number}}')
inputParameters:
- name: supplier_number
in: path
operations:
- name: get-supplier
method: GET
- type: http
namespace: slack-supply
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Checks the payment status of a vendor invoice in SAP for procurement tracking.
naftiko: '0.5'
info:
label: SAP Vendor Payment Status
description: Checks the payment status of a vendor invoice in SAP for procurement tracking.
tags:
- finance
- sap
- procurement
capability:
exposes:
- type: mcp
namespace: procurement-ops
port: 8080
tools:
- name: get-payment-status
description: Given an SAP invoice number, return the vendor payment status. Use for supplier relationship management and payment tracking.
inputParameters:
- name: invoice_number
in: body
type: string
description: SAP vendor invoice number.
call: sap-finance.get-payment
with:
invoice_number: '{{invoice_number}}'
outputParameters:
- name: invoice
type: object
mapping: $
consumes:
- type: http
namespace: sap-finance
baseUri: https://tesla-s4.sap.com/sap/opu/odata/sap/API_SUPPLIER_INVOICE_SRV
authentication:
type: basic
username: $secrets.sap_user
password: $secrets.sap_password
resources:
- name: invoices
path: /A_SupplierInvoice('{{invoice_number}}')
inputParameters:
- name: invoice_number
in: path
operations:
- name: get-payment
method: GET
Queries Datadog for current inference latency metrics of the FSD neural network stack.
naftiko: '0.5'
info:
label: Datadog FSD Inference Latency Check
description: Queries Datadog for current inference latency metrics of the FSD neural network stack.
tags:
- ai
- datadog
- fsd
capability:
exposes:
- type: mcp
namespace: fsd-ops
port: 8080
tools:
- name: get-inference-latency
description: Given a metric name, return current FSD inference latency from Datadog. Use for real-time performance monitoring of autonomous driving models.
inputParameters:
- name: metric_name
in: body
type: string
description: Datadog metric name for FSD inference latency.
call: dd-fsd.get-metrics
with:
query: '{{metric_name}}'
outputParameters:
- name: series
type: array
mapping: $.series
consumes:
- type: http
namespace: dd-fsd
baseUri: https://api.datadoghq.com/api/v1
authentication:
type: apikey
key: DD-API-KEY
value: $secrets.datadog_api_key
placement: header
resources:
- name: metrics
path: /query
inputParameters:
- name: query
in: query
operations:
- name: get-metrics
method: GET
When 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
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
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
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
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
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
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
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
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
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
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
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
Generates a daily FSD safety metrics report from Snowflake and posts it to the autonomous driving team Slack channel.
naftiko: '0.5'
info:
label: Snowflake FSD Safety Report to Slack
description: Generates a daily FSD safety metrics report from Snowflake and posts it to the autonomous driving team Slack channel.
tags:
- ai
- snowflake
- slack
- safety
capability:
exposes:
- type: mcp
namespace: fsd-safety
port: 8080
tools:
- name: handle-fsd-safety-report
description: Given a date range, query FSD safety metrics from Snowflake and post the report to the autonomous driving Slack channel.
inputParameters:
- name: date_from
in: body
type: string
description: Start date for the safety report (YYYY-MM-DD).
- name: date_to
in: body
type: string
description: End date for the safety report (YYYY-MM-DD).
steps:
- name: query-safety
type: call
call: snowflake-fsd.run-query
with:
date_from: '{{date_from}}'
date_to: '{{date_to}}'
- name: post-report
type: call
call: slack-fsd.post-message
with:
channel: fsd-safety
text: 'FSD Safety Report ({{date_from}} to {{date_to}}): Disengagements: {{query-safety.disengagement_count}} | Miles driven: {{query-safety.total_miles}} | Safety score: {{query-safety.safety_score}}'
consumes:
- type: http
namespace: snowflake-fsd
baseUri: https://tesla.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: slack-fsd
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_bot_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Queries 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
When an OTA update is approved, triggers deployment, monitors from Datadog, logs in ServiceNow, and notifies the software team.
naftiko: '0.5'
info:
label: VW Connected Car OTA Deployment
description: When an OTA update is approved, triggers deployment, monitors from Datadog, logs in ServiceNow, and notifies the software team.
tags:
- automotive
- datadog
- servicenow
- slack
- ota
capability:
exposes:
- type: mcp
namespace: vw_connected_car_ota
port: 8080
tools:
- name: handle-event
description: When an OTA update is approved, triggers deployment, monitors from Datadog, logs in ServiceNow, and notifies the software team.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[automotive] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: automotive-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://vwgroup.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://volkswagen.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When 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
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
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
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
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
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
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
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
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
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
Returns the status and payment date of a supplier invoice from SAP.
naftiko: '0.5'
info:
label: SAP Supplier Invoice Status
description: Returns the status and payment date of a supplier invoice from SAP.
tags:
- finance
- sap-s4hana
- procurement
capability:
exposes:
- type: mcp
namespace: sap_supplier_invoice
port: 8080
tools:
- name: query-data
description: Returns the status and payment date of a supplier invoice from SAP.
inputParameters:
- name: query_param
in: body
type: string
description: The query parameter.
call: snowflake-api.run-query
with:
query_param: '{{query_param}}'
outputParameters:
- name: results
type: object
mapping: $.data
consumes:
- type: http
namespace: snowflake-api
baseUri: https://vwgroup.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
Returns 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Returns connected car platform health metrics from Datadog.
naftiko: '0.5'
info:
label: Datadog Connected Car Health
description: Returns connected car platform health metrics from Datadog.
tags:
- automotive
- datadog
- connected-vehicles
capability:
exposes:
- type: mcp
namespace: datadog_connected_ca
port: 8080
tools:
- name: query-data
description: Returns connected car platform health metrics from Datadog.
inputParameters:
- name: query_param
in: body
type: string
description: The query parameter.
call: snowflake-api.run-query
with:
query_param: '{{query_param}}'
outputParameters:
- name: results
type: object
mapping: $.data
consumes:
- type: http
namespace: snowflake-api
baseUri: https://vwgroup.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
Fetches 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
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
Queries Snowflake for dealer inventory levels by model and region.
naftiko: '0.5'
info:
label: Snowflake Dealer Inventory Query
description: Queries Snowflake for dealer inventory levels by model and region.
tags:
- automotive
- snowflake
- inventory
capability:
exposes:
- type: mcp
namespace: snowflake_dealer_inv
port: 8080
tools:
- name: query-data
description: Queries Snowflake for dealer inventory levels by model and region.
inputParameters:
- name: query_param
in: body
type: string
description: The query parameter.
call: snowflake-api.run-query
with:
query_param: '{{query_param}}'
outputParameters:
- name: results
type: object
mapping: $.data
consumes:
- type: http
namespace: snowflake-api
baseUri: https://vwgroup.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
Queries 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
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
Monitors powertrain performance metrics from Snowflake, creates Jira tickets for anomalies, and alerts the powertrain team.
naftiko: '0.5'
info:
label: VW Powertrain Performance Monitor
description: Monitors powertrain performance metrics from Snowflake, creates Jira tickets for anomalies, and alerts the powertrain team.
tags:
- automotive
- snowflake
- jira
- slack
- powertrain
capability:
exposes:
- type: mcp
namespace: vw_powertrain_perfor
port: 8080
tools:
- name: handle-event
description: Monitors powertrain performance metrics from Snowflake, creates Jira tickets for anomalies, and alerts the powertrain team.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[automotive] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: automotive-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://vwgroup.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://volkswagen.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a 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
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
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
Queries supplier risk scores from Snowflake, updates SAP Ariba risk profiles, creates Jira review tasks, and notifies procurement.
naftiko: '0.5'
info:
label: SAP Ariba Supplier Risk Assessment
description: Queries supplier risk scores from Snowflake, updates SAP Ariba risk profiles, creates Jira review tasks, and notifies procurement.
tags:
- procurement
- snowflake
- sap-ariba
- jira
- slack
capability:
exposes:
- type: mcp
namespace: sap_ariba_supplier_r
port: 8080
tools:
- name: handle-event
description: Queries supplier risk scores from Snowflake, updates SAP Ariba risk profiles, creates Jira review tasks, and notifies procurement.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[procurement] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: procurement-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://vwgroup.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://volkswagen.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When 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
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
Queries supplier sustainability scores from Snowflake, creates Jira audit tasks, and notifies the sustainability team.
naftiko: '0.5'
info:
label: VW Supplier Sustainability Audit
description: Queries supplier sustainability scores from Snowflake, creates Jira audit tasks, and notifies the sustainability team.
tags:
- procurement
- snowflake
- jira
- slack
- sustainability
capability:
exposes:
- type: mcp
namespace: vw_supplier_sustaina
port: 8080
tools:
- name: handle-event
description: Queries supplier sustainability scores from Snowflake, creates Jira audit tasks, and notifies the sustainability team.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[procurement] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: procurement-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://vwgroup.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://volkswagen.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a 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
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
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
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
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
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
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
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
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
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
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
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
When battery degradation exceeds threshold, queries Snowflake for affected vehicles, creates a Jira engineering ticket, and alerts R&D.
naftiko: '0.5'
info:
label: VW EV Battery Degradation Alert
description: When battery degradation exceeds threshold, queries Snowflake for affected vehicles, creates a Jira engineering ticket, and alerts R&D.
tags:
- automotive
- snowflake
- jira
- slack
- ev
capability:
exposes:
- type: mcp
namespace: vw_ev_battery_degrad
port: 8080
tools:
- name: handle-event
description: When battery degradation exceeds threshold, queries Snowflake for affected vehicles, creates a Jira engineering ticket, and alerts R&D.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[automotive] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: automotive-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://vwgroup.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://volkswagen.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When 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
When supplier quality scores drop, queries Snowflake for defect patterns, creates a Jira corrective action, and notifies procurement via Slack.
naftiko: '0.5'
info:
label: VW Supplier Quality Alert
description: When supplier quality scores drop, queries Snowflake for defect patterns, creates a Jira corrective action, and notifies procurement via Slack.
tags:
- manufacturing
- snowflake
- jira
- slack
- quality
capability:
exposes:
- type: mcp
namespace: vw_supplier_quality_
port: 8080
tools:
- name: handle-event
description: When supplier quality scores drop, queries Snowflake for defect patterns, creates a Jira corrective action, and notifies procurement via Slack.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[manufacturing] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: manufacturing-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://vwgroup.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://volkswagen.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
Queries 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
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
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
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
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
Monitors emissions compliance from Snowflake, creates Jira tasks for out-of-spec vehicles, and notifies the regulatory team.
naftiko: '0.5'
info:
label: VW Emissions Compliance Monitor
description: Monitors emissions compliance from Snowflake, creates Jira tasks for out-of-spec vehicles, and notifies the regulatory team.
tags:
- automotive
- snowflake
- jira
- slack
- emissions
capability:
exposes:
- type: mcp
namespace: vw_emissions_complia
port: 8080
tools:
- name: handle-event
description: Monitors emissions compliance from Snowflake, creates Jira tasks for out-of-spec vehicles, and notifies the regulatory team.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[automotive] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: automotive-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://vwgroup.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://volkswagen.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When paint shop defect rates spike, queries Snowflake for root causes, creates a Jira corrective action, and alerts manufacturing.
naftiko: '0.5'
info:
label: VW Paint Shop Defect Rate Handler
description: When paint shop defect rates spike, queries Snowflake for root causes, creates a Jira corrective action, and alerts manufacturing.
tags:
- manufacturing
- snowflake
- jira
- slack
- quality
capability:
exposes:
- type: mcp
namespace: vw_paint_shop_defect
port: 8080
tools:
- name: handle-event
description: When paint shop defect rates spike, queries Snowflake for root causes, creates a Jira corrective action, and alerts manufacturing.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[manufacturing] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: manufacturing-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://vwgroup.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://volkswagen.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When 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
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
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
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
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
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
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
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
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
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
When crash test results are submitted, queries historical data from Snowflake, creates Jira engineering tasks, and notifies safety.
naftiko: '0.5'
info:
label: VW Crash Test Data Analysis Workflow
description: When crash test results are submitted, queries historical data from Snowflake, creates Jira engineering tasks, and notifies safety.
tags:
- automotive
- snowflake
- jira
- slack
- safety
capability:
exposes:
- type: mcp
namespace: vw_crash_test_data_a
port: 8080
tools:
- name: handle-event
description: When crash test results are submitted, queries historical data from Snowflake, creates Jira engineering tasks, and notifies safety.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[automotive] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: automotive-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://vwgroup.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://volkswagen.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a 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
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
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
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
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
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
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
When plant energy consumption exceeds targets, queries Snowflake for details, creates a Jira optimization task, and alerts operations.
naftiko: '0.5'
info:
label: VW Plant Energy Consumption Alert
description: When plant energy consumption exceeds targets, queries Snowflake for details, creates a Jira optimization task, and alerts operations.
tags:
- manufacturing
- snowflake
- jira
- slack
- sustainability
capability:
exposes:
- type: mcp
namespace: vw_plant_energy_cons
port: 8080
tools:
- name: handle-event
description: When plant energy consumption exceeds targets, queries Snowflake for details, creates a Jira optimization task, and alerts operations.
inputParameters:
- name: event_id
in: body
type: string
description: The triggering event identifier.
- name: context
in: body
type: string
description: Additional context for the event.
steps:
- name: gather-data
type: call
call: snowflake-api.run-query
with:
event_id: '{{event_id}}'
- name: create-ticket
type: call
call: jira-api.create-issue
with:
project: OPS
issuetype: Task
summary: '[manufacturing] {{event_id}} — {{context}}'
- name: notify-team
type: call
call: slack-api.post-message
with:
channel: manufacturing-ops
text: 'Alert: {{event_id}} | {{context}} | Jira: {{create-ticket.key}}'
consumes:
- type: http
namespace: snowflake-api
baseUri: https://vwgroup.snowflakecomputing.com/api/v2
authentication:
type: bearer
token: $secrets.snowflake_token
resources:
- name: statements
path: /statements
operations:
- name: run-query
method: POST
- type: http
namespace: jira-api
baseUri: https://volkswagen.atlassian.net/rest/api/3
authentication:
type: basic
username: $secrets.jira_user
password: $secrets.jira_api_token
resources:
- name: issues
path: /issue
operations:
- name: create-issue
method: POST
- type: http
namespace: slack-api
baseUri: https://slack.com/api
authentication:
type: bearer
token: $secrets.slack_token
resources:
- name: messages
path: /chat.postMessage
operations:
- name: post-message
method: POST
When a 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
Score Breakdown — Total: 8464
Each row links to its full definition on the Naftiko Signal Groups page.
1288 84 21 39 323 349 158 278 189 128 641 183 214 442 79 169 216 71 79 29 237 365 242 36 137 598 245 135 41 83 68 9 93 125 276 82 94 36 69 88 116Areas — 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
- FactSet
- Fargate
- Fern
- Figma
- ForgeRock
- Fortify
- Fusio
- G2
- GCP Cloud Storage
- Gemini
- GitHub
- GitHub Actions
- GitHub Copilot
- GitLab
- Gong
- 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
- IntelliJ IDEA
- International Business Machines
- Intuit
- Istio
- JFrog
- JFrog Artifactory
- Jira
- Jupyter Notebook
- Kinesis
- Knit
- Konfig
- Kong
- Kuma
- Lambda
- Lightroom
- 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
- Tyk
- Unity
- Unix
- VMware
- Vantage
- Vendr
- Veritas Cluster
- Veritas InfoScale
- Veritas NetBackup
- Veritas Volume Manager
- Vessel
- Visio
- Visualforce
- WebSphere
- 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
- 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.
Where you stand
See your signals
The leads, the gaps, and where AI has shifted the gradient — in numbers from public data, not vendor decks.
See full report →What to build
Translate to capabilities
Capabilities being built across the peer set — tied to the markets you actually serve.
View capabilities →Where to go next
Navigate the next move
A prioritized roadmap grounded in signal data. Not a generic best-practices deck, not a vendor-shaped pitch.
Get your navigation →Control what you build
Integrate with AI
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 →